Documente Academic
Documente Profesional
Documente Cultură
sploit
(n.) Exploit. A defect in the game code (see bug) or design that can
be used to gain unfair advantages. (Source: Dictionary of MMORPG Terms)
Au moment prsent, la communaut de dveloppement dexploits (pirates (hackers) et
professionnels de la scurit informatique) est plus sensible que jamais. Le dlai entre la
publication dun bulletin dalerte et le dveloppement dun exploit a diminu
considrablement. Le dveloppement dexploits, qui fut considr comme un art, est
parvenu la porte dune large population. Ladministrateur de scurit rseau se doit
dtre plus vigilant que jamais face un ennemi qui a toujours une longueur davance avec
le tout dernier exploit entre ses mains.
Les utilitaires de dveloppement dexploits et les frameworks automatiss pour tester et
simuler les exploits constituent la ncessit actuelle. Le Metasploit Framework (MSF) rpond
cette tche. Ca dernire version possde une agilit et des muscles qui nont rien envier
aux trs coteux logiciels commerciaux quivalents et la facult de coder un exploit en un
minimum de temps, du fait dune interface de dveloppement parfaitement adapte. Avec
un environnement de dveloppement dexploits complet, des exploits fonctionnels, des
tailles efficaces et des enttes (handlers) ajouts, cela en fait Loutil que doivent utiliser les
testeurs dinfiltration.
Cet article fournit un aperu des bases des frameworks de dveloppement dexploits, avec
un intrt particulier sur le Metasploit Framework et comment il peut tre utiliser pour
gagner du temps et conomiser des ressources. Nous dcrirons son utilisation avec des
illustrations graphiques, dtaillerons les diffrentes commandes disponibles, dcrirons les
fonctionnalits proposes, donnerons des exemples pratiques, et plus important encore,
nous utiliserons ces possibilits pour dvelopper de nouveaux exploits et tester de nouvelles
techniques.
1. Prologue
Je souhaiterais dbuter mon article en faisant rfrence des vnements rcents. Le
bulletin Microsoft (MS04-011) dcrit et rsout un nombre important de vulnrabilits de
scurit dans diffrents systmes doprations Windows [ref 1]. Deux dentre elles qui mont
intresses sont le SSL PCT et les overflows de lAuthorit de Scurit Locale (Local Security
Authority) qui peuvent conduire la compromission distance. Comme dans la plupart des
cas, presque immdiatement, des exploits fonctionnels ont t mis publiquement
disposition, laissant les administrateurs et les professionnels de la scurit non-avertis et
non-prpars.
En vous mettant la place dun administrateur systme dune socit dinformatique banale,
les exploits sajoutent toujours de plus en plus au fardeau de la gestion de la scurit. Dj
dit et fait, cest une course sauvage o les attaquants malicieux sont au devant du jeu, mais
part une approche mthodique, le professionnel en scurit peut inverser la donne.
Les patchs de scurit, IDS, pare-feu (firewalls), etc ne constituent pas les seuls critres de
protection. Cdant face la pression de la situation, beaucoup de coins et recoins du rseau
peuvent tre rendus non-protgs et non-verrouills, ce qui est gnralement lorigine dune
compromission. Cest ce qui arrive lorsque lon entend parler dun grand rseau compromis
par des pirates utilisant des vulnrabilits connues. Et cest exactement la raison pour
laquelle le ver informatique Sasser a contamin 250 000 ordinateurs, mme deux semaines
aprs que Microsoft ait mis disposition le patch de scurit indiqu comme hautement
important.
De mon point de vue, la solution est lhabituelle approche, pensez comme un pirate. Le
testeur dinfiltration devrait se lancer dans une fte de pirate en testant son propre rseau,
dans ce que jappelle Threat Evasion Penetration Testing (Test de menaces et dintrusion).
Cest l que les frameworks dexploits entrent en jeu, en automatisant lart de lexploitation.
pointe dessus (le sommet de la pile). La pile grossit vers des adresses mmoires
ngatives. Cela est utilis pour stocker le contexte dun processus. Un processus
pose toutes ses donnes locales et dynamiques sur la pile. Le pointeur dinstruction
(Instruction Pointer : IP) est un registre utilis pour pointer sur ladresse de la
prochaine instruction excuter. Le processeur examine lIP chaque fois pour
trouver la prochaine instruction excuter. Lorsquune redirection abrupte se met
en place (gnralement due un jmp ou un call), ladresse de la prochaine
instruction, aprs le retour de la redirection, peut tre perdue. Afin de prvenir de
ce problme, le programme stocke ladresse de la prochaine instruction qui doit tre
excute (aprs un retour de jmp ou call) sur la pile, et elle est appele ladresse de
retour (return address) (implmente travers linstruction assembleur RET). Cest
ainsi quun programme normal contenant beaucoup de fonctions dappels (calls) et
dinstructions goto conserve le chemin correct dexcution.
Le Heap est basiquement le reste de lespace mmoire allou au processus. Il
stocke les donnes qui ont une dure de vie comprise entre les variables globales et
les variables locales. Lallocateur et le dsallocateur travaillent respectivement pour
assigner de lespace aux donnes dynamiques et vider la mmoire heap [ref 3].
Voil pour un bref survol des bases de lorganisation dun processus. Maintenant, je dcris
quelques techniques utilises de manire rcurrente pour troubler lharmonie de
lorganisation dun processus.
2.2 Buffer overflows (Dpassements de capacit de tampon)
Ce terme donne des frissons toute personne qui a eu affaire eux, que ce soit un
programmeur, un testeur dapplication ou un administrateur de scurit. Certains disent
quil sagit du plus gros risque de scurit de la dcennie [ref 4]. La technique dexploitation
est franche et meurtrire. La pile du programme stocke les donnes dans lordre, ainsi les
paramtres passs la fonction sont enregistrs en premier, puis ladresse de retour, puis
le SP prcdent et plus tard, les variables locales. Si des variables (comme des tableaux)
sont passes sans vrifications des limites, elles peuvent tre amenes au dbordement en
poussant une grande quantit dinformations, ce qui corrompt la pile, conduisant la sur
criture de ladresse de retour et par consquent un problme de segmentation
(segmentation fault). Si le tour est astucieusement jou, nous pouvons modifis les buffers
pour pointer sur nimporte quel emplacement, entranant lexcution de code arbitraire [ref
5].
2.3 Heap overflows (Dpassements de capacit du Heap)
La mmoire alloue dans un heap est organise en une liste doublement lie. En provoquant
un dpassement de capacit, nous pouvons modifier les pointeurs de la liste lie pour
pointer sur la mmoire. Les heap overflows sont difficiles exploiter et sont plus courants
dans Windows du fait quils contiennent plus de donnes prominentes qui peuvent tre
exploites. Dans le cas dun systme dallocation de mmoire malloc, les informations
concernant la mmoire disponible et alloue sont stockes dans le heap. Un dpassement
peut tre dclench en exploitant cette information de gestion, nous permettant ensuite
dcrire dans des emplacements mmoires alatoires, ce qui peut entrainer lexcution de
code [ref 6].
Comment est donc dclench ce dpassement? Il existe beaucoup darmes dans larmurerie
comme les chanes (strings) et les fonctions de manipulation de chanes, les pointeurs nuls
(null pointers), dpassement dentiers (integer overflows), problmes de signatures (signed
issues) et certaines conditions qui peuvent tre utiles pour gnrer des conditions
dexceptions dans un processus [ref 7].
Jinsiste sur le fait que cet article ne se veut pas un guide exhaustif des diffrentes
techniques dexploitation. Nous fournissons juste un rapide aperu de ce qui est important,
afin de bien comprendre les points venir dans les articles suivants. Ce ne sont que des
indicateurs pour une rfrence future.
Figure 1
3.1 Shellcode
Il constitue le code utile qui sera excut aprs lexploitation. Dans la plupart des cas, nous
redirigeons le chemin dexcution, ainsi le code inject sera excut [ref 9]. A partir de l,
ladresse de retour est dtourne pour pointer sur ce shellcode. Il est constitu
dinstructions assembleurs encodes dans une chane au format binaire qui ralisent des
oprations comme crer un shell. Un bon shellcode se doit dtre un compromis entre la
Comme nous pouvons le voir, il existe beaucoup de code non ncessaire et rptitif qui
rendent lexploit volumineux et soumis des risques derreurs.
de tests et derreurs.
Enfin, la plupart des payloads sont cods en dur et la plus petite modification rend lexploit
inutilisable.
Un grand nombre de pare feu et de systmes IPS dtectent et bloquent les shellcodes.
Le temps est le principal souci, et certains exploits consomment beaucoup de temps et de
concentration, ces deux aspects sont les atouts prcieux dun chercheur en scurit.
Ceci tant dit, coder un exploit est un enfer dans un travail confus!
5. Allons-y!
Entrons dans le Metasploit Framework (MSF)! Conformment au guide MSF User Crash
Course [ref 10];
Le framework Metasploit est un environnement complet pour crire, tester et
utiliser des exploits. Cet environnement fournit une plateforme solide pour les tests
dintrusion, le dveloppement de shellcodes, et la recherche de vulnrabilits.
De mon point de vue, le Framework Metasploit est une solution unique tous les problmes
discuts prcedemment. Le framework a volu en une extension dans sa version 2.0. Il est
plus stable, possde des fonctionnalits trs attractives et une interface utilisateur trs
instinctive pour le dveloppement dexploits.
Les fonctionnalits majeures qui avantagent encore plus le MSF travers les diffrentes
options sont :
Il est clair que MSF est dfinitivement un outil que le testeur dinfiltration se doit de
connatre. Il donne lart de lexploitation un nouveau paradigme.
6. Installation
Actuellement, le Metasploit Framework fonctionne efficacement sur Linux et Windows. Il
existe quelques problmes de compatibilit, mais elles peuvent tre ignores. La dernire
version est tlchargeable pour Windows et Linux ladresse
http://www.metasploit.com/projects/Framework/downloads.html.
Linstallation est triviale et intuitive, et les paquetages dinstallations sont autoextractibles.
Linstallation simple est montre en Figure 2. Dans le cas de Linux, dcompresser larchive
(qui est au format framework-2.x.x.tar.gz), l o le rpertoire du framework contient les
binaires qui sont pour diffrents utilitaires. Lors du chargement sous Linux, il est indiqu
que les modules Term::ReadLine::Gnu (pour le support de la compltion par tab) et
Net::SSLeay (pour le support SSL) sont installs (ils sont trouvs dans le rpertoires
extras).
Figure 2
Lenvironnement Windows est bas sur un environnement Cygwin allg, ce qui est une
sage dcision car cela fournit une console trs portable lutilisateur. Nanmoins, il existe
des problmes avec le support d Active State Perl, car il ne supporte que le Cygwin Perl.
Linstallation est regroupe dans un exccutable, qui installe le Metasploit Framework dans
le rpertoire spcifi (voir Figure 2) et ajoute les raccourcis.
solution ces problmes. Nous avons galement parl de quelques unes de ses
fonctionnalits et de son installation.
Plus tard, dans la seconde partie, nous exposerons un aperu labor de son utilisation et
de ses options varies, du lancement et de lajout de nouveaux exploits, des rglages de
lenvironnement et des autres fonctionnalits avances du Metasploit Framework.
Rfrences
1. Microsoft Security Bulletin http://www.microsoft.com/technet/security/bulletin/ms04011.mspx
2. Stack, Pointers and Memory, Lally Singh http://www.biglal.net/Memory.html
3. A Memory Allocator, Doug Lea http://gee.cs.oswego.edu/dl/html/malloc.html
4. Buffer overflows likely to be around for another decade, Edward Hurley
http://searchsecurity.techtarget.com/originalContent/0,289142,sid14_gci860185,00.html
5. Buffer Overflows Demystified, Murat http://www.enderunix.org/docs/eng/bof-eng.txt
6. Badc0ded - How to exploit program vulnerabilities, http://community.coresdi.com/~juliano/bufo.html
7. Once upon a free(), Phrack 57 Article 9 by Anonymous
http://www.phrack.org/show.php?p=57
8. Presentation on Advanced Exploit Development at HITB, HD Moore (PDF)
http://conference.hackinthebox.org/materials/hd_moore/HDMOORE-SLIDES.pdf
9. Designing Shellcode Demystified, Murat http://www.enderunix.org/docs/en/sc-en.txt
10. Crash Course User Guide for Metasploit Framework, (PDF)
http://metasploit.com/projects/Framework/docs/CrashCourse-2.0.pdf
About the authors
Pukhraj Singh is a security researcher at Network Intelligence (I) Pvt. Ltd. His areas of
interest include working with exploits, monitoring honeypots, intrusion analysis and
penetration testing.
K. K. Mookhey is the CTO and Founder of Network Intelligence.
View more articles by K.K. Mookhey on SecurityFocus.
Comments or reprint requests can be sent to the editor.
Copyright 1999-2004 SecurityFocus
Traduction franaise : Jrme ATHIAS