Blog ENI : Toute la veille numérique !
🐠 -25€ dès 75€ 
+ 7 jours d'accès à la Bibliothèque Numérique ENI. Cliquez ici
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Livres et vidéos
  2. Metasploit
  3. La base de données de Metasploit
Extrait - Metasploit Testez la sécurité de vos infrastructures (2e edition)
Extraits du livre
Metasploit Testez la sécurité de vos infrastructures (2e edition)
1 avis
Revenir à la page d'achat du livre

La base de données de Metasploit

Introduction

Au cours des tests d’intrusion, il est rare de n’avoir qu’une seule machine à auditer et les actions à entreprendre peuvent vite s’avérer identiques sur plusieurs systèmes du périmètre. Afin de gagner du temps dans ces situations, Metasploit vient avec une base de données PostgreSQL permettant d’automatiser tout un tas d’actions et de gagner beaucoup de temps.

Les commandes liées à la base de données peuvent être listées grâce à la commande help database :

msf6 > help database  
 
Command          Description  
-------          -----------  
db_connect       Connect to an existing database  
db_disconnect    Disconnect from the current database instance  
db_export        Export a file containing the content of the database 
db_import        Import a scan result file  
db_nmap          Executes nmap and records the output automatically 
db_rebuild_cache Rebuilds the database-stored module cache 
db_status        Show the current database status  ...

L’initialisation de la base

Sous Kali, lors de la première connexion, il est nécessaire de démarrer la base de données PostgreSQL et de l’initialiser pour ne pas obtenir ce genre de message d’erreur :

msf6 > msfconsole  
 
[-] Failed to connect to the database: could not connect to server: 
Connection refused  
    Is the server running on host "localhost" (::1) and accepting  
    TCP/IP connections on port 5432?  
could not connect to server: Connection refused  
    Is the server running on host "localhost" (127.0.0.1) and accepting 
    TCP/IP connections on port 5432? 

La commande db_status permet de s’assurer que la connexion est établie entre le framework et la base de données :

msf6 > db_status  
[*] postgresql selected, no connection 

Afin de démarrer et d’initialiser la base de données, il est possible d’utiliser la commande msfdb init :

root@kali:~# msfdb init  
[+] Starting database  
[+] Creating database user 'msf'  
[+] Creating databases 'msf'  
[+] Creating databases 'msf_test'  
[+] Creating configuration file '  
[+] Creating initial database schema  
 
 
msf6 > db_status  
[*] postgresql connected to msf 

Les éléments...

Les espaces de travail

Les espaces de travail (workspaces) permettent de séparer l’ensemble des données. Cela permet de segmenter de manière logique les données à tester. Il est ainsi possible de créer un espace de travail par sous-réseau à auditer dans le cas d’un audit de segmentation. Cela permet également de ne pas disposer de plusieurs bases de données dans le cas où plusieurs tests d’intrusion seraient menés parallèlement.

Lors de la création des différents espaces de travail, il devient alors beaucoup plus simple d’importer, de manipuler ainsi que d’exporter des données.

Les espaces de travail permettent de segmenter et de gérer les hôtes et les données stockées dans la base de données. On peut utiliser des espaces de travail pour créer une séparation logique pour chaque segment que l’on souhaite tester. Par exemple, on peut créer un espace de travail pour chaque sous-réseau d’une organisation afin de limiter les hôtes à un réseau spécifique. Ainsi, les départements tels que les ressources humaines, l’informatique et la comptabilité disposeraient chacun de leur propre espace de travail.

Par défaut, l’ensemble des données se trouve au sein du même espace de travail qu’il...

Import et export des données

La compartimentation des données au sein d’espaces de travail est une première étape importante. Néanmoins, une fois ces espaces créés, il est également nécessaire d’y intégrer des données sur lesquelles travailler.

1. Importer des données

a. Importer des données existantes

La commande db_import permet d’importer des fichiers en provenance de nombreux outils tiers tels qu’Acunetix, Nessus, Burp ou encore Nmap. Ainsi, les auditeurs peuvent réaliser les scans via les outils qu’ils maîtrisent et intégrer ces derniers au sein du framework Metasploit pour consolider l’ensemble des résultats.

Il est possible d’obtenir les fichiers importables grâce à la commande db_import -h :

msf6 > db_import -h  
Usage: db_import <filename> [file2...]  
 
Currently supported file types include:  
   Acunetix  
   Amap Log  
   Amap Log -m  
   Appscan  
   Burp Session XML  
   Burp Issue XML  
   [...] 

Afin de pouvoir utiliser toute la puissance des scans réalisés par Nmap, il est nécessaire d’exporter les scans Nmap au format XML (-oX) avant de pouvoir les importer au sein de Metasploit :

root@kali:~# nmap -oX scope.xml 192.168.0.0/24  
[...]  
 
msf6 > db_import internal_scope.xml  
[*] Importing 'Nmap XML' data  
[*] Import: Parsing with 'Nokogiri v1.8.4'  
[*] Importing host 192.168.0.1  
[*] Importing host 192.168.0.2  
[*] Importing host 192.168.0.34  
[*] Importing host 192.168.0.35  
[*] Successfully imported /root/Desktop/scope.xml 

Dans le cas où plusieurs types de fichiers sont à importer, la commande db_import reconnaîtra le type de chaque fichier automatiquement :

msf6 > db_import .* 

b. Importer des données lors de la phase de scan

Il est également possible d’ajouter automatiquement les scans Nmap au sein de la base de données du Framework grâce à l’utilisation de la commande db_nmap.

Cette commande est un « wrapper » de la commande Nmap. Il est donc possible de l’utiliser exactement de la même manière.

msf6 >...

Les hôtes et les services

Les données sont à présent intégrées et rangées au sein des différents espaces de travail. Il est alors possible de pouvoir utiliser la pleine puissance de la base de données du Framework, et ce particulièrement avec les commandes hosts et services.

1. Les hôtes

La commande hosts permet d’afficher l’ensemble des informations sur les machines présentes au sein de la base de données suite à leur importation.

msf6 > hosts -h  
Usage: hosts [ options ] [addr1 addr2 ...]  
 
OPTIONS:  
 -a,--ad           Add the hosts instead of searching  
 -d,--delete       Delete the hosts instead of searching  
 -c <col1,col2>    Only show the given columns (see list below)  
 -C <col1,col2>    Only show the given columns until the next restart 
 -h,--help         Show this help information  
 -u,--up           Only show hosts which are up  
 -o <file>         Send output to a file in csv format  
 -O <column>       Order rows by specified column number  
 -R,--rhosts       Set RHOSTS from the results of the search  
 -S,--search       Search string to filter by  
 -i,--info         Change the info of a host  
 -n,--name         Change the name of a host  
 -m,--comment      Change the comment of a host  
 -t,--tag          Add or specify a tag to a range of hosts  
 
Available columns: address, arch, comm, comments, created_at, 
cred_count, detected_arch, exploit_attempt_count, 
host_detail_count, info, mac, name, note_count, os_family, 
os_flavor, os_lang, os_name, os_sp, purpose, scope, 
service_count, state, updated_at, virtual_host, vuln_count, tags 

L’importation n’est...