Metasploit
Metasploit:
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

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 :
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
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.
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.
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ésService:
La
Servicebalise fait référence au service vulnérable qui s'exécute sur la machine cible. Pour certains modules, tels que ceuxauxiliaryde oupost, cette balise peut faire référence à une activité plus générale commegather, faisant référence à la collecte d'informations d'identification, par exemple.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:
Il existe trois types différents de modules de charge utile dans le framework Metasploit : Singles, Stagers et Stages.
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.
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.
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
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 utilisantmsfencodeafterward. 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:
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
Si, toutefois, nous avons déjà configuré la base de données et que nous ne sommes pas en mesure de modifier le mot de passe en nom d'utilisateur MSF, procédez avec ces commandes :
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.
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 ?