Metasploit

Metasploit:

Metasploit est une plateforme de test de pénétration (pentesting) open source largement utilisée par les professionnels de la sécurité informatique pour évaluer la vulnérabilité des systèmes informatiques. Il fournit un ensemble d'outils et de ressources permettant de découvrir, d'exploiter et de sécuriser les failles de sécurité dans les réseaux, les systèmes d'exploitation, les applications et d'autres composants informatiques. En résumé, Metasploit est un cadre complet pour effectuer des tests d'intrusion et des audits de sécurité.

Par défaut, tous les fichiers de base liés à Metasploit Framework peuvent être trouvés /usr/share/metasploit-framework

Modules:

Les modules détaillés ci-dessus sont répartis en catégories distinctes dans ce dossier. Nous les détaillerons dans les sections suivantes. Ils sont contenus dans les dossiers suivante:

Plugins:

Les plugins offrent au pentester plus de flexibilité lors de leur utilisation msfconsolepuisqu'ils peuvent facilement être chargés manuellement ou automatiquement selon les besoins pour fournir des fonctionnalités et une automatisation supplémentaires lors de notre évaluation.

Scénarios:

Fonctionnalité Meterpreter et autres scripts utiles.

Outils:

Utilitaires de ligne de commande pouvant être appelés directement depuis le msfconsolemenu

MSFconsole

Structure d'engagement de MSF

La structure d’engagement du MSF peut être divisée en cinq catégories principales.

  • Énumération

  • Préparation

  • Exploitation

  • Élévation des privilèges

  • Post-Exploitation

Cette division nous permet de trouver et de sélectionner plus facilement les fonctionnalités MSF appropriées de manière plus structurée et de travailler avec elles en conséquence. Chacune de ces catégories comprend différentes sous-catégories destinées à des fins spécifiques. Il s'agit par exemple de la validation des services et de la recherche sur les vulnérabilités.

Components

Recherche de modules:

Une fois que nous sommes dans le msfconsole, nous pouvons sélectionner parmi une longue liste contenant tous les modules Metasploit disponibles. Chacun d'entre eux est structuré en dossiers, qui ressembleront à ceci :

Syntaxe:

Exemple

  1. NO:

Le No.tag sera affiché pour sélectionner l'exploit que nous souhaitons par la suite lors de nos recherches. Nous verrons No.plus tard à quel point le tag peut être utile pour sélectionner des modules Metasploit spécifiques.

  1. Type:

Type:

Description

Auxiliary

Fonctionnalités d'analyse, de fuzzing, de détection et d'administration. Offrez une assistance et des fonctionnalités supplémentaires.

Encoders

Assurez-vous que les charges utiles sont intactes jusqu'à leur destination.

Exploits

Définis comme des modules qui exploitent une vulnérabilité qui permettra la livraison de la charge utile.

NOPs

(Aucun code d'opération) Gardez les tailles de charge utile cohérentes entre les tentatives d'exploitation.

Payloads

Le code s'exécute à distance et rappelle la machine de l'attaquant pour établir une connexion (ou un shell).

Plugins

Des scripts supplémentaires peuvent être intégrés dans une évaluation msfconsoleet coexister.

Post

Large gamme de modules pour collecter des informations, approfondir, etc.

  1. OS:

    La OSbalise spécifie le système d'exploitation et l'architecture pour lesquels le module a été créé. Naturellement, différents systèmes d'exploitation nécessitent l'exécution de codes différents pour obtenir les résultats souhaités

  2. Service:

    La Servicebalise fait référence au service vulnérable qui s'exécute sur la machine cible. Pour certains modules, tels que ceux auxiliaryde ou post, cette balise peut faire référence à une activité plus générale comme gather, faisant référence à la collecte d'informations d'identification, par exemple.

  3. Name:

    Enfin, la Namebalise explique l’action réelle qui peut être effectuée à l’aide de ce module créé dans un but précis.

MSF - Fonction de recherche

Par exemple, nous pouvons essayer de trouver l' EternalRomanceexploit pour les anciens systèmes d'exploitation Windows. Cela pourrait ressembler à ceci :

search eternalromance

Recherche spécifique:

Nous pouvons également rendre notre recherche un peu plus grossière et la réduire à une seule catégorie de services. Par exemple, pour le CVE, nous pourrions spécifier l'année ( cve:<year>), la plateforme Windows ( platform:<os>), le type de module que nous souhaitons trouver ( type:<auxiliary/exploit/post>), le rang de fiabilité ( rank:<rank>) et le nom de la recherche ( <pattern>). Cela réduirait nos résultats à ceux qui correspondent à tous les éléments ci-dessus.

Utilisation des modules:

Pour sélectionner notre premier module, nous devons d'abord en trouver un. Supposons que nous ayons une cible exécutant une version de SMB vulnérable aux exploits EternalRomance (MS17_010). Nous avons constaté que le port 445 du serveur SMB est ouvert lors de l'analyse de la cible.

Recherche de MS17_010

search ms17_010

MSF - Sélectionner un module

Pour utiliser un module dans Metasploit, commencez par insérer la commande use suivie du numéro de module souhaité, puis utilisez la commande options pour afficher les détails et configurations disponibles pour ce module.

Informations sur le module

Nous pouvons utiliser la commande infoaprès avoir sélectionné le module si nous voulons en savoir plus sur le module. Cela nous donnera une série d'informations qui peuvent être importantes pour nous.

Spécification de la cible

Une fois que nous sommes convaincus que le module sélectionné est le bon pour notre objectif, nous devons définir certaines spécifications pour personnaliser le module afin de l'utiliser avec succès sur notre hôte cible, comme la définition de la cible ( RHOSTou RHOSTS).

De plus, il existe l'option setg, qui spécifie les options sélectionnées par nous comme permanentes jusqu'au redémarrage du programme.

Exécution d'exploits

Une fois que tout est configuré et prêt à être lancé, nous pouvons procéder au lancement de l'attaque. Commande : run

Targets

Show Targets:

La show targetscommande émise dans une vue de module d'exploitation affichera toutes les cibles vulnérables disponibles pour cet exploit spécifique. Si vous laissez la sélection sur , Automaticmsfconsole saura qu'il doit effectuer une détection de service sur la cible donnée avant de lancer une attaque réussie.

Cependant, si nous savons quelles versions s’exécutent sur notre cible, nous pouvons utiliser la set target <index no.>commande pour choisir une cible dans la liste.

Payloads:

Dans Payload Metasploit, un module aide le module d'exploitation à renvoyer (généralement) un shell à l'attaquant. Les charges utiles sont envoyées avec l'exploit lui-même pour contourner les procédures de fonctionnement standard du service vulnérable ( exploits job), puis s'exécutent sur le système d'exploitation cible pour renvoyer généralement une connexion inverse à l'attaquant et établir une prise de position ( payload's job).

Il existe trois types différents de modules de charge utile dans le framework Metasploit : Singles, Stagers et Stages.

  1. Payloads Single :

Une payload simple contient tout le code nécessaire pour l'exploit et l'exécution dans une seule charge utile autonome. Cela les rend plus stables, car il n'y a qu'un seul élément à exécuter. Cependant, elles peuvent être limitées par leur taille, car certaines attaques ne supportent pas de payloads trop volumineux. Elles sont idéales pour des actions immédiates, comme ajouter un utilisateur ou démarrer un processus sur la cible.

  1. Payloads Stagers:

Les payloads de type stageur fonctionnent avec des charges utiles de type "Stage" en divisant la charge en plusieurs étapes. Un stageur réside sur le système de l'attaquant et initie la connexion réseau avec la cible lorsque l’étape est exécutée sur la machine distante. Ils sont conçus pour être petits et fiables, facilitant ainsi l’établissement de connexions. Les stageurs Windows sont également disponibles en versions "NX" (pour la compatibilité avec la protection DEP) et "NO-NX", avec NX étant plus volumineux mais adapté aux systèmes modernes.

  1. Payloads Stages:

Les payloads d’étapes sont des composants téléchargés par les stageurs pour des fonctionnalités avancées et sans limitation de taille. Ils sont utilisés pour des charges complexes comme Meterpreter ou l’injection VNC. Pour minimiser les erreurs, les stages utilisent des stageurs intermédiaires pour garantir la stabilité du téléchargement. Ils sont particulièrement adaptés aux attaques multi-étapes nécessitant un flux de données fiable et soutenu.

Staged Payloads:

Charges utiles par étapes

En tant qu'utilisateur de Metasploit, nous les rencontrerons sous les noms communs reverse_tcp, reverse_https, et bind_tcp. Par exemple, sous la show payloadscommande , vous pouvez rechercher les charges utiles qui ressemblent à ce qui suit :

Payloads Meterpreter:

Meterpreter est une charge utile avancée utilisant l'injection DLL pour établir une connexion stable et persistante, entièrement en mémoire, rendant sa détection difficile. Elle permet de charger dynamiquement des scripts et plugins. Une fois lancée, elle ouvre une session offrant des commandes spécifiques pour contrôler le système cible : capture de frappes, récupération de mots de passe, écoute du microphone, etc.

Searching for Payloads:

Pour sélectionner notre première charge utile, nous devons savoir ce que nous voulons faire sur la machine cible. Par exemple, si nous optons pour la persistance des accès, nous souhaiterons probablement sélectionner une charge utile Meterpreter.

En parcourant la liste ci-dessus, nous trouvons la section contenant Meterpreter Payloads for Windows(x64).

Searching for Specific Payload:

On pouvons également utiliser grepin pour filtrer des termes spécifiques. Cela accélérerait la recherche et, par conséquent, notre sélection.

Nous pouvons maintenant ajouter une autre grepcommande après la première et rechercher reverse_tcp.

Select Payload:

Nous l'utilisons set payload <no.>uniquement après avoir sélectionné un module Exploit pour commencer.

Using Payloads:

Pour la partie Exploit, nous devrons définir les éléments suivants :

Paramètre

Description

RHOSTS

L'adresse IP de l'hôte distant, la machine cible.

RPORT

Le Port de l'hôte distant.

Pour la partie charge utile, nous devrons définir les éléments suivants :

Paramètre

Description

LHOST

L'adresse IP de l'hôte, la machine de l'attaquant.

LPORT

Ne nécessite pas de modification, il suffit de vérifier que le port n'est pas déjà utilisé.

Payload Types:

Charge utile

Description

generic/custom

Auditeur générique, multi-usage

generic/shell_bind_tcp

Écouteur générique, multi-usage, shell normal, liaison de connexion TCP

generic/shell_reverse_tcp

Écouteur générique, multi-usage, shell normal, connexion TCP inversée

windows/x64/exec

Exécute une commande arbitraire (Windows x64)

windows/x64/loadlibrary

Charge un chemin de bibliothèque x64 arbitraire

windows/x64/messagebox

Génère une boîte de dialogue via MessageBox à l'aide d'un titre, d'un texte et d'une icône personnalisables

windows/x64/shell_reverse_tcp

Shell normal, charge utile unique, connexion TCP inversée

windows/x64/shell/reverse_tcp

Shell normal, stager + stage, connexion TCP inversée

windows/x64/shell/bind_ipv6_tcp

Shell normal, stager + stage, liaison IPv6 TCP stager

windows/x64/meterpreter/$

Charge utile Meterpreter + variétés ci-dessus

windows/x64/powershell/$

Sessions PowerShell interactives + variétés ci-dessus

windows/x64/vncinject/$

Serveur VNC (injection réflective) + variétés ci-dessus

Encoders

Au cours des 15 années d'existence du framework Metasploit, Encodersnous avons contribué à rendre les charges utiles compatibles avec différentes architectures de processeurs tout en contribuant à l'évasion antivirus. Encodersentrent en jeu avec le rôle de modifier la charge utile pour qu'elle s'exécute sur différents systèmes d'exploitation et architectures. Ces architectures incluent :

x64

x86

sparc

ppc

mips

Selecting an Encoder:

Si nous voulions créer notre charge utile personnalisée, nous pourrions le faire via msfpayload, mais nous devrions l'encoder en fonction de l'architecture du système d'exploitation cible en utilisant msfencodeafterward. Un canal prendrait la sortie d'une commande et l'enverrait à la suivante, ce qui générerait une charge utile encodée, prête à être envoyée et exécutée sur la machine cible.

Generating Payload - Without Encoding:

Nous devrions maintenant regarder la première ligne du $bufet voir comment elle change lors de l'application d'un encodeur comme shikata_ga_nai.

Generating Payload - With Encoding:

Shikata Ga Nai Encoding:

Prenons l'exemple ci-dessus tel quel, un exemple hypothétique. Si nous devions encoder une charge utile exécutable une seule fois avec SGN, elle serait très probablement détectée par la plupart des antivirus actuels. Examinons cela un instant. En prenant msfvenom, l'indice du Framework qui traite de la génération de charge utile et des schémas d'encodage, nous avons l'entrée suivante :

Cela va générer une charge utile au exeformat TeamViewerInstall.exe, qui est censée fonctionner sur les processeurs d'architecture x86 pour la plate-forme Windows, avec une charge utile de shell reverse_tcp Meterpreter cachée, codée une fois avec le schéma Shikata Ga Nai. Prenons le résultat et chargeons-le sur VirusTotal.

Une meilleure option serait d'essayer de l'exécuter via plusieurs itérations du même schéma de codage :

Comme nous pouvons le constater, cela ne suffit toujours pas pour échapper aux antivirus. Il existe un grand nombre de produits qui détectent encore la charge utile. Alternativement, Metasploit propose un outil appelé msf-virustotalque nous pouvons utiliser avec une clé API pour analyser nos charges utiles. Cependant, cela nécessite une inscription gratuite sur VirusTotal.

VirusTotal:

Databases:

Databasessont msfconsoleutilisés pour suivre vos résultats. Il n'est pas surprenant que lors d'évaluations de machines encore plus complexes, et encore moins de réseaux entiers, les choses peuvent devenir un peu floues et compliquées en raison de la quantité considérable de résultats de recherche, de points d'entrée, de problèmes détectés, d'informations d'identification découvertes, etc. C'est ici que les bases de données entrent en jeu. Msfconsoleprend en charge de manière intégrée le système de base de données PostgreSQL. Grâce à lui, nous disposons d'un accès direct, rapide et facile aux résultats d'analyse avec la possibilité supplémentaire d'importer et d'exporter les résultats en conjonction avec des outils tiers. Les entrées de base de données peuvent également être utilisées pour configurer directement les paramètres du module Exploit avec les résultats déjà existants.

Setting up the Database

Tout d'abord, nous devons nous assurer que le serveur PostgreSQL est opérationnel sur notre machine hôte. Pour ce faire, saisissez la commande suivante :

Statut de PostgreSQL

Démarrer PostgreSQL

Lancer une base de données

Connexion à la base de données initiée

Réinitialisation de la base de données

Using the Database

Après avoir confirmé que la base de données est correctement connectée, nous pouvons organiser notre Workspaces

Workspaces:

Nous pouvons penser de Workspacesla même manière que nous penserions aux dossiers d'un projet. Nous pouvons séparer les différents résultats d'analyse, les hôtes et les informations extraites par IP, sous-réseau, réseau ou domaine.

Importing Scan Results

Ensuite, supposons que nous souhaitons importer un fichier Nmap scand'un hôte dans l'espace de travail de notre base de données pour mieux comprendre la cible

Using Nmap Inside MSFconsole

Alternativement, nous pouvons utiliser Nmap directement depuis msfconsole ! Pour scanner directement depuis la console sans avoir à passer en arrière-plan ou à quitter le processus, utilisez la db_nmapcommande.

Data Backup

Une fois la session terminée, assurez-vous de sauvegarder vos données si quelque chose se produit avec le service PostgreSQL. Pour ce faire, utilisez la db_exportcommande.

Hôtes:

Les hôtes peuvent également être ajoutés manuellement sous forme d'entrées distinctes dans ce tableau. Après avoir ajouté nos hôtes personnalisés, nous pouvons également organiser le format et la structure du tableau, ajouter des commentaires, modifier les informations existantes, etc.

Services La servicescommande fonctionne de la même manière que la précédente. Elle contient un tableau avec des descriptions et des informations sur les services découverts lors des analyses ou des interactions. De la même manière que la commande ci-dessus, les entrées ici sont hautement personnalisables.

Informations d'identification

La credscommande permet de visualiser les informations d'identification collectées lors de vos interactions avec l'hôte cible. Nous pouvons également ajouter des informations d'identification manuellement, faire correspondre les informations d'identification existantes avec les spécifications du port, ajouter des descriptions, etc.

Sessions:

Sessions

MSFconsole peut gérer plusieurs modules en même temps. C'est l'une des nombreuses raisons pour lesquelles elle offre à l'utilisateur une telle flexibilité. Cela se fait grâce à l'utilisation de Sessions, qui crée des interfaces de contrôle dédiées pour tous vos modules déployés.

Une fois plusieurs sessions créées, nous pouvons basculer entre elles et lier un module différent à l'une des sessions en arrière-plan pour l'exécuter ou les transformer en tâches. Notez qu'une fois qu'une session est placée en arrière-plan, elle continuera à s'exécuter et notre connexion à l'hôte cible persistera. Les sessions peuvent cependant mourir si quelque chose se passe mal pendant l'exécution de la charge utile, ce qui entraîne la rupture du canal de communication.

Listing Active Sessions

Nous pouvons utiliser la sessionscommande pour afficher nos sessions actuellement actives.

Interacting with a Session

Vous pouvez utiliser la sessions -i [no.]commande pour ouvrir une session spécifique.

Mis à jour

Ce contenu vous a-t-il été utile ?