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...