Hi guys, c’est Anass 🤠 et aujourd’hui, on va parler de Metasploit.

En fait, si vous voulez vraiment être un hacker, vous devez absolument maîtriser ce Framework. N’ayez pas peur, ça ne fera pas de vous un script kiddy😂, même les pentesters professionnels l’utilisent fréquemment durant leurs tests d’intrusions pour gagner du temps et avoir plus d’efficacité.

Dans cette série de Metasploit : le guide ultime du hacker, vous allez découvrir ce Framework en allant des bases jusqu’aux subtilités que chaque hacker doit connaître. Vous aurez à la fin de cette série une vraie compétence d’un véritable hacker 😉.

Pourquoi apprendre Metasploit :

Comme je l’ai dit au début de ce tutoriel, Metasploit est un Framework (ensemble d’outils et de logiciels organisés qui simplifie une tâche complexe) qui va nous être utile dans les différentes étapes d’un test d’intrusion.

Durant le processus d’intrusion, on a besoin de scanner, fuzzerpayload, encoder etc Au lieu d’être dispersé à gauche et à droite avec différents outils, Metasploit nous offre l’opportunité de regrouper tous ces outils sous son aile, avec un tas d’autres fonctionnalités et scripts dédiés au hacking.

Cela étant dit, le hacker utilisant Metasploit va optimiser en temps et en efficacité ses hacks. En plus du large spectre d’outils qu’offre ce Framework, la capacité de modifier voir créer des modules propres à nous, fait de lui une arme suisse pour les hackers.

Un peu d’histoire :

Metasploit a été développé par le fameux HD Moore, ce dernier a constaté lors de son emploi dans une entreprise de sécurité qu’il passait une grande partie de son temps à la correction et la validation des exploits publiques. Il a eu l’idée de créer un petit Framework (à cette époque-là) pour la création et le développement d’exploits, il a lancé la première édition de Metasploit basé sur Perl en octobre 2003 avec un total de 11 exploits.

Le projet a pris de l’ampleur au fil du temps ainsi qu’un grand feed-back positif de la part de la communauté des pentesters, à tel point qu’en 2007, il est devenu un Framework indispensable pour tout spécialiste en sécurité informatique.

Durant la même année ce projet a été réécrit entièrement en Ruby et a gagné un total de 150 000 lignes de codes en plus, faisant la sortie de Metasploit 3.0.

En 2009 Rapid7 le leader dans le domaine de scan de vulnérabilités est devenu le sponsor officiel du projet Metasploit, ce qui a permis à HD Moore de se focaliser sur son projet à plein temps et d’embaucher des programmeurs pour l’aider. D’où Metasploit a connu une accélération exponentielle.

Après, Rapid7 a libéré deux versions commerciales de Metasploit Express et pro qui offrent des fonctionnalités plus avancées pour les spécialistes.

Préparation du lab :

Si vous utilisez une distribution Linux orientée sécurité, il est fort possible que Metasploit soit déjà préinstallé. Pour s’en assurer, il suffit de taper msfconsole sur le terminal et vous obtiendrez une image similaire comme celle-ci :

msfconsole

Si ce n’est pas le cas, la méthode la plus facile est de télécharger l’installeur directement du site officiel.

Quelques notions :

L’utilisation de Metasploit devient vite confuse si vous ne comprenez pas les notions de base utilisées fréquemment dans notre domaine. La compréhension de cette terminologie est indispensable pour pouvoir interagir facilement avec le Framework.

Voici une liste de termes que l’on va rencontrer souvent durant cette série de tutoriels :

Exploit : est une faille dans un système, application ou un service qui va permettre à un attaquant de l’exploiter afin de compromettre sa sécurité.

Payload : est un code que le système va exécuter pour avoir un résultat précis. Exemple : un reverse shell est un payload qui se charge de créer une connexion de la machine victime vers la machine de l’attaquant tandis qu’un bind shell est un payload qui lie (bind) l’invite de commande avec un port en écoute.

Shellcode : semblable aux payloads sauf qu’il est écrit en assembly. Exemple : après avoir exploité une machine, un meterpreter shell est fourni pour interagir avec la machine compromise.

Module : un bout de code pouvant être importer. Souvent vous aurez besoin de scripts pour accomplir une tâche donnée, avec MSF vous pouvez l’importer comme un module externe, c’est l’une des beautés de ce Framework.

Listener : lorsque vous exploitez un système, ce dernier va tenter d’établir une connexion avec votre machine. Pour cela le listener va écouter jusqu’à l’établissement de la connexion.

Les interfaces de Metasploit :

Metasploit offre plusieurs interfaces d’interaction, je vais vous initier aux plus populaires :

msfconsole : est l’interface la plus utilisée et aussi la plus puissante, basée sur la ligne de commande ce qui lui confère une flexibilité et une richesse extrême ainsi qu’un support de la communauté. Depuis cette interface, vous pouvez exécuter un exploit, importer un module, créer un listener et beaucoup d’autres choses.

Armitage : c’est une interface graphique (GUI). Les débutants l’aiment bien parce qu’elle est assez intuitive (et riche mais pas autant que msfconsole). Pour comprendre et maîtriser Metasploit il faut faire travailler ses méninges, c’est vrai que ça peut faire peur mais une fois qu’on est habitué, ça devient une zone de confort 😜.

Utilitaire de Metasploit :

Il est injuste de parler de msfconsole sans parler de msfvenom. En fait, c’est un composant majeur de Metasploit qui vous permet de générer des payloads, exécutables, shellcodes, apk pour les utiliser dans vos exploitations.

Vous pouvez générer des shellcodes écrits en plusieurs formats C, Ruby, pyth²on, JavaScript etc… selon votre situation et vos besoins.

Cependant, ces shellcodes créés ne sont pas si effaces que ça en a l’air. Ils contiennent de mauvais caractères ce qui fait qu’un antivirus stupide peut les attraper facilement, c’est pourquoi vous aurez besoin d’une autre fonctionnalité de msfvenom qui est l’encodage, ce dernier permet d’éviter ces mauvais caractères.

Pour afficher tous les encodeurs que vous pouvez utiliser entrez cette commande :

msfvenom -l encoders

Et voici le résultat :

liste_encoders

Notez que le meilleur classement est celui de l’encodeur x86/shikata_ga_nai (excellent) qu’on va utiliser dans un prochain exploit.

Metasploit Collecte d’informations :

Maintenant que vous avez les bases, nous allons approfondir nos connaissances en respectant la méthodologie du hacking en commençant par : La collecte d’informations.

N.B : afin d’appliquer ce qu’on va voir dans les étapes suivantes nous avons besoin d’un environnement propice et légal pour hacker dans des conditions optimales.

La collecte d’informations se divise en deux grands paliers : passive et active nous allons détailler les deux procédures ainsi que les outils utilisés pour chacune.

Collecte d’informations passive :

La collecte d’informations passive ou indirecte vous permet de récolter des informations concernant votre cible sans interagir avec elle. Autrement dit sans inter-changement de paquets entre vous et votre cible, ce qui va éliminer totalement tous risques de détection de votre recherche.

Votre but de cette méthode est d’avoir une idée générale sur l’infrastructure de votre cible : l’hébergeur, les systèmes d’exploitation et leurs versions, les noms des serveurs…

Pour effectuer notre collecte, je vais utiliser whois lookup. C’est un outil qui contient une base de données immense sur les domaines publiques disponibles sur la toile, la simplicité de son utilisation et sa puissance le rend l’outil préféré des hackers quand ça concerne la collecte d’informations.

Tout d’abord, installez whois depuis votre msfconsole avec la commande suivante :

apt install whois

Puis pour avoir une vue d’ensemble d’un domaine quelconque, tapez cette commande :

whois domaine.com

Vous aurez des informations de celui-ci dans une forme bien organisée :

google_whois

Dans cet exemple, la collecte d’informations concernant google.com nous divulgue que le nom du serveur dans lequel le nom de domaine est hébergé est : NSX.GOOGLE.COM, ce qui veut dire que le DNS (Domain Name System) est hébergé par l’organisation elle-même qui est Google. Un détail qui vous donne un aperçu sur la taille de l’organisation que vous ciblez.

Maintenant si vous voulez connaitre l’adresse IP de votre cible, vous pouvez utiliser un autre outil : nslookup (toujours depuis msf) :

domain_IP

Actuellement, nous avons construit une vue générale sur notre cible incluant l’hébergeur, l’adresse IP, le pays… Et plusieurs d’autres informations qu’il ne faut absolument pas négliger, il se peut qu’un petit détail fera la différence entre le succès et l’échec de votre test d’intrusion.

Maintenant, on va devoir entamer la phase active pour avoir des informations plus poussées.

Collecte d’informations active :

Avec la collecte active, l’interaction avec le système ciblé est directe, c’est-à-dire que vous êtes entrain d’envoyer et de recevoir des paquets avec votre cible. De cette façon vous obtiendrez des informations plus qualitatives (Application en exécution, version du système d’exploitation, port ouvert…) mais les risques d’être détecté par un IDS (Intrusion Detection System) ou un IPS (Intrusion Prevention System) sont élevés.

C’est pour cette raison qu’il faut maîtriser cette étape pour en extraire le plus d’informations avec le moindre bruit possible.

Nmap….. Scan de port :

Un port dans un système est une application utilisée comme une interface exécutant un service, par exemple : le port 80 est réservé aux applications web dont toutes les informations de cette application sont échangées depuis ce port.

Le fameux Nmap est un outil qui nous permet de scanner ces ports et d’identifier les services en exécution ainsi que beaucoup d’autres fonctionnalités avancées (NSE).

Le principe du scan est simple, Nmap envoie un paquet au système dans un port quelconque et si le système répond (n’importe quelle réponse) cela veut dire que le port est ouvert. Si le système ne répond pas cela veut dire le port est fermé ou bien filtré.

Afin de démontrer l’utilisation de Nmap je vais utiliser une machine virtuelle comme cible :

machine_virtuelle

N.B : l’utilisation de Nmap sur des systèmes qui ne vous appartiennent pas est illégale, c’est pour cette raison que j’utilise une machine virtuelle.

Pour voir toutes les fonctionnalités qu’offre nmap entrez simplement la commande :

nmap -h

Une liste d’usage s’affiche décrivant toutes les variantes qu’on peut utiliser, il est très important de lire la documentation avant d’entamer votre scan.

nmap_help

Disons que je veux opter pour un scan basique, pour cela je ne lui passe aucun argument :

nmap_simple

Il y a quelques informations utiles dans ce screen-shot : nmap nous informe que 999 ports sont filtrés (et pas fermés), le port numéro 5 357 est ouvert et utilise le service wsdapi, puis nous avons l’adresse MAC du système ainsi que son type (system virtuel).

N.B : si vous exécutez la même commande pour un système Linux en tant que cible,  un message d’erreur se lève indiquant la déconnexion de votre cible alors qu’elle est belle et bien connectée. Dans ce cas la, il nous recommande d’utiliser l’argument -Pn afin d’éviter l’utilisation de ping (ICMP packets) pour extraire les informations que beaucoup de systèmes bloquent comme mesure de protection.

nmap_linux

Vous devez dans ce cas adapter votre commande :

nmap -Pn IP

nmap_linux_pn

Revenons à notre exemple, vous pouvez utiliser l’argument -O pour détecter le système d’exploitation en marche :

nmap_os

Il nous dit que le système en marche est de type Windows (ce n’est pas assez précis 🤔).

Si vous voulez plus d’informations, utilisez l’argument -A :

nmap_A

Nmap Zombie scan :

Une des fonctionnalités avancées de Nmap est le idle scan ou scan par zombie, le principe est le suivant ; vous allez spoofer une adresse IP d’une machine qui se trouve dans le même réseau que vous. Puis vous allez effectuer votre scan en se cachant derrière (faire de lui un zombie) et qui va jouer le rôle d’intermédiaire entre vous et votre cible.

En fait, toute l’attaque repose sur lID incrémentiel qui est un nombre utilisé pour marquer chaque paquet envoyé du système, cela va facilite la prédiction de la réponse du système recevant le paquet.

Tout d’abord, il faut identifier un zombie. Pour cela, nous allons utiliser le module scanner/ip/ipidseq pour mapper tout le réseau à la recherche d’un hôte qui correspond à nos besoins :

module_use

La commande show options vous affiche les options nécessaires au fonctionnement du module, certaines sont prédéfinies et d’autres non, c’est à vous de les définir.

La seule option qui nous intéresse ici, c’est RHOSTS, c’est l’intervalle d’adresses qu’on veut scanner, il peut être de ce format (192.168.1.1-192.168.1.254) ou bien 192.168.1.1/24, c’est à vous de choisir, puis exécutez le module :

idel_scan

Nous avons une vingtaine d’hôtes que l’on ne peut PAS utiliser, car l’IP ID n’est pas incrémentiel. Du coup ils ne sont pas vulnérables à cette attaque 😜.

Si ce n’est pas le cas pour vous (présence de Windows XP dans votre réseau), vous pouvez continuer votre attaque en utilisant la commande suivante :

nmap -sI -A IP_SPOOFÉ IP_CIBLE

SSH ….scan :

Si durant votre scan vous trouvez une machine exécutant le protocole ssh (secure shell ), vous devez savoir quelle est sa version. Il se peut que vous tombiez sur une version qui n’est pas mise à jour, ce qui augmente considérablement le risque d’avoir une faille dedans.

Afin d’identifier la version de ssh on va devoir utiliser le module scanner/ssh/ssh_version :

ssh_version

Ftpscan :

Le protocole ftp a connu beaucoup de difficultés dès son lancement, c’est un protocole complexe et pas suffisamment sécurisé, le module scanner/ftp/ftp_version peut nous donner quelques informations :ftp_version

Autre point très important, il faut avoir le réflexe de chercher des exploits sur exploitDB, quelle que soit la version que vous trouverez, des  zero days il y en a tous les jours. Donc ne sous-estimez la possibilité d’avoir un exploit et ne soyez pas paresseux 😉.

N.B : si vous voulez voir la liste de tous les modules scanner, il suffit de taper use auxialiary/ + TAB (↹), vous aurez ainsi toute la liste des modules :

all__modules

Voilà, pour cette première partie de Metasploit : le guide ultime du hacker, on a vu l’histoire de Metasploit, les différentes interfaces et la terminologie propre à ce Framework. Puis on a entamé méthodologiquement l’utilisation de Metasploit pour collecter les informations passivement et activement en se servant des outils comme whois lookupnslookup … et Nmap.

J’espère que c’est clair pour vous, si vous avez des questions posez les en commentaires, je serai ravi d’y répondre 😀… Peace.

PS : Si vous voulez approfondir vos compétences dans l’utilisation de Metasploit, je vous recommande ma formation complète METASPLOIT MASTERS™.

25 Responses

    • There is no such a thing that protect 100% against hackers BUT what i can recommend to you is to update regularly your website and have a basic knowledge about hacking and security ;).

  1. What’s up to all, how is everything, I think
    every one is getting more from this site, and your views are good
    designed for new users.

  2. Hi there! I know this is kind of off topic
    but I was wondering if you knew where I could find a captcha plugin for
    my comment form? I’m using the same blog platform as yours and I’m having problems finding one?
    Thanks a lot!

  3. Hello there! This is my first comment here so I just wanted
    to give a quick shout out and tell you I truly enjoy reading through
    your posts. Can you recommend any other blogs/websites/forums that deal with the same topics?
    Thank you!

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

cinq × 4 =

Follow by Email
YouTube