Le framework Metasploit s’inscrit dans le projet Metasploit.
Metasploit est un projet OpenSource orienté sur la sécurité informatique.
Metasploit Framework est un outil permettant le développement et l’utilisation d’exploits contre une machine cible.
Les exploits sont des « programmes » exploitant des failles, dans le but de réaliser une action malveillante sur une cible (prise de contrôle, copie de fichiers, déni de service, etc…).
Dans le projet Metasploit nous retrouvons aussi la base de données de Shellcodes. Cette base de données contient les payloads qui seront utilisées par le framework Metasploit.
La payload correspond au code malicieux qui sera exécuté par l’exploit.
Le projet Metasploit contient aussi la base de données d’opcodes, qui est très utile à la création de nouveaux exploits.
Le framework Metasploit peut donc être utilisé pour une attaque active ou passive.
Une attaque active consiste à utiliser un exploit sur la victime, de manière à y exécuter la payload.
Pour une attaque passive c’est l’utilisateur de la machine cible quoi doit réaliser une action (exécuter un fichier malveillant, se rendre sur une page web malveillante, etc…).
Pour mener à bien les manipulations qui vont suivre, il est nécessaire d’avoir mis en place les services Nessus et OpenVAS.
Il est aussi important de disposer d’une machine de test comportant des failles.
Je vous recommande la lecture des articles associés :
1) Initialisation et préparation du Workspace avec Nessus
Entrons donc dans le vif du sujet, et utilisons le framework Metasploit.
Premièrement, il faut lancer deux services.
root@kali:~# service postgresql start [ ok ] Starting PostgreSQL 9.1 database server: main. root@kali:~# service metasploit start [ ok ] Starting Metasploit rpc server: prosvc. [ ok ] Starting Metasploit web server: thin. [ ok ] Starting Metasploit worker: worker.
Vous pouvez à present entrer dans la console de Metasploit.
root@kali:~# msfconsole msf >
Commençons donc par lister les Workspaces disponibles.
msf > workspace
* default
Notre première tâche va être de « remplir » le Workspace.
Ce Workspace va contenir une liste d’hôtes, de services, de vulnérabilités, etc…
A partir des informations contenues dans le Workspace, nous pourrons alors mener des actions.
Commençons donc par créer un nouveau Workspace.
msf > workspace -a metasploitable-nessus
[*] Added workspace: metasploitable-nessus
Puis entrons dans ce contexte.
msf > workspace metasploitable-nessus [*] Workspace: metasploitable-nessus msf > workspace default * metasploitable-nessus
La meilleure solution pour remplir le contexte est d’importer un rapport depuis un outil de recherche de vulnérabilité.
Nous commencerons avec Nessus.
Il nous faut donc exporter un rapport depuis Nessus.
De retour dans la console de Metasploit, lancer l’import.
msf > db_import /root/nessus_report_Scan_Metasploitable.nessus
A présent, nous pouvons lister les hôtes disponibles dans le Workspace.
msf > hosts Hosts ===== address mac name os_name os_flavor os_sp purpose info comments ------- --- ---- ------- --------- ----- ------- ---- -------- 192.168.1.219 00:15:5D:01:10:34 192.168.1.219 Linux Kernel 2.6 on Ubuntu 8.04 (hardy) device
Ici il n’y a qu’un seul hôte, car le scan ne portait que sur une seule cible.
Nous pouvons aussi lister les services de chaque hôte.
msf > services
Services
========
host port proto name state info
---- ---- ----- ---- ----- ----
192.168.1.219 21 tcp ftp open
192.168.1.219 22 tcp ssh open
…
Il vous est aussi possible de lister les vulnérabilités.
msf > vulns
A présent, le Workspace est prêt à être utilisé.
Sachez qu’il est aussi possible d’utiliser Nessus directement depuis la console Msf.
Cette technique est plus fastidieuse que l’importation depuis l’interface Web.
Néanmoins, si pour une raison ou une autre vous souhaitez l’utiliser, voyons comment faire.
Commençons par créer un nouveau contexte.
msf > workspace -a metasploitable-nessus-cli [*] Added workspace: metasploitable-nessus-cli msf > workspace metasploitable-nessus-cli [*] Workspace: metasploitable-nessus-cli
Il faut ensuite charger Nessus.
msf > load nessus
[*] Nessus Bridge for Metasploit 1.1
[+] Type nessus_help for a command listing
[*] Successfully loaded plugin: nessus
Vous pouvez à présent vous connecter.
msf > nessus_connect john:password@localhost:8834 ok
[*] Connecting to https://localhost:8834/ as john
[*] Authenticated
Listons à présent les policy disponibles :
msf > nessus_policy_list
[+] Nessus Policy List
[+]
ID Name Comments
-- ---- --------
-1 NetworkScan1
-2 WebScan1
1 HostDisc1
Créons un nouveau scan.
msf > nessus_scan_new
[*] Usage:
[*] nessus_scan_new <policy id> <scan name> <targets>
[*] use nessus_policy_list to list all available policies
msf > nessus_scan_new -1 "metasploitable-cli-scan" 192.168.1.219
[*] Creating scan from policy number -1, called "metasploitable-cli-scan" and scanning 192.168.1.219
[*] Scan started. uid is c5fe08c4-7578-5bb4-e524-02e434b3aa66495367ea3085c7e7
Vous pouvez ensuite consulter le statut du scan.
msf > nessus_scan_status
[+] Running Scans
[+]
Scan ID Name Owner Started Status Current Hosts Total Hosts
------- ---- ----- ------- ------ ------------- -----------
c5fe08c4-7578-5bb4-e524-02... metasploitable-cli-scan john 15:40 Apr 03 2014 running 0 1
Une fois le scan terminé, la commande devrait retourner ceci :
msf > nessus_scan_status
[*] No Scans Running.
Vous pouvez à présent lister les rapports.
msf > nessus_report_list
[+] Nessus Report List
[+]
ID Name Status Date
-- ---- ------ ----
c5fe08c4-7578-5bb4-e524-02... metasploitable-cli-scan completed 15:43 Apr 03 2014
Il faut à présent charger le rapport.
msf > nessus_report_get c5fe08c4-7578-5bb4-e524-02e434b3aa66495367ea3085c7e7
[*] importing c5fe08c4-7578-5bb4-e524-02e434b3aa66495367ea3085c7e7
[*] 192.168.1.219
[+] Done
Comme précédemment, le Workspace est prêt.
Vous conviendrez que cette méthode est bien plus fastidieuse que la précédente.
2) Préparation du Workspace avec OpenVAS
Voyons à présent comment préparer le Workspace avec OpenVAS.
Nous ne nous attarderons pas sur les détails. La procédure est très semblable à la précédente.
Premièrement, créons un Workspace.
msf > workspace -a metasploitable-openvas
[*] Added workspace: metasploitable-openvas
msf > workspace metasploitable-openvas
[*] Workspace: metasploitable-openvas
Il faut ensuite importer un rapport depuis l’interface Web d’OpenVAS.
msf > db_import /root/openvas_report_Scan_Metasploitable.nbe
Le rapport est à présent chargé.
Vous pouvez maintenant consulter les informations contenues dans le contexte.
msf > hosts
Hosts
=====
address mac name os_name os_flavor os_sp purpose info comments
------- --- ---- ------- --------- ----- ------- ---- --------
192.168.1.219 Unknown device
msf > services
Services
========
host port proto name state info
---- ---- ----- ---- ----- ----
192.168.1.219 21 tcp ftp open
192.168.1.219 22 tcp ssh open
msf > vulns
…
De la même manière que pour Nessus, il est possible d’utiliser OpenVAS directement dans la console Msf.
Voyons rapidement comment faire.
Tout d’abord, créons un contexte spécifique.
msf > workspace -a metasploitable-openvas-cli
[*] Added workspace: metasploitable-openvas-cli
msf > workspace metasploitable-openvas-cli
[*] Workspace: metasploitable-openvas-cli
Il faut ensuite charger OpenVAS.
msf > load openvas
[*] Successfully loaded plugin: OpenVAS
msf > openvas_connect admin password localhost 9390 ok
[*] Connecting to OpenVAS instance at localhost:9390 with username admin...
[+] OpenVAS connection successful
Nous pouvons à présent créer la cible.
msf > openvas_target_create "metasploitable_msf-cli" 192.168.1.219 "scan msf"
[*] OK, resource created: 11ec915d-9a84-4d14-a58a-0437dd5843ec
[+] OpenVAS list of targets
ID Name Hosts Max Hosts In Use Comment
-- ---- ----- --------- ------ -------
0 Localhost localhost 1 0
2 metasploitable_msf-cli 192.168.1.219 1 0 scan msf
Il nous faut à présent choisir un type de scan.
msf > openvas_config_list
[+] OpenVAS list of configs
ID Name
-- ----
0 empty
1 Full and fast
2 Full and fast ultimate
3 Full and very deep
4 Full and very deep ultimate
msf > openvas_task_create "scan metasploitable" "scan depuis msf" 1 2
[*] OK, resource created: ce1fafc1-d789-49b6-b4e2-1a803a65fdd6
[+] OpenVAS list of tasks
ID Name Comment Status Progress
-- ---- ------- ------ --------
1 scan metasploitable scan depuis msf New -1
A la fin de la commande, le 1 correspond au type de scan (ici Full and Fast).
Le 2 correspond à la target sur laquelle lancer le scan.
Ensuite, nous pouvons lancer le scan.
msf > openvas_task_start 1
[*] OK, request submitted
Vous pouvez consulter l’avancement à tout moment.
msf > openvas_task_list
[+] OpenVAS list of tasks
ID Name Comment Status Progress
1 scan metasploitable scan depuis msf Running 30
Une fois le scan terminé, nous pouvons importer le rapport.
msf > openvas_report_import 1 8
[*] Importing report to database.
Dans la commande, le 1 correspond à l’ID de la tache dont il faut importer le rapport.
Le 8 correspond au format XML.
Vous pouvez obtenr la liste des format comme ceci :
msf > openvas_format_list
[+] OpenVAS list of report formats
ID Name Extension Summary
-- ---- --------- -------
0 ARF xml Asset Reporting Format v1.0.0.
1 CPE csv Common Product Enumeration CSV table.
2 HTML html Single page HTML report.
3 ITG csv German "IT-Grundschutz-Kataloge" report.
4 LaTeX tex LaTeX source file.
5 NBE nbe Legacy OpenVAS report.
6 PDF pdf Portable Document Format report.
7 TXT txt Plain text report.
8 XML xml Raw XML report.
Merci et bonne continuation