dimanche 9 juin 2019

Apprendre la méthodologie du pentest applicatif à travers un cas pratique


Résumé


Cette article décrit la méthodologie classique suivi par les pentesteurs à travers un cas pratique qui se manifeste par la réalisation d’un test d’intrusion contre la plateforme Metasploitable2. Cette dernière contient de nombreuses vulnérabilités. Comme le focus porte sur la méthodologie de pentest plutôt que sur les vulnérabilités existantes, une seule vulnérabilité seulement sera exploitée pour l’exemple. La vulnérabilité en question est pour le coup dévastatrice car son exploitation permet d’obtenir le contrôle total sur la cible. Ils existent plusieurs manières de rooter la cible mais ce n’est pas l’objectif.
Présentation de la plateforme Metasploitable2

La machine virtuelle Metasploitable est une version intentionnellement vulnérable d'Ubuntu Linux conçue pour tester les outils de sécurité et démontrer les vulnérabilités courantes. La version 2 de cette machine virtuelle est disponible en téléchargement (https://sourceforge.net/projects/metasploitable/) et est livrée avec davantage de vulnérabilités que l'image d'origine. Cette machine virtuelle est compatible avec VMWare, VirtualBox et d'autres plates-formes de virtualisation courantes. Par défaut, les interfaces réseau de Metasploitable sont liées aux adaptateurs réseau NAT et Host-only, et l'image ne doit jamais être exposée à un réseau hostile.

Étape 1 : Préparez votre environnement


Notre environnement de test se constitue d’une machine d’attaque sous Kali Linux et de la machine cible (à auditer) qui est Metasploitable2. Ces deux machines sont dans un même segment à part entière et constitue ainsi un réseau privée virtuelle.

Nous utiliserons l’outil de Virtualisation dit VirtualBox (https://www.virtualbox.org/wiki/Downloads)  pour émuler les machines virtuelles en questions. Une fois celles-ci en places nous lançons nos deux machines comme illustré dans la figure suivante : 



Dans notre cas, nous allons nous munir d’un seul scanneur de vulnérabilité ; ce qui est suffisant pour le coup afin de prendre le contrôle total de la machine cible. Le scanneur de vulnérabilités dont on va se servir est Nessus. Après le téléchargement et l’installation de celui-ci, il faudra le lancer à la manière d’un service ainsi : 
 

Étape 2 : Effectuez une reconnaissance


La reconnaissance ou récolte d’informations est la première étape d’un test d’intrusion. Dans cette étape, on se sert généralement de certains outils dédiés à la reconnaissance. Un outil incontournable en la matière est bien Nmap ; Il s’agit principalement d’un scanner de ports qui permet de :
Repérer toutes les machines connectées dans un réseau.
Connaître les services en vigueurs sur ces machines ainsi que leurs versions.
Obtenir des informations sur les systèmes d'exploitation de ces machines.

Vous l’aurez compris, il permet d’avoir tant d’informations utiles qui nous faciliteront l’attaque de notre cible.

Nous allons d’abord récupérer notre adresse IP avant de scanner le réseau entier sur lequel on se trouve. La commande illustrée dans la figure suivante retourne exactement ce qu’on veut.



Sachez que le réseau 192.168.56.0/ 24 est le réseau "hôte uniquement" par défaut dans Virtual Box. Les adresses IP sont attribuées à partir de "101". En fonction de l'ordre dans lequel les systèmes d'exploitation invités sont démarrés, l'adresse IP de Metasploitable 2 peut varier dans votre cas.

Le résultat du ping scan effectué sur l’intégralité du réseau local (192.168.56.0/24) à l’aide de l’outil Nmap est présenté dans la figure suivante :



Dans notre cas c’est assez simple de repérer l’adresse IP de la cible à auditer. Par élimination, l’adresse IP :
  • 192.168.56.1 est affectée à la machine host sur l’interface Virtualbox Host-Only Ethernet Adapter
  • 192.168.56.100 est celle du serveur DHCP natif à Virtualbox
  • 192.168.56.102 est celle de notre machine d’attaque Kali Linux
  • 192.168.56.101 ne peut être que la machine cible Metasploitable2

Nous allons utiliser l’outil Zenmap, qui est identique à Nmap avec un mode graphique, pour scanner tous les ports TCP sur la machine cible. La requête utilisée et le résultat du scan sont illustrés dans la figure suivante :



Presque chacun de ces services fournit un point d’entrée distant dans le système. Dans la section suivante, nous allons voir un de ces vecteurs.

Étape 3 : Scannez les vulnérabilités

Pour cette partie, nous allons nous munir d’un scanneur de vulnérabilités assez réputé qui est en l’occurrence Nessus (https://www.tenable.com/downloads/nessus) . En règle générale un pentester combine plusieurs scanneurs de vulnérabilités afin d’obtenir un maximum de chose et aussi car certains sont plus efficaces que d’autres en termes de faux positifs (vulnérabilités détectées mais inexistantes) et de faux négatifs (vulnérabilités existantes mais non détectées). Comme notre cible contient plusieurs vulnérabilités critiques (et d’autres moins critiques) l’exploitation d’une de ces vulnérabilités critiques induit directement à l’obtention d’un accès distant à la cible avec les privilèges root.

Le résultat du scan du réseau retourné par Nessus est le suivant :




Les vulnérabilités identifiées sur la machine cible (dotée de l’adresse IP 192.168.56.101) sont illustrées partiellement dans la figure qui suit :



Des schémas synthétiques ainsi qu’une catégorisation systématique faite par Nessus vous permettra d’appliquer les filtres que vous souhaitez sur les résultats retournés.

Étape 4 : Exploitation d’une vulnérabilité


Le service FTP est en place sur la machine cible sur le port 21. Nessus nous a retourné l’empreinte de ce service ce qui nous permet de savoir qu’il s’agit d’un serveur VsFTPd et qu’il s’agit plus particulièrement de la version 2.3.4 (voir figure suivante) :



Cette version particulière a été contaminé par une personne tierce à un moment donné et a été patchée juste après par l’éditeur. N’empêche que certaines personnes ont pu télécharger la version contaminée entre-temps. Cette dernière contient une porte dérobée permettant à une personne malveillante d’obtenir un shell distant sur la machine ayant déployée cette version vulnérable de VsFTPd (https://scarybeastsecurity.blogspot.com/2011/07/alert-vsftpd-download-backdoored.html).

Concrètement, la backdoor fait en sorte d’ouvrir un shell distant en écoute sur le port 6200 si une tentative de connexion au serveur FTP est initiée avec un nom d’utilisateur se terminant par ‘ : )’. Il existe également un exploit dans Metasploit permettant d’automatisé l’exploit de cette vulnérabilité.

Nous allons exploiter manuellement celle-ci. Commençons par scanner le port 6200 avec Nmap pour voir que nativement celui-ci est bien fermé. Le résultat est le suivant :



En effet, le port 6200 est bien à l’état fermé.

A présent nous allons initier une connexion FTP vers la machine cible avec comme nom d’utilisateur ‘testeur : )’ comme illustré dans la figure suivante :



Bien sûre, l’utilisateur étant inexistant, la connexion FTP a échoué. Néanmoins, si on scan à nouveau le port 6200 sur la machine cible avec Nmap, nous constaterons qu’il est ouvert cette fois-ci. Voir figure suivante :



En essayant de se connecter sur le port en question au moyen d’un outil permettant la communication entre un client et un serveur comme le célèbre telnet, on parvient à obtenir un shell sur le machine cible. En exécutant la commande id sur la cible, on voit clairement qu’on est connecté en tant que root ; ce qui signifie qu’on détient un contrôle total sur la cible.

Bonus : Corrigez cette vulnérabilité

A priori, désinstaller la version backdoorée du service FTP et réinstaller la dernière version stable depuis le site de l’éditeur (tout en ayant le bon réflexe de vérifier le checksum et/ou la signature GPG du fichier téléchargé par rapport à ceux déclarés par l’éditeur de la solution), va assainir le service FTP mais rien ne dit que d’autres services ne soient pas impactés ou que d’autres portes dérobées ne soient pas présentes ou même que le noyau ne soit pas infiltré par un éventuel rootkit. D’ailleurs, il existe réellement d’autres backdoors sur le système en question comme celle en place sur le port TCP 1524 à travers le service Ingreslock.

Dans une telle situation, il convient de refaire le système intégralement et de repartir sur une base seine et enchaîné avec un durcissement de la configuration de base de ce nouveau système.

Aucun commentaire:

Enregistrer un commentaire