Metasploit-fr
Metasploit
Description
Metasploit est un framework de développement pour créer des outils de sécurité et des exploits (exploitation de vulnérabilités). Il a été écrit par HD Moore et sa version actuelle est la v3.0. Cet outil est utilisé lors de tests de pénétration pour vérifier les patchs de sécurité sur un système.
La version 3 utilise Ruby alors que la version 2 est programmée en Perl.
A la différence d'un scanner de vulnérabilités qui tente de déterminer si une cible est vulnérable, le framework pénètre la cible et confirme la vulnérabilité.
Architecture de Metasploit
Le framework s'articule autour de l'architecture suivante :
Arborescence des modules
Les modules de Metasploit sont regroupés dans une arborescence dont le premier niveau est décrit dans le tableau ci-dessous :
Niveau 1 | Description | Arborescence |
---|---|---|
Auxiliary | La version 3.0 supporte le concept de modules auxiliaires qui peuvent être utilisés afin d'exécuter des actions arbitraires telles que le scan de ports, le déni de services entre autres. | |
Encoder | ||
Exploit | Les modules "Exploit" sont les modules principaux dans Metasploit. | |
Nop | Les modules NOP sont utilisés pour les instructions de type "no-operation" pour exploiter les débordements de buffers. | |
Payload | Les charges utilies (Payload en anglais) sont des portions de code (shellcode) exécutées lorsque l'exploit réussi. Les charges utiles permettent d'assurrer la communication entre Metasploit et la victime. |
Installation
Sous Windows
Windows Installer
Téléchargez l'installeur à l'adresse suivante : http://spool.metasploit.com/releases/framework-3.1.exe puis suivez les étapes d'installation.
Avec Cygwin
Pré-requis
Vous aurez besoin d'installer les dépendances suivantes : openSSL et Ruby.
Installation
L'installation sous Windows est préférable en environnement d'émulation Cygwin dans la mesure où certaines fonctionnalités ne sont pas disponibles avec l'installeur Windows.
Sous Linux
Pré-requis
Les dépendances suivantes sont requises :
$ sudo apt-get install ruby libruby rdoc libyaml-ruby libzlib-ruby libopenssl-ruby libdl-ruby libreadline-ruby libiconv-ruby
Gems permet d'installer les logiciels Ruby
$ cd /usr/local/src $ sudo wget http://rubyforge.org/frs/download.php/11289/rubygems-0.9.0.tgz $ sudo tar xzvf rubygems-0.9.0.tgz $ cd rubygems-0.9.0 $ sudo ruby setup.rb $ sudo gem update --system
Installation du framework Metasploit
# cd /usr/local/src/ # wget http://spool.metasploit.com/releases/framework-3.2.tar.gz # tar xzvf framework-3.2.tar.gz # mv framework-3.2 /usr/local/msf
Créons ensuite des liens symboliques afin d'inclure la console dans les variables d'environnement :
$ cd /usr/local/bin $ ln -s /usr/local/msf/msfconsole $ ln -s /usr/local/msf/msfcli
Utilisation
Les différents frontends
Metasploit met à disposition les frontends suivants :
- Msfconsole : L'interface du framework en lignes de commandes
- Msfcli : Permet de programmer un exploit sur une seule ligne
- MsfWeb : mode Web du framework
Les commandes de base
Les commandes suivantes peuvent être entrées dans la msfconsole. Commande
Commande | Description |
---|---|
use <chemin/vers/exploit> | Sélection d'un exploit, d'un auxiliaire |
show options | Affiche la liste des options et valeurs courantes (celles spécifiées avec la commande set) |
show exploits | Affiche la liste des exploits |
show targets | Affiche la liste des cibles |
show payloads | Affiche la liste des payloads disponibles |
show advanced | Affiche les options avancées |
search <ChaineDeRecherche> | Permet de rechercher un exploit dans la base de données |
set <variable> <valeur> | Permet d'attribuer une valeur à une variable. Par exemple : set RHOST 192.168.1.29 set RPORT 81 |
Exemple d'auxiliary
Module sweep_udp
Le module sweep_udp permet d'effectuer une découverte d'hôtes. Il attend comme paramètre RHOSTS, qui accepte la notation CIDR.
Dans une msfconsole, lancez les commandes suivantes :
>> use auxiliary/scanner/discovery/sweep_udp >> set RHOSTS 192.168.0.0/24 RHOSTS => 192.168.0.0/24
Pour lancer la découverte d'hôte, entrez simplement la commande run.
>> run [*] Sending 6 probes to 192.168.0.0->192.168.0.255 (256 hosts) [*] Discovered NetBIOS on 192.168.0.12 (94988400000000010000000020434b4141414141414141414141414 1414141414141414141414141414141414100002100010000000000650358505350322d3230434337333937450044004f5a59 52495320202020202020202000c40058505350322d323043433733393745204400001cbf8c7aa300000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000) [*] Discovered NetBIOS on 192.168.0.11 (5a5b8400000000010000000020434b4141414141414141414141414 1414141414141414141414141414141414100002100010000000000ad0746414d494c59434f4d50202020202000040046414d 494c59434f4d50202020202003040046414d494c59434f4d50202020202020040001025f5f4d5342524f5753455f5f0201840 04f5a595249532020202020202020201d04004f5a595249532020202020202020201e84004f5a595249532020202020202020 2000840000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000) [*] Discovered NetBIOS on 192.168.0.11(e4598400000000010000000020434b41414141414141414141414141414141 414141414141414141414141414100002100010000000000ad0746414d494c59434f4d50202020202000040046414d494c594 34f4d50202020202003040046414d494c59434f4d50202020202020040001025f5f4d5342524f5753455f5f020184004f5a59 5249532020202020202020201d04004f5a595249532020202020202020201e84004f5a5952495320202020202020202000840 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000) [*] Auxiliary module execution completed
Module smb/version
L'exemple qui suit utlise le module smb/version qui permet d'évaluer le système installé sur un hôte.
Pour le premier hôte découvert :
msf > use auxiliary/scanner/smb/version msf auxiliary(version) > set RHOSTS 192.168.0.11 RHOSTS => 192.168.0.11 msf auxiliary(version) > run [*] 192.168.0.11 is running Unix Samba 3.0.28a [*] Auxiliary module execution completed
Puis, pour le second hôte :
msf auxiliary(version) > set RHOSTS 192.168.0.12 RHOSTS => 192.168.0.12 msf auxiliary(version) > run [*] 192.168.0.12 is running Windows XP Service Pack 2+ [*] Auxiliary module execution completed
Exemple d'exploit
Un exploit correspond à l'exploitation d'une faille connue permettant l'exécution d'un payload (charge utile) sur une cible.
L'exemple qui suit démontre comment il est possible d'exploiter une vulnérabilité du service LSASS dans Windows 2000 Pro pour charger une DLL (dans laquelle est encapsulé un serveur VNC). En quelques lignes seulement, nous sommes capables de prendre le contrôle à distance de notre cible.
Une vidéo de cet exploit est disponible ici : http://dl.dropbox.com/u/10761700/msf-lsass-vnc.flv