Premiers pas avec Metasploit
Introduction
Depuis sa première version en 2003, Metasploit n’a cessé d’évoluer, devenant le framework d’exploitation le plus complet et le plus utilisé grâce à la facilité d’utilisation des différentes options, interfaces ou encore utilitaires.
La terminologie
Cette section introduit l’ensemble des termes nécessaires à la bonne compréhension de l’ouvrage.
Exploit
Un exploit est un bout de code permettant à un attaquant ou à un auditeur d’exploiter une faille de sécurité au sein d’un système informatique cible. Un exploit peut être utilisé contre une machine distante (remote exploit) ou bien sur la machine sur laquelle se situe l’attaquant (local exploit).
Les conséquences relatives à cette exploitation varieront en fonction de la vulnérabilité pouvant aller de la compromission du système au déni de service (DoS) en passant par l’élévation de privilèges.
Payload
Le payload correspond à la charge malveillante exécutée par l’exploit. Cela peut aller de la création d’une connexion entre la machine de l’attaque et la machine cible (bind shell/reverse shell) pour des connexions futures, à l’exécution d’une commande simple en passant par l’ajout d’un utilisateur sur le système cible.
Auxiliaire (auxiliary)
Une centaine d’auxiliaires sont présents au sein du framework Metasploit. Ils ont divers objectifs tels que permettre de réaliser des scans, des écoutes réseau ou même du fuzzing.
Encoder
Le jeu du chat...
Les invites de commandes
Pour la bonne compréhension de la suite de cet ouvrage, et quel que soit le système d’exploitation utilisé, il est important de bien faire la distinction entre l’ensemble des invites de commandes disponibles afin de savoir quelles commandes il est possible d’exécuter :
Unix
regis@kali:~$
root@kali:/usr/share#
L’invite de commandes précédente est celle d’un système standard sous Unix. Le premier élément (regis et root) est le nom d’utilisateur avec lequel l’utilisateur est connecté sur le système d’exploitation. L’arobase (@) est un simple séparateur entre ce nom d’utilisateur et le nom de la machine sur laquelle l’utilisateur est connecté (kali). Les deux-points (:) sont un nouveau séparateur entre les éléments précédents et le dossier dans lequel l’utilisateur se trouve (~ et /usr/share). Enfin, le dernier élément ($ et #) représente le niveau de droits de l’utilisateur connecté. En effet, le $ signifie que l’utilisateur est un compte disposant de droits limités, alors que le # signifie que l’utilisateur est en mode superutilisateur.
Metasploit
msf6 >
L’invite de commandes précédente est celle de Metasploit. À partir de celle-ci, il est possible d’utiliser...
Les interfaces
1. Le système de fichiers
Avant de commencer à présenter les diverses interfaces dont dispose le framework Metasploit, nous allons présenter les différents éléments présents au sein du système de fichiers. Cela permettra de comprendre comment fonctionnent les différents affichages au sein du framework et même de faire certains changements en cas de besoin.
Sur un système de type Kali, les données relatives au Framework Metasploit se trouvent à l’emplacement /usr/share/metasploit-framework :
root@kali:~# ls -l /usr/share/metasploit-framework
total 148
drwxr-xr-x 4 root root 4096 mars 28 18:31 app
drwxr-xr-x 3 root root 4096 mars 28 18:54 config
drwxr-xr-x 21 root root 4096 mars 28 18:31 data
drwxr-xr-x 3 root root 4096 mars 28 18:31 db
lrwxrwxrwx 1 root root 27 mars 28 18:32 documentation ->
../doc/metasploit-framework
-rwxr-xr-x 1 root root 1209 janv. 24 18:24 Gemfile
-rw-r--r-- 1 root root 9359 janv. 25 09:40 Gemfile.lock
drwxr-xr-x 14 root root 4096 mars 28 18:31 lib
-rw-r--r-- 1 root root 8652 janv. 25 09:40
metasploit-framework.gemspec
drwxr-xr-x 9 root root 4096 mars 28 18:31 modules
-rwxr-xr-x 1 root root 1263 janv. 25 09:40 msfconsole
-rwxr-xr-x 1 root root 2813 janv. 25 09:40 msfd
-rwxr-xr-x 1 root root 5326 janv. 25 09:40 msfdb
-rw-r--r-- 1 root root 635 janv. 25 09:40 msf-json-rpc.ru
-rwxr-xr-x 1 root root 2229 janv. 25 09:40 msfrpc
-rwxr-xr-x 1 root root 9677 janv. 25 09:40 msfrpcd
-rwxr-xr-x 1 root root 166 janv. 25 09:40 msfupdate
-rwxr-xr-x 1 root root 12921 janv. 25 09:40 msfvenom
-rw-r--r-- 1 root root 551 janv. 25 09:40 msf-ws.ru
drwxr-xr-x 2 root root 4096 mars 28 18:31 plugins
-rwxr-xr-x 1 root root 1299 janv. 24 18:24 Rakefile
-rwxr-xr-x 1 root root 604 janv. 25 09:40 ruby
-rwxr-xr-x 1 root root 140 janv. 25 09:40 script-exploit
-rwxr-xr-x 1 root root 141 janv. 25 09:40 script-password
-rwxr-xr-x 1...
Rappel sur les commandes utiles
Le but de cette section n’est pas de faire une revue complète de l’ensemble des commandes de base de Metasploit. En effet, il en existe un peu plus d’une soixantaine et certaines seront abordées dans la suite de cet ouvrage. La commande help est un bon début pour en savoir plus sur les commandes disponibles :
msf6 > help
Core Commands
=============
Command Description
------- -----------
? Help menu
banner Display an awesome metasploit banner
cd Change the current working directory
color Toggle color
connect Communicate with a host
[...]
Database Backend Commands
=========================
Command Description
------- -----------
db_connect Connect to an existing database
db_disconnect Disconnect from the current database instance
db_export Export a file containing the contents of the db
db_import Import a scan result file
[...]
Pour l’ensemble des résultats renvoyés, il est possible d’avoir des informations complémentaires :
msf6 > help db_connect
[*] Usage: db_connect <user:pass>@<host:port>/<database>
[*] OR: db_connect -y [path/to/database.yml]
[*] Examples:
[*] db_connect user@metasploit3
[*] db_connect user:pass@192.168.0.2/metasploit3
[*] db_connect user:pass@192.168.0.2:1500/metasploit3...