Metasploit Framework est une plateforme permettant d'exploiter une faille de sécurité. Utilisé par les consultants et par les experts en sécurité informatique, il permet en plus de ses nombreux outils de programmer ses propres exploits. Nous allons voir quelques unes de ses particularités. Je vais tenter une approche différentes des tutoriels que l'on peut trouver sur internet.





0x01. PRESENTATION


Metasploit alias MSF (pour MetaSploit Framework) par les habitués n'est pas un logiciel mais plutôt un environnement en mode console ou par une page web. C'est un environnement qui est initialement programmé en Perl, qui a laissé la place au langage Ruby, connu pour sa gestion améliorée des process sous Linux - les avis sont partagés. Cet environnement permet de lancer des commandes appartenant à l'environnement qui héberge Metasploit, par exemple à partir de bash on peut taper la commande ifconfig sans avoir à retourner sous notre shell.

Metasploit regorge d'exploits, de payloads ainsi que d'autres outils comme les NOPs. Metasploit est utilisé afin d'auditer des applications, un serveur ou bien un ordinateur, qu'il soit serveur ou non, le PC audité est testé essentiellement au niveau applicatif, ce qui signifie que l'on va tester toute une panoplie d'exploits contre l'application afin de voir si elle est faillible ou non.

Il faut savoir que la liste des exploits n'est pas mise à jour de version en version, pour en avoir toujours plus, mais plutôt pour avoir les exploits les plus récents et encore vulnérables. Les failles ne sont pas choisies par hasard, la plus part, on va dire 80% d'entre elles sont exploitables é distance. C'est pour cette raison que sur leur site la version 2.7 et la version 3.0 sont toujours en téléchargements, ils n'ont pas fusionné les exploits des deux versions.

Un audit de sécurité fait à l'aide de Metasploit est un audit essentiellement tourné système, car les failles applicatives sont bien trop particulières pour pouvoir étre considérée dans une entreprise à moins que cela ne fasse parti du choix du demandeur. Nous allons par la suite décrire les différentes interfaces que propose Metasploit.





0x02. INTERFACES


MSF propose plusieurs interfaces possibles, en mode console, en ligne de commande et par un serveur Web. En mode console MSF se comporte comme des commandes MSDOS ou un Shell dans linux, nous avons un prompt au quel nous pouvons envoyer des commandes. En ligne de commande signifie qu'avec les paramétres qui vont bien nous pouvons lancer un exploit, il se distingue du mode console par le fait qu'il nécessite une console extérieur : il est justement lancé à partir de MSDOS ou d'un Shell. Les paramétres de la commande correspondent la plus part du temps aux paramétres à définir dans l'exploit. MSF posséde également une interface Web, il suffit pour ça de lancer le serveur Web et de se rendre à l'adresse indiquée :


http://127.0.0.1:5555 

MSF dispose d'une série de banniéres différentes alors il se peut qu'au lancement de la console il y ait des maniéres différentes d'afficher le logo. Un détail esthétique et sympathique. Voici quelques aperçus du démarrage.

En mode console :


files/metasploit/msf_console.jpg

Via l'interface Web, version 2.7 :


files/metasploit/msf_27.jpg

Via l'interface Web, version 3.0 :


files/metasploit/msf_30.jpg




0x03. INSTALLATION


Pour installer MSF sous Linux, vous aurez besoin de bibliothèques (library en anglais) pour utiliser l'environnement, car contrairement à Windows, tout ne s'installe pas de maniére obscure mais en installant les fichiers qui vont bien c'est à dire : Ruby et ses bibliothèques réseau et de cryptage. Ces commandes nécessitent d'utiliser l'usager "root", sauf éventuellement pour Ubuntu oà il suffit de mettre un sudo devant chaque commande.

Sous debian il suffit de faire :


apt-get install libzlib-ruby
apt-get install libopenssl-ruby
apt-get install libactiveldap-ruby1.8
apt-get install liberb-ruby libpgsql-ruby1.8 libpq4 libredcloth-ruby1.8
apt-get install rails irb rubygems 

... Sous Gentoo ...


emerge libzlib-ruby
emerge libopenssl-ruby
emerge libactiveldap-ruby1.8
emerge liberb-ruby libpgsql-ruby1.8 libpq4 libredcloth-ruby1.8
emerge rails irb rubygems 

Pour les autres distributions il y a un lien Subversion disponible :


svn co http://metasploit.com/svn/framework3/trunk/ 

Ensuite de faire - indépendament de la version du système *NIX et de la distribution il faut installer les extensions Ruby. Les extensions vont configurer Metasploit dans le dossier local, ce qui signifie que le dossier contiendra les fichiers de configuration à jours pour utiliser Ruby, donc si vous testez une framework 3.0b1 il faudra relancer la commande, qui est la suivante. Rails étant une suite complémentaire et mise à jour des outils pour la programmation en Ruby.


gem install -v=1.2.2 rails 



0x04. EXPLOITS


Un exploit, est un programme utilisant une faille, que ce soit logiciel ou matériel. Le fait d'exploiter une faille à l'insu d'une personne ou d'une entreprise est strictement interdit. Il faut savoir que si vous êtes reperés vous aurez droit à de sérieux problème.

Nous allons utiliser un exploit, pour cela, mieux vaut une vidéo plutôt qu'un long discours, voici donc un tutoriel vidéo sur l'exploitation de la faille concernant RealVNC 4.11. Pour exploiter une faille il faut conna?tre un minimum le logiciel cible - et dans certain cas le système d'exploitation.

Voici le lien vers le tutoriel vidéo. Le tutoriel s'est donc déroulé sur un réseau local avec deux machines, une avec Windows 98 et donc le serveur RealVNC en version 4.11 - la version est importante pour une faille puisque les versions supérieurs sont censées avoir corrigé le problème de sécurité - et le PC avec lequel est lancé l'exploit fonctionne sous Kubuntu 7.04. Cet exploit se trouve dans la MSF 2.7. L'exemple utilise l'interface par la console, tout d'abord pour vous montrer les commandes à taper, puis aussi parceque nous avons plus accès aux commandes de notre système rapidement. Pour ceux qui veulent tester la faille RealVNC 4.11 voici le lien de metasploit, et la version de RealVNC à télécharger : ici.


http://127.0.0.1:55555/EXPLOITS?FILTER=realvnc 

Pour certains expoits il faut utiliser un PAYLOAD ou shellcode. Un shellcode est une suite de commandes très souvent en assembleur permettant l'éxécution à distances d'une commande arbitraire. Par exemple lors de la faille LSASS, des variantes du virus Sasser utilisaient un shellcode permettant le téléchargement et l'exécution (download & execute) d'un autre programme hébergé sur un serveur. Pour l'attaque sur un réseau c'est ce genre d'exploit qu'il faut utiliser, mais pour un serveur ou pour un PC client - et bien entendu selon la faille - on peut jusqu'à balancer un shellcode créant un mini serveur VNC afin qu'on puisse se connecter. La plus part du temps, les auditeurs de sécurité préfèrent utiliser METERPRETER ou un BIND SHELL. Un BIND SHELL est une console attachée, c'est à dire qu'elle est lancée sur le PC de l'attaquant et donne accès au PC ciblé.





0x05. NOPS


NOP est un opérateur assembleur signifiant No OPeration (aucune opération), il donne comme instruction au processeur de ne rien faire. Cependant cette instruction n'est pas la même sur toutes les architectures ainsi que les langages. Par exemple cette opération se fait en assembleur par la présence de l'octet 0x90, en PHP aucune instruction n'est effectuée lorsqu'on met un espace ( valeur héxadécimale: 0x20 ). Toutes les instructions faites en assembleur sont définies par l'architecture du système reposant le processeur, ce qui fait que c'est un langage très spécifique et qui n'est pas valable pour un déploiement sur une longue durée, par exemple un programme créé à l'origine sur un Pentium II ne sera pas valable sur un Pentium CORE 2 DUO, de même qu'un programme compilé sur un système à base de processeur Duron ne fonctionnera pas sur les systèmes à base de Turion 64bits actuels.

C'est de là qu'est venu l'utilité de créer une catégorie de NOPs dans Metasploit, afin de générer des shellcodes ne faisant rien dans un langage particulier sur un système particulier.





0x06. ENCODERS


Les encoders sont là afin de garantir une utilisation optimale de l'exploit. Certains systèmes utilisent l'encodage BIG ENDIAN et d'autre LITTLE ENDIAN. Il en existe plein d'autres. Par exemple les SPARC utilise un encodage encore différent, ainsi que les MAC. L'encodage peut également être changé ou modifié volontairement afin de corrompre le système cible. C'est une particularité très spécifique de MSF.





0x07. METERPRETER


Meterpreter est un environnement à lui tout seul. Il se présente sous forme de shellcode (payload) et permet d'injecter sur la machine cible un serveur Meterpreter . Une fois injecté Meterpreter offre donc un environnement, en mode console qui permet d'injecter d'autres DLL ou applications à la machine cible, ce qui en fait un payload très puissant, car contrairement aux autres payloads de MSF, vous aurez la possibilité à travers Meterpreter d'ajouter de nouveaux composants sur la machine cible, comme les PSTOOLS - outils Windows permettant l'utilisation à distance - installer un serveur SSH à distance ou bien le plus classique mais toujours très aimé NetCat en écoute sur le port de votre choix. Il y a de nombreuses vidéos utilisant des exploits MSF avec Meterpreter.





0x08. CONCLUSION


J'espère que ce tutorial sera utile à plus d'un, et qu'il a mis certaines choses au clair à propos de Metasploit. Metasploit est vraiment très complet, et peut s'avérer très complexe, c'est pourquoi ce tutorial s'arrête là, dans les détails on pourait écrire tout un bouquin sur Metasploit.

Voici quelques liens utiles :
Son wikipedia en anglais
Comment écrire, comprendre un exploit sous Windows
La documentation officielle




   =>   Écrit par : Nicolas, le 07 décembre 2008


 
Mots clés :  
  pentest 
  
  security 
    >   Articles connexes :

/tmp et /var/log en noexec sur macOS



Durcissement de Windows



2008119