[ Linux ] Metasploit sur une instance C1 Scaleway

 dans Actus, Linux, Outils, Projets, Sécurité, Serveur

Présentation

Ce guide vous permettra d’installer et d’utiliser Metasploit sur une instance C1 Scaleway. Vous verrez également comment créer une image à partir de d’une instance pour des déploiements rapides ! Pour les personnes ne connaissant pas Scaleway, il s’agit d’un service d’instances (serveurs) ARM (architecture) basé dans le cloud. Ce cloud vous permet de déployer rapidement vos instances, volumes, … en quelques minutes pour un coût relativement faible (2,99€/mois pour une instance complète), c’est une solution idéale pour vos labs !

Pour plus d’information à propos de Scaleway, je vous invite à faire un tour sur le site : www.scaleway.com

Pré-requis

Pour la réalisation de ce guide, nous aurons besoin d’avoir :

  • Un compte Scaleway (si vous en avez pas, vous devrez en créer un par ici)
  • Une clé SSH ajoutée sur votre compte Scaleway (la votre si possible hein)
  • Un terminal pour faire du SSH :
    • Linux -> vous avez Terminator ou le terminal par défaut
    • Mac -> vous avez iTerm2 ou le terminal par défaut
    • Windows -> vous avez Putty, MobaXterm ou le terminal par défaut (ah non, il n’y a pas de terminal sous Windows pour faire du SSH)
  • Quelques notions en Linux (plus précisément sur Debian)
  • Une tête pour réfléchir (en option)
  • Une machine à café (en option)

Installation et préparation de l’OS

Tout d’abord commençons par le début avec le déploiement de notre instance sous Debian Jessie (8.1), pour cela rendez-vous sur l’interface Scaleway avec les étapes ci-dessous :

  1. Cliquez sur « create server » pour la création d’une instance
  2. Ajoutez-lui un nom, ici « labs-app-metasploit »
  3. Ajoutez-lui des tags (en option) mais si vous avez plusieurs instances cette fonction peut être utile

2015-09-06_10h24_55

En dessous, choisissez l’image correspondant à notre OS (Debian Jessie) avec ces étapes :

  1. Rechercher « Debian » (ce sera plus simple même s’il y en a pas beaucoup)
  2. Sélectionnez l’image correspondante, ici « Debian Jessie 8.1 »
  3. Cliquez sur « create server » pour la création

Vous noterez aussi d’un volume (disque) de 50Go est automatiquement défini, vous n’avez pas le choix, il s’agit de la taille minimum. Vous pouvez aussi en rajouter-un mais aucune utilité dans le cas présent.

2015-09-06_10h29_39

C’est partie, votre instance est en cours de création, vous avez quelques minutes devant vous avant qu’elle ne soit prête…

2015-09-06_10h35_32

L’interface vous donnera même la ligne de commande à utiliser pour se connecter en SSH (en utilisant le clé SSH). Vous serez notifié (notification navigateur) lorsqu’elle sera prête. Vous avez également une icone « >_ console » pour visualiser la console en live (elle peut être pratique). Une fois que l’instance est prête, connectez-vous en SSH (n°1 dans le screenshot au dessus) et faites un update/upgrade des packages :

root@labs-app-metasploit$ apt-get update
root@labs-app-metasploit$ apt-get upgrade -y

Installation des dépendances

Maintenant que notre système est à jour, vous allez installer les dépendances nécessaires pour Metasploit (outils tiers). Utilisez (copier/coller) la ligne ci-dessous pour que ce soit plus simple :

root@labs-app-metasploit$ apt-get install -y apt-utils build-essential libreadline-dev libssl-dev libpq5 libpq-dev libreadline5 libsqlite3-dev libpcap-dev openjdk-7-jre git-core autoconf postgresql pgadmin3 curl zlib1g-dev libxml2-dev libxslt1-dev vncviewer libyaml-dev subversion

C’est terminé pour la partie facile, maintenant vous allez installer 2 outils (Ruby et Nmap) par compilation car la version dans les packages par défaut ne sont pas suffisantes. Il existe 2 façon pour installer Ruby, rbenv ou rvm mais ce dernier rencontre des problèmes avec les liens symboliques, il ne sera pas spécifié dans ce guide.

Ci-dessous les étapes à lancer pour l’installation de Ruby via rbenv :

root@labs-app-metasploit$ cd ~
root@labs-app-metasploit$ git clone git://github.com/sstephenson/rbenv.git .rbenv
root@labs-app-metasploit$ echo ‘export PATH= »$HOME/.rbenv/bin:$PATH »‘ >> ~/.bashrc
root@labs-app-metasploit$ echo ‘eval « $(rbenv init -) »‘ >> ~/.bashrc
root@labs-app-metasploit$ exec $SHELL

root@labs-app-metasploit$ git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
root@labs-app-metasploit$ echo ‘export PATH= »$HOME/.rbenv/plugins/ruby-build/bin:$PATH »‘ >> ~/.bashrc
root@labs-app-metasploit$ exec $SHELL

root@labs-app-metasploit$ rbenv install 2.1.6
root@labs-app-metasploit$ rbenv global 2.1.6
root@labs-app-metasploit$ ruby -v

Un exemple de ce que cela donne chez moi :

2015-09-06_11h45_43

L’étape « rbenv install 2.1.6 » est relativement longue, vous avez le temps de prendre votre première pause café ! (prévoir 20-30 minutes facile)
Maintenant que Ruby est installé (version 2.1.6), vous allez faire la compilation de Nmap en suivant les étapes ci-dessous :

root@labs-app-metasploit$ mkdir ~/tmp && cd ~/tmp
root@labs-app-metasploit$ svn co https://svn.nmap.org/nmap
root@labs-app-metasploit$ cd ~/tmp/nmap
root@labs-app-metasploit$ ./configure
root@labs-app-metasploit$ make
root@labs-app-metasploit$ make install
root@labs-app-metasploit$ rm -Rf ~/tmp

Normalement cette étape est un peu moins longue que la précédente mais vous avez également le temps de prendre un nouveau café !
Pour terminer cette partie, nous allons configurer le service PostgreSQL (base de données utilisée par Metasploit), c’est facile et rapide car vous allez seulement créer un utilisateur avec une base vierge :

root@labs-app-metasploit$ service postgres start
root@labs-app-metasploit$ udate-rc.d postgres enable
root@labs-app-metasploit$ su – postgres
postgres@labs-app-metasploit$ createuser msf -W -S -R -D
postgres@labs-app-metasploit$ createdb -O msf msf
postgres@labs-app-metasploit$ exit

C’est maintenant terminé pour cette partie, je vous rassure, le plus long est derrière vous ! Passons maintenant à l’installation du framework.

Installation du framework Metasploit

Les dépendances étant installées, passons à l’installation du framework Metasploit en suivant les étapes ci-dessous :

root@labs-app-metasploit$ cd /opt
root@labs-app-metasploit$ git clone https://github.com/rapid7/metasploit-framework.git
root@labs-app-metasploit$ chown root:root -R metasploit-framework

root@labs-app-metasploit$ gem install bundler
root@labs-app-metasploit$ bundle install

Un exemple de ce que cela donne chez moi :

2015-09-06_12h10_15

Note : Si vous rencontrez une erreur « FetchError SSL_connect » ou du même type, vous pouvez relancer le « bundle install ». L’instance n’étant pas une bête de course, il arrive parfois quelques décrochage :/

Malheureusement il existe un problème avec les liens symboliques, pour pallier à ce problème, je vous invite à lancer la commande suivante qui permet de mettre en place ces liens pour utiliser les commandes de Metasploit :

root@labs-app-metasploit$ cd /opt/metasploit-framework
root@labs-app-metasploit$ for i in $(ls msf*); do ln -sf /opt/metasploit-framework/$i /usr/local/bin/$i; done

Pour terminer l’installation, il reste à mettre en place le fichier de configuration entre Metasploit et PostgreSQL :

root@labs-app-metasploit$ vim /opt/metasploit-framework/config/database.yml

production:
adapter: postgresql
database: msf
username: msf
password:
host: 127.0.0.1
port: 5432
pool: 100
timeout: 10

root@labs-app-metasploit$ echo export MSF_DATABASE_CONFIG=/opt/metasploit-framework/config/database.yml >> /etc/profile
root@labs-app-metasploit$ source /etc/profile
root@labs-app-metasploit$ msfconsole

Le lancement du framework Metasploit :

2015-09-06_14h10_47

 

Lancement d’un scan de version sur le blog (pour valider le fonctionnement) :

2015-09-06_14h35_43

 

Attention lors de la création du fichier « database.yml », il faut bien ajouter 4 espaces en dessous de « production: » comme ceci (ATTENTION, chez moi j’utilise un password, chez vous cette partie doit être vide)

2015-09-06_14h11_45

 

Création d’une image

Avant de lancer les opérations, il sera nécessaire de stopper votre instance sinon vous aurez un message d’erreur. Cette action est à faire depuis l’interface Scaleway en sélectionnant votre instance. En première lieu, stoppez l’instance en cliquant sur le bouton OFF/ON. En second lieu cochez bien le mode « archive » comme dans les screenshots ci-dessous :

2015-09-06_11h34_01

2015-09-06_11h34_12

 

L’arrêt de l’instance peu prendre un peu de temps. Une fois que c’est fait, rendez-vous en bas de la page pour lancer un snapshot de votre volume (attention, la création d’un snapshot coûte 0,50€ puis 0,002€/heure).

2015-09-06_11h32_17

 

Une fois l’opération terminée, rendez-vous dans l’onglet « Snapshots » dans le menu de gauche de Scaleway puis sélectionnez votre instance pour en faire une image :

  1. Sélection du menu « Snapshots »
  2. Sélection de votre snapshot
  3. Création d’une image à partir de ce snapshot

2015-09-06_11h40_42

 

Pour terminer votre image, vous devez lui attribuer un nom et le snapshot source (bug ?) :

  1. Attribution d’un nom pour l’image, ici « Metasploit »
  2. Utilisation du snapshot source

2015-09-06_11h41_12

 

Votre image sera maintenance accessible depuis la liste lorsque vous souhaitez déployer une nouvelle instance. Par contre vous ne pouvez pas supprimer votre snapshot car il est attribué à une image.

Conclusion

L’installation reste facile (presque du copier/coller) mais relativement longue à cause des compilations (Ruby/Nmap), n’oubliez pas qu’il s’agit d’une petite instance ARM (4 coeurs 1,3Ghz et 2Go de mémoire et sans swap). Il faut donc être patient mais le résultat vous permet d’être plus rapide.

Personnellement (du moins pour le moment) je garde toujours cette image/snapshot dans un coin dans le cas ou j’utilise régulièrement Metasploit, c’est rapide à déployer sur Scaleway (comptez environ 5 minutes pour une instance utilisable).

Installation automatique

Je prépare un script permettant l’installation de l’environnement regroupant les étapes que vous venez de voir dans ce guide. L’article sera mis à jour lorsque le script sera prêt, je dois seulement regarder la partie sur l’installation de l’utilisation « msf » pour PostgreSQL (le password étant demandé dans le prompt shell). A côté du script, je prépare également la construction d’une image avec les outils de Scaleway (image-builder), le résultat sera néanmoins le même. Les scripts/outils seront bientôt disponible sur mon compte Github.

A bientôt et n’hésitez pas à commenter l’article si vous avez des choses positives/négatives à rajouter 🙂

Articles recommandés