La base de datos de Metasploit
Introducción
Durante las pruebas de intrusión, es raro tener una sola máquina para auditar las acciones que se deben tomar suelen ser las mismas entre varios sistemas del perímetro. Para ahorrar tiempo en estas situaciones, Metasploit viene con una base de datos PostgreSQL, que permite automatizar un montón de acciones y ahorrar mucho tiempo.
Los comandos relacionados con la base de datos se pueden enumerar utilizando el comando 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
hosts List...
Inicialización de la base de datos
Durante la primera conexión en Kali, es necesario arrancar la base de datos PostgreSQL e inicializarla para evitar este tipo de mensaje de error:
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?
El comando db_status permite comprobar que se ha establecido la conexión entre el framework y la base de datos:
msf6 > db_status
[*] postgresql selected, no connection
Para arrancar e inicializar la base de datos, puede utilizar el comando 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
Los elementos de configuración...
Los espacios de trabajo
Los espacios de trabajo (workspaces) se utilizan para separar el conjunto de datos. Esto permite segmentar de manera lógica los datos que se van a probar. Por lo tanto, es posible crear un espacio de trabajo por subred que se va a auditar, en el caso de una auditoría por segmentación. Esto también hace posible que no sea necesario tener varias bases de datos en caso de que se realicen varias pruebas de intrusión en paralelo.
Con la creación de los diferentes espacios de trabajo, se hace mucho más fácil importar, manipular y exportar datos.
Los espacios de trabajo permiten segmentar y administrar hosts y los datos almacenados en la base de datos. Puede utilizar espacios de trabajo para crear una separación lógica para cada segmento que desee probar. Por ejemplo, se puede crear un espacio de trabajo para cada subred de una organización a fin de limitar los hosts a una red específica. Por lo tanto, departamentos como recursos humanos, informática y contabilidad, tendrían cada uno su propio espacio de trabajo.
De forma predeterminada, el conjunto de datos está dentro del mismo espacio de trabajo, que se puede listar mediante el comando workspace:
msf> workspace
* default
1. Crear un espacio de trabajo
El objetivo es compartimentar los datos. Para hacerlo, es necesario crear espacios de trabajo. Esto se hace simplemente mediante el comando...
Importación y exportación de datos
Compartimentar los datos dentro de los espacios de trabajo es un primer paso importante. Sin embargo, una vez creados estos espacios, también es necesario integrar los datos con los que se va a trabajar.
1. Importar datos
a. Importar datos existentes
El comando db_import permite importar archivos que provienen de muchas herramientas de terceros, como Acunetix, Nessus, Burp o incluso Nmap. Por lo tanto, los auditores pueden realizar escaneos usando las herramientas que mejor dominan e integrarlas dentro del Framework Metasploit para consolidar todos los resultados.
Los archivos que se pueden importar se pueden obtener utilizando el comando 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
[...]
Para poder utilizar toda la potencia de los escaneos realizados por Nmap, es necesario exportar los escaneos de Nmap en formato XML (-oX) antes de importarlos a 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
En caso de que se vayan a importar varios tipos de archivos, el comando db_import reconocerá el tipo de cada archivo automáticamente:
msf6 > db_import .*
b. Importar datos durante la fase de escaneo
También es posible agregar automáticamente los escaneos Nmap a la base de datos del Framework usando el comando db_nmap.
Este comando es un «wrapper» del comando Nmap, por lo que es posible usarlo exactamente de la misma manera.
msf6 > db_nmap -sV --open 192.168.171.128
[*] Nmap: Starting Nmap 7.60 ( https://nmap.org ) at 2019-01-11 21:30 CET
[*] Nmap: Nmap scan report for 192.168.171.128
[*] Nmap: Host is up (0.00086s latency)....
Los hosts y los servicios
Los datos ahora están integrados y categorizados en los diferentes espacios de trabajo. Por lo tanto, es posible utilizar toda la potencia de la base de datos del Framework, especialmente con los comandos hosts y services.
1. Los hosts
El comando hosts permite mostrar toda la información sobre las máquinas presentes en la base de datos como resultado de su importación.
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
La importación...