Penetration Testing avec Metasploit
Table of contents
Pré-requis
Le pentesting, ou test d'intrusion est une méthode utilisée pour évaluer la sécurité d'un système ou réseau informatique. Le but est d'identifer des vulnérabilités et surtout de les corriger pour éviter qu'elles soient exploitées par des acteurs malveillants.
Il existe plusieurs outils couramment utilisés pour le pentesting:
Metasploit, un environnement de test d'intrusion sur Kali Linux, utilisé pour tester et exploiter la vulnérabilité des systèmes en utilisant divers exploits (failles connues) et payloads(scripts permettant de prendre le contrôle d'une machine).
Nmap, un outil qui permet de scan le réseau et obtenir des informations sur une machine cible (services, versions des logiciels, ports ouverts, etc)
Nikto, pour détecter des failles sur des serveurs. Il les analyse afin de détecter des fichiers et bien d'autres. On peut trouver avec Nikto des pages accessibles comme
/index
ou des pages de logs/phpMyadmin
.Searchploit, pour rechercher localement des exploits en utilisant des bases de données de vulnérabilités présentes sur le système. Il est en quelque sorte l'équivalent de exploit-db qui est un outil open-source de recherche des exploits.
Burp, pour analyser les requêtes http et les réponses entre un navigateur et un serveur. Il peut manipuler le traffic pour trouver des failles.
Medusa ou Hydra pour des attaques par force brute. Ils sont souvent utilisés pour tester le conformité des mots de passe.
Nmap
On utilise ici, une machine virtuelle metaspoitable (cible) vulnérable. La première étape est l'analyse de la cible dans l'éventualité de trouver des informations utiles. On pourrait utliser nmap
ou nikto
pour cette phase.
On voit par exemple que le service FTP est ouvert sur le port 21 utilisant vsftpd 2.3.4, SSH sur le port 22 avec OpenSSH 4.7p1, telnet est ouvert et donne un accès à des communication non chiffrées facilitant des interceptions, HTTP à travers un serveur web apache avec la version 2.2.8, le service Samba actif sur les ports 139 et 445 mais sans la version exacte.
Chacun de ces ports ouverts peut être l'objet d'une potentielle exploitation.
Searchsploit
Searchsploit est un outil pour rechercher localement des exploits et des vulnérabilités sur un système. Cet outil utilise la base de données Exploit Database, qui est une archive publique de failles de sécurité et d'exploits.
La commande searchsploit vsftpd 2.3.4
retourne deux exploits disponibles pour vsftpd 2.3.4. Plus d’informations sur ces exploits sont répertoriées sur Exploit Database.
vsftpd 2.3.4 - Backdoor Command Execution : Cet exploit est disponible sous la forme d'un script Python. Il permet d’exécuter des commandes à distance sur un serveur vulnérable.
vsftpd 2.3.4 - Backdoor Command Execution (Metasploit) : Celui-ci est intégré directement dans Metasploit et est disponible sous la forme d'un script Ruby. Vous pouvez le visualiser directement dans le répertoire
/usr/share/metasploit-framework/modules/exploits/unix/ftp/
écrit en langage Ruby
Vsftpd 2.34
On veut trouver ici, une vulnérabilité liée à vstfpd, pour réussir notre attaque. En utilisant la commande search vsftpd 2.3.4
dans msfconole, on trouve un exploit pour la version 2.3.4 avec un rang excellent, ce qui indique qu'il peut être fiable.
On commence par sélectionner l'exploit trouvé en faisant la commande use 0
ou use exploit/unix/ftp/vsftpd_234_backdoor
. Dans Metasploit la commande info
fournit des informations détaillées sur l'exploit sélectionné et la commande options
, les paramètres configurables pour l'exploit sélectionné comme l’adresse IP, le port et d’autres paramètres nécessaires pour exécuter l’exploit.
On définit ensuite la machine cible avec set RHOSTS 192.168.2.20
et ensuite on exécute avec la commande run
ou exploit
.
Une session a été établie entre notre machine 192.168.2.98 et la machine cible 192.168.2.20 via les ports 33599 et 6200. On est maintenant directement connecté sur la machine cible.
Il est aussi possible de définir le payload après avoir sélectionné l'exploit et configuré les options. On rappelle qu’un payload est le code qui sera exécuté sur la machine cible une fois l'exploit réussi. Après avoir sélectionné un exploit avec la commande use
, vous pouvez utiliser show payloads
pour afficher une liste de tous les payloads compatibles avec cet exploit. Il faut maintenant configurer le payload et ses options, LHOST pour l’adresse IP et LPORT pour le port, et ensuite vous exécutez l’exploit.
Openssh
Il est aussi possible d'exploiter la vulnérabilité en utilisant le service SSH.
Avec la commande search openssh 4.7
, on recherche des exploits liés à openssh et searchsploit openssh 4.7
pour des exploits avec des CVE disponibles sur openssh.
Il se peut, comme dans ce cas, que la recherche ne nous retourne pas directement des informations plus ou moins utiles.
Aussi, sur le site de base de données des exploit, on a pas plus d'informations.
Samba
On va essayer de trouver ici, une faille en exploitant le service Samba qui est généralement utilisé pour le partage de fichiers et des imprimantes. Le résultat du nmap n'indique pas exactement la version du service samba. On ne peut donc pas directement savoir quel exploit utiliser mais elle doit être autour d'une version 3.X à 4.X.
On peut donc essayer avec searchsploit
.
Il se peut qu'il ne nous retourne pas directement des informations qui nous seront utiles ou qu'on pourrait directement exploiter.
Une autre option ici est le module auxiliary
dans les modules du metasploit-framework
qui fournit des informations supplémentaires.
On a un résultat en lien avec la version. On peut donc faire la commande options
pour voir les configurations possibles. Ici j'utilise la commande use 4
afin d'utiliser directement le résultat de ma recherche après la commande search. La commande est pareille que use auxiliary/scanner/smb/smb_version
On spécifie ensuite le RHOST et on peut faire la commande exploit
ou run
.
On a pu trouver la version exacte sur la machine (Samba 3.0.20-Debian)
Cette info sur la version peut être utilisée pour trouver une ou plusieures autres vulnérablités. Il est donc possible que cette version ait des vulnérabilités connues.
Avec la commande searchsploit
, on peut ainsi trouver des exploits potentiels pour cette version de Samba détectée.
On a donc touvé quatre vulnérabilités différentes. L'étape suivante serait de savoir à quels exploits de msfconsole
, correspond le résultat du searchsploit. Pour cela, il est possible de voir le chemin indiqué, faire une recherche avec le nom ou encore une recherche simple sur google.
En faisant un search avec un des termes retourné par le searchsploit, on peut donc trouver un exploit lié à samba.
Pour avoir plus d'info sur l'exploit, il est aussi possible d'aller dans le répertoire, ici , /usr/share/metasploit-framework/modules/exploits/multi/samba/
et voir le code de l'exploit, qui est en langage Ruby.
Une fois, dans l'exploit, avec la commande use 3
ou use exploit/multi/samba/usermap_script
, on peut donc voir sa description et ensuite faire la commande info
pour des informations sur l'exploit.
Il nous donne des détails supplémentaires sur les options à configurer et la descripton de l'exploit.
L'exploit ici est lié à une vulnérabilité par injection de commandes sur la version de Samba 3.0.20 à 3.0.25rc3. Elle permet donc d'exécuter des commandes arbitraires spécifiant un nom d'utilisateur contenant des caractères méta de shell, sans authentification.
On spécifie donc ici l'hôte avec SET RHOST 192.168.2.20
et ensuite exécuter l'exploit avec la commande exploit
ou la commande use
.
On peut voir qu'une session a été ouverte. On est maintenant connecté sur la machine cible en tant que root.
Post-Exploit
Une fois connecté à la machine cibe, on peut accéder à des fichiers importants :
cat etc/passwd
: Ce fichier contient des informations sur les utilisateurs, telles que le nom d'utilisateur, l'UID (User ID), le GID (Group ID), le répertoire personnel et le shell par défaut. Chaque ligne représente un utilisateur.-
Le premier champ est le nom d'utilisateur. Ici on a root, daemon, bin, msfadmin etc.
Le deuxième champ, généralement x, indique un mot de passe stocké dans le fichier
/etc/shadow
Le troisième et le quatrième champ indiquent respectivement le user id et le group id. Ici, 0 pour root et 1 pour daemon.
Le cinquième champ indique le répertoire personnel de l’utilisateur.
-
cat /etc/shadow
: Ce fichier contient les mots de passe chiffrés des utilisateurs et accessibles uniquement avec un utilisateur ayant des privilèges comme root.-
Le premier champ après le nom d’utilisateur est le mot de passe chiffré. Le préfixe
$1
indique que le mdp est chiffré avec MD5. Il existe d’autres types algorithmes de hachage comme SHA-256, SHA-512, scrypt et bien d’autres. Le signe*
au niveau du mot de passe indique que l’utilisateur ne peut pas se connecter avec un mot de passe et le signe!
indique que le compte est verrouillé. Le deuxième champ indique la dernière modification du mot de passe, exprimée en jours depuis le 1er janvier 1970.
-
Voici quelques d’informations que vous pouvez trouver une fois que vous avez accès à votre machine cible
Il est important de rappeler que l'utilisation de ces outils doit toujours se faire dans un cadre légal.
Subscribe to my newsletter
Read articles from FIKARA BILAL directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
FIKARA BILAL
FIKARA BILAL
As a newcomer to the cybersecurity industry, I'm on an exciting journey of continuous learning and exploration. Join me as I navigate, sharing insights and lessons learned along the way