Es posible hacer uso de diferentes bases de datos en MetaSploit para almacenar la información relacionada con los módulos y exploits utilizados, de esta forma podremos tener guardadas sesiones anteriores, host, vulnerabilidades encontradas, etc. Para esto podemos hacer uso de varios comandos de metasploit con el fin de establecer conexiones y realizar consultas, a continuación se listan algunos de los comandos indispensables para realizar las actividades anteriormente mencionadas:
db_driver: Permite listar los drivers disponibles en el framework si no se establece ningún parámetro, si se indica un driver, intentará cargarlo y establecerlo.
db_connect: Permite establecer una conexión a una base de datos dependiendo del driver seleccionado por medio del comando db_driver, la sintaxis es: db_connect user:pass@IP_ADDRESS/DB_NAME de esta manera msf intentará realizar una conexión a la base de datos indicada.
db_hosts: Lista los host que han sido objetivo de ataques y en algunos casos han sido vulnerables en algun sentido. Con este comando sin ningún parámetro se listan todos los host almacenados, sin embargo para centrar nuestra atención en los datos que nos resultan de mayor interés podemos especificar las columnas que se presentaran en el reporte.
msf > db_hosts -c address,mac,svcsHosts
=====

address    mac                          svcs
——-   —                          —-
192.168.1.1 64:68:0C:45:71:88                   4
192.168.1.33 54:42:49:FA:C1:0D
0A:00:27:00:00:00
4C:0F:6E:E9:7F:16 11
192.168.1.34 00:0D:9D:82:CC:69                   17
192.168.1.35                             2
Con esto podemos ver las columnas address, state,svcs. Por otro lado también podemos filtrar los resultados con algún host que nos resulte interesante

msf > db_hosts -a 192.168.1.34 -c address,mac,svcs

Hosts
=====

address    mac        svcs
——-   —        —-
192.168.1.34 00:0D:9D:82:CC:69 17

db_destroy: Elimina la base de datos seleccionada, tiene la misma sintaxis descrita en comando db_connect
db_tracker: Se trata de un plugin que puede ser cargado una vez hemos realizado una conexión con el comando db_connect, nos permite tener habilitados comandos adicionales para ciertos escenarios de ataque así como una implementación de escaneo de puertos con nmap.

msf> load db_tracker
msf> help

Database Backend Commands

=========================

Command Description

——- ———–

db_add_cred Add a credential to a host:port

db_add_host Add one or more hosts to the database

db_add_note Add a note to a host

db_add_port Add a port to a host

db_autopwn Automatically exploit everything

db_connect Connect to an existing database

db_create Create a brand new database

db_creds List all credentials in the database

db_del_host Delete one or more hosts from the database

db_del_port Delete one port from the database

db_destroy Drop an existing database

db_disconnect Disconnect from the current database instance

db_driver Specify a database driver

db_exploited List all exploited hosts in the database

db_export Export a file containing the contents of the database

db_hosts List all hosts in the database

db_import Import a scan result file (filetype will be auto-detected)

db_import_amap_log Import a THC-Amap scan results file (-o )

db_import_amap_mlog Import a THC-Amap scan results file (-o -m)

db_import_ip360_xml Import an IP360 scan result file (XML)

db_import_ip_list Import a list of line seperated IPs

db_import_msfe_xml Import a Metasploit Express report (XML)

db_import_nessus_nbe Import a Nessus scan result file (NBE)

db_import_nessus_xml Import a Nessus scan result file (NESSUS)

db_import_nmap_xml Import a Nmap scan results file (-oX)

db_import_qualys_xml Import a Qualys scan results file (XML)

db_nmap Executes nmap and records the output automatically

db_notes List all notes in the database

db_services List all services in the database

db_status Show the current database status

db_sync Synchronize the database

db_vulns List all vulnerabilities in the database

db_workspace Switch between database workspaces

db_nmap: Nos permite ejecutar un comando nmap común, sin embargo los resultados pueden ser exportados posteriormente en un fichero con formato XML, de esta forma es fácil importar dicho fichero en Dradis Framework. También tiene la ventaja que los resultados son almacenados directamente en la base de datos a la que nos encontramos conectados

db_nmap -v -sV 192.168.1.0/24 -oA subnet_1

En este ejemplo, se crea un fichero llamado subnet_1 que posteriormente podrá ser importado a Dradis o nuestra base de datos de metasploit.

db_notes: Se trata de un comando que permite ver las notas que se han generado en los comandos de escaneo entre otros, retorna información muy útil en especial sobre los comandos nmap ejecutados

msf > db_notes
[*] Time: Tue Feb 15 21:42:35 UTC 2011 Note: host=192.168.1.34 type=host.imported data={:type=>»Nmap XML», :filename=>»/opt/dradis/dradis-2.6/subred.xml», :time=>Mon Feb 21 22:26:02 UTC 2011}
[*] Time: Fri Feb 25 22:08:12 UTC 2011 Note: host=192.168.1.33 type=host.os.nexpose_fingerprint data={:family=>»Linux», :version=>»10.10″, :product=>»Linux», :desc=>»Ubuntu Linux 10.10″, :vendor=>»Ubuntu», :arch=>»X86_64″}
[*] Time: Fri Feb 25 22:08:22 UTC 2011 Note: host=192.168.1.34 type=host.os.nexpose_fingerprint data={:family=>»Linux», :version=>»», :product=>»Linux», :desc=>»Debian Linux», :vendor=>»Debian», :arch=>»»}
[*] Time: Fri Feb 25 22:08:25 UTC 2011 Note: host=192.168.1.35 type=host.os.nexpose_fingerprint data={:family=>»embedded», :version=>»», :product=>»embedded», :desc=>»Fortinet embedded», :vendor=>»Fortinet», :arch=>»»}
[*] Time: Sun Feb 20 22:26:28 UTC 2011 Note: host=192.168.1.1 type=host.imported data={:type=>»NeXpose Simple XML», :filename=>»/home/adastra/Desktop/report.xml», :time=>Fri Feb 25 23:32:33 UTC 2011}
[*] Time: Sun Feb 20 22:26:29 UTC 2011 Note: host=192.168.1.33 type=host.imported data={:type=>»NeXpose Simple XML», :filename=>»/home/adastra/Desktop/report.xml», :time=>Fri Feb 25 23:32:52 UTC 2011}
[*] Time: Fri Feb 18 22:28:59 UTC 2011 Note: host=192.168.1.33 type=host.os.nessus_fingerprint data={:os=>»Linux Kernel 2.6.35-25-generic on Ubuntu 10.10″}
[*] Time: Sat Feb 26 23:37:12 UTC 2011 Note: host=192.168.1.34 type=host.os.nessus_fingerprint data={:os=>»Microsoft Windows XP Service Pack 2 or Microsoft Windows XP Service Pack 3″}

Del mismo modo que con db_host, es posible filtrar los resultados por un host determinado con la opción -a

db_vulns: Se listarán todas las vulnerabilidades almacenadas en base de datos
db_exploited: Se listan todas las máquinas que hemos conseguido comprometer o explotar.
db_add_cred: Se adicionan credenciales para realizar procesos de explotación de sistemas, con este comando especificamos el host y las credenciales asociadas a éste
db_creds: Lista los conjuntos de credenciales almacenadas en base de datos.
db_add_host: Permite almacenar un host a la base de datos ingresando manualmente como parámetro del comando.
db_services: Lista la información de servicios almacenados en la base de datos, junto con la información relacionada al host, puerto, nombre del servicio, versión, etc.
db_autopwn: Es una utilidad que permite ejecutar un conjunto de exploits sobre una máquina objetivo con el fin de obtener sesiones meterpreter, utilizando la información almacenada en la base de datos y de esta forma ya no se hace necesario ir uno a uno por cada uno de los exploits que pueden resultar exitosos, sino que se ejecutan todos de forma automática. Un ejemplo valido de uso puede ser:

db_autopwn -p -e -t  -I 192.168.1.34

Este comando ejecutará todos los exploits contra todos los objetivos especificados (-e)  enseñará todos los exploits que se están ejecutando (-t), dichos exploits solamente se ejecutaran sobre aquellos puertos que se encuentren abiertos (-p)  y finalmente toda la pila de ejecución se centrará en determinado(s) objetivo(s) (-I). Sin embargo en la practica utilizar esta utilidad es poco recomendable dado que es bastante «ruidosa» y fácilmente detectable en un sistema objetivo.